虚拟变量学习

虚拟变量 ( Dummy Variables) 又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到俩个方程的作用,而且接近现实。

模型中引入虚拟变量的作用

1、分离异常因素的影响,例如分析我国GDP的时间序列,必须考虑“文革”因素对国民经济的破坏性影响,剔除不可比的“文革”因素。

2、检验不同属性类型对因变量的作用,例如工资模型中的文化程度、季节对销售额的影响。

3、提高模型的精度,相当于将不同属性的样本合并,扩大了样本容量(增加了误差自由度,从而降低了误差方差)

在模型中引入多个虚拟变量时,虚拟变量的个数应按下列原则确定:

(1)如果回归模型有截距项

有m种互斥的属性类型,在模型中引入(m-1)个虚拟变量。

(2)如果回归模型无截距项,有m个特征,设置m个虚拟变量

在R语言中对包括分类变量(factor)的数据建模时,一般会将其自动处理为虚拟变量或哑变量(dummy variable)。但有一些特殊的函数,如neuralnet包中的neuralnet函数就不会预处理。如果直接将原始数据扔进去,会出 现”requires numeric/complex matrix/vector arguments”需要数值/复数矩阵/矢量参数错误。

download.file("http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/german.data",

"./german.data")

data <- read.table("./german.data")

str(data)

‘data.frame‘:	1000 obs. of  21 variables:
 $ V1 : Factor w/ 4 levels "A11","A12","A13",..: 1 2 4 1 1 4 4 2 4 2 ...
 $ V2 : int  6 48 12 42 24 36 24 36 12 30 ...
 $ V3 : Factor w/ 5 levels "A30","A31","A32",..: 5 3 5 3 4 3 3 3 3 5 ...
 $ V4 : Factor w/ 10 levels "A40","A41","A410",..: 5 5 8 4 1 8 4 2 5 1 ...
 $ V5 : int  1169 5951 2096 7882 4870 9055 2835 6948 3059 5234 ...
 $ V6 : Factor w/ 5 levels "A61","A62","A63",..: 5 1 1 1 1 5 3 1 4 1 ...
 $ V7 : Factor w/ 5 levels "A71","A72","A73",..: 5 3 4 4 3 3 5 3 4 1 ...
 $ V8 : int  4 2 2 2 3 2 3 2 2 4 ...
 $ V9 : Factor w/ 4 levels "A91","A92","A93",..: 3 2 3 3 3 3 3 3 1 4 ...
 $ V10: Factor w/ 3 levels "A101","A102",..: 1 1 1 3 1 1 1 1 1 1 ...
 $ V11: int  4 2 3 4 4 4 4 2 4 2 ...
 $ V12: Factor w/ 4 levels "A121","A122",..: 1 1 1 2 4 4 2 3 1 3 ...
 $ V13: int  67 22 49 45 53 35 53 35 61 28 ...
 $ V14: Factor w/ 3 levels "A141","A142",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ V15: Factor w/ 3 levels "A151","A152",..: 2 2 2 3 3 3 2 1 2 2 ...
 $ V16: int  2 1 1 1 2 1 1 1 1 2 ...
 $ V17: Factor w/ 4 levels "A171","A172",..: 3 3 2 3 3 2 3 4 2 4 ...
 $ V18: int  1 1 2 2 2 2 1 1 1 1 ...
 $ V19: Factor w/ 2 levels "A191","A192": 2 1 1 1 1 2 1 2 1 1 ...
 $ V20: Factor w/ 2 levels "A201","A202": 1 1 1 1 1 1 1 1 1 1 ...
 $ V21: int  1 2 1 1 2 1 1 1 1 2 ...

变量V1是factor类型,有四个值A11,A12,A13,A14在R语言中可以用两种方法将哑变量转成数值

方法一:用neuralnet 包

install.packages("neuralnet")

library(neuralnet)

NNModelAllNum <- neuralnet(V21 ~ V2 + V5 + V8, data)

NNModelAllNum

可以用model.matrix函数将V1转化为三个虚拟变量,V1A12,V1A13,V1A14。

modelData <- model.matrix(~V1 + V2 + V5 + V8 + V21, data)

head(modelData)

方法二:

来自nnet package的class.ind函数。

install.packages("nnet")

library(nnet)

dummyV12 <- class.ind(data$V1)

head(dummyV12)

可以看到,该结果和model.matrix稍有区别,生成了四个虚拟变量。要注意,为了避免多重共线性,对于level=n的分类变量只需选取其任意n-1个虚拟变量。

     A11 A12 A13 A14
[1,]   1   0   0   0
[2,]   0   1   0   0
[3,]   0   0   0   1
[4,]   1   0   0   0
[5,]   1   0   0   0
[6,]   0   0   0   1

虚拟变量学习

时间: 2024-10-14 05:04:19

虚拟变量学习的相关文章

R语言:利用caret包中的dummyVars函数进行虚拟变量处理

dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterization----建立一套完整的虚拟变量 先举一个简单的例子: survey<-data.frame(service=c("very unhappy","unhappy","neutral","happy","very

逻辑回归中的虚拟变量设置

系列文章收集在比特币与互联网金融风控专栏中 虚拟变量定义 ??在实际建模过程中,被解释变量不但受定量变量影响,同时还受定性变量影响.例如需要考虑性别.民族.不同历史时期.季节差异.企业所有制性质不同等因素的影响.这些因素也应该包括在模型中. ??由于定性变量通常表示的是某种特征的有和无,所以量化方法可采用取值为1或0.这种变量称作虚拟变量,用D表示.虚拟变量应用于模型中,对其回归系数的估计与检验方法与定量变量相同. 虚拟变量对模型的意义 ??通常,我们假设的因变量与自变量之间的关系既是线性的,又

【机器学习实战】回归常用技巧之虚拟变量

虚拟变量 ( Dummy Variables) 又称虚设变量.名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1.引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到俩个方程的作用,而且接近现实. 1.加法模型 比如现在需要根据身高和性别来回归人的体重,这里定义: 体重:weight 身高:height 性别:sex 由常识可知,体重.身高为连续型的数据值,而性别的取值只能是男或者女:这样如果进行回归时,性别属性将不能满足我们的回归特性.所以

机器学习特征表达——日期与时间特征做离散处理(数字到分类的映射),稀疏类分组(相似特征归档),创建虚拟变量(提取新特征) 本质就是要么多变少,或少变多

特征表达 接下来要谈到的特征工程类型虽然简单却影响巨大.我们将其称为特征表达. 你的数据并不一定总是理想格式.你需要考虑是否有必要通过另一种形式进行特征表达以获取有用信息. 日期与时间特征: 我们假设你拥有purchase_datetime特征.从中提取purchase_day_of_week与purchase_hour_of_day两项特征可能会更有用.你还可以进行观察聚类以创建诸如purchases_over_last_30_days这类特征. 数字到分类的映射: 假设你拥有years_in

虚拟变量

这里要理解虚拟变量的真正含义:是要体现出不同省份之间的差异,而并不是所谓的控制变量.而其要充分理解多元线性回归当中参数估计量的真正含义:是偏回归系数,即自变量的边际量,表明了在其他条件不变的情况下,自变量每增加一个单位因变量的变化.如果按照你的理解假设X为地区变量,X的取值为1代表山西:2代表陕西:3代表江苏:4代表江西,那么回归完了以后如何来解释X前面的参数:X前面的参数表示X每增加一个单位因变量增加多少,而此时按照X的取值,陕西和山西之间相差一个单位,陕西和江苏之间也是差一个单位.江苏和江西

虚拟变量陷阱(Dummy Variable Trap)

虚拟变量陷阱(Dummy Variable Trap):指当原特征有m个类别时,如果将其转换成m个虚拟变量,就会导致变量间出现完全共线性的情况. 假设我们有一个特征“性别”,包含男性和女性两个类别,如果将此特征转换为2个虚拟变量,就是:男x1=[1,0],女x2=[0,1],意思就是:变量x1,当性别为男时,x1=1,否则x1=0:变量x2,当性别为女时,x2=1,否则x2=0.这样,目标y=w1x1+w2x2+b.因为x1+x2=1,因此,变量x1和变量x2之间存在线性关系,同时使用这两个变量

01-js的声明和变量学习

js的声明和引入: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js的声明呵和引入</title> <!--声明js代码域--> <!--引入外部声明好的js文件--> <script src="js/my.js" type="text/javascript" chars

快速了解SignalR—在MVA微软虚拟学院学习SignalR

©版权声明:本文为博主原创文章,如需转载请注明出处. SignalR把实时Web功能变得异常简单. 如果您希望在几个小时内对SignalR有一个直观的了解,观看微软虚拟学院(MVA)的视频教学Lighting Up Real-Time Web Communications with SignalR或许是个不错的选择. 这是一个大概四个小时的视频教学,分为五个部分.除了视频,还配有PPT和小测验.视频是英文的,配有英文字幕.通过这几个小时的学习,您将对SignalR的功能以及如何使用有一个初步的了

常见linux命令释义(第五天)——shell变量学习

由于时间有限,我写这篇博客的时间上限为30分钟.仅作为学习笔记而用,内容会尽量的讲清楚.如果讲的不清楚,你来打我啊! 玩笑开过,正式开始今天的学习. linux系统的中一些命令是在/bin下,这个是一般用户能够用的.还有一些是超级用户才能用的,这个命令放在/sbin下. 但还有一部分的命令就直接内置在bash内,随系统的启动直接读进内存的.这样能够最大的减少文件的索引时间,提高系统的效率. 可以通过 type 的命令来查看.type的意思是类型.可以形象的理解为照妖镜,看看你的本质来源到底是什么