明明没有虚拟变量 没什么多元线性回归控制变量分析结果中有dummy variable

R语言 | 多元回归分析中的对照编码(contrast coding) | 第一节 dummy variable(哑变量) 和 dummy coding
对于一个自变量是分类变量Categorical Factor的回归模型,需要为该Factor的每个Level创建dummy variable。Contrast Matrix把每个Level映射为dummy variable的值。
我们看一个例子来感性认识下dummy variable和contrast matrix。
我们使用R的dataset包里的ChickWeight数据集。Diet的Level是1,2,3,4。
建立Weight关于Diet的线性模型,从模型的summary的返回结果来看:
Intercept是截距
Diet2是第一个dummy variable。当Diet等于2,那么Diet2赋值为1,否则为0。以此类推Diet3,Diet4是对应于Level是3或4的dummy variable。
对于Diet这一Categorical Variable(Factor),线性模型只能接受数值型变量,所以R会创建Diet2、Diet3、Diet4这几个dummy variable,并赋值数值,这样线性模型就能够计算系数。
那么,Diet2,Diet3,Diet4的赋值以及其通过建模后得到的系数是怎么来的呢?R语言通过Contrast Matrix来实现。
函数contrasts用来查看某个Factor的Contrast Matrix。一般情况下,对于有K个level的Factor,R会创建K-1个dummy variable,另外一个可以通过K-1个dummy variable推导出来。如下所示,Diet有4个Level(1,2,3,4),所以创建了Diet2,Diet3,Diet4三个变量。R根据这个对照矩阵进行dummy variable的赋值。当Diet=1时,(Diet2,Diet3,Diet4)=(0,0,0);Diet=2,则(Diet2,Diet3,Diet4)=(1,0,0);Diet=3,则(Diet2,Diet3,Diet4)=(0,1,0);当Diet=4,则(Diet2,Diet3,Diet4)=(0,0,1)
赋值方法如下data frame所示
那么这种对dummy variable赋值的编码方式(即对照矩阵)究竟是什么意思?
继续以上述线性模型为例。该模型为 y = aDiet2 + bDiet3+cDiet4+d,其中a,b,c是Diet2,Diet3,Diet4的系数,d是截距。
当Diet=1时,y=d
当Diet=2时,y=aDiet2 + d = a + d
当Diet=3时,y=bDiet3 + d = b + d
当Diet=4时,y=cDiet4+d = c + d
也就是说d就是Diet1,而a、b、c则是Diet2、Diet3、Diet4分别相对于Diet1的偏移。
上述这种对照矩阵称为treatment,在R语言中,treatment是针对
无序的名字型分类变量(nominal factor)的默认contrast。
Treatment又称为Dummy Coding,首先会选择一个Level作为参考组(通常是第一个Level作为reference group),然后用剩余的Level的应变量的均值分别与参考组的应变量的均值来进行比较。
那么这些系数的含义是什么?
针对于分类变量(Factor),反应变量(Response Variable,即应变量y)反映了在每个Level下的均值(mean)。
继续上例,我们计算在每个Level下weight的均值:
然后我们再看回归模型:weight =102.645 +&19.971Diet2 +&40.305 Diet3 +&32.617Diet4
当Diet = 1时,截距就是weight均值
当Diet = 2时,mean(weight|Diet=2) =&102.645 +&19.971 =&122.6167
...以此类推
也就是说系数a, b, c就是weight在各个水平下相对于截距的偏移,而这里截距就是参考组Diet1的weight的均值。
这个系数又称为效用(Utility),表面给定某Level,会对反应变量的提升(或减少)的幅度。比如,不考虑其他因素,当Diet=2,会对Weight有19.971的提升。
本文转载自 I think so I am , 原文链接: , 转载请保留本声明!
每一个你不满意的现在,都有一个你没有努力的曾经。
Copyright (C) &&
&&Powered by&后使用快捷导航没有帐号?
查看: 9789|回复: 2
R语言中生成虚拟变量/哑变量
金牌会员, 积分 2690, 距离下一级还需 310 积分
论坛徽章:54
本帖最后由 yoyo 于
22:34 编辑
在中对包括分类变量(factor)的数据建模时,一般会将其自动处理为虚拟变量或哑变量(dummy variable)。但有一些特殊的函数,如neuralnet包中的neuralnet函数就不会预处理。如果直接将原始数据扔进去,会出现”requires numeric/complex matrix/vector arguments”需要数值/复数矩阵/矢量参数错误。这个时候,除了将这些变量删除,我们只能手动将factor variable转换为取值(0,1)的虚拟变量。所用的函数一般有model.matrix(),nnet package中的class.ind()。下面以UCI的german credit data为例说明。首先,从UCI网站上下载到german.data数据集,并用str函数对其有个简单的认识。download.file(&http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/german.data&,
& & &./german.data&)
data &- read.table(&./german.data&)
str(data)复制代码
该数据有21个变量,其中V21为目标变量,V1-V20中包括integer和factor两种类型。下面将用V1分类变量(包含4个level)和V2,V5,V8三个数值型变量作为解释变量建模。## '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&&96 55 59 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 ...
复制代码
首先加载neuralnet包尝试一下,只用数值型变量建模,没有报错。library(&neuralnet&)
NNModelAllNum &- neuralnet(V21 ~ V2 + V5 + V8, data)
NNModelAllNum
复制代码## Call: neuralnet(formula = V21 ~ V2 + V5 + V8, data = data)
##
## 1 repetition was calculated.
##
##& && && &Error Reached Threshold Steps
## 1 104.9993578& & 0.& & 55
复制代码
当我们把V1放入解释变量中出现了如下错误:NNModel &- neuralnet(V21 ~ V1 + V2 + V5 + V8, data)
复制代码## Error: 需要数值/复数矩阵/矢量参数复制代码
此时可以用model.matrix函数将V1转化为三个虚拟变量,V1A12,V1A13,V1A14。dummyV1 &- model.matrix(~V1, data)
head(cbind(dummyV1, data$V1))
复制代码##& &(Intercept) V1A12 V1A13 V1A14&&
## 1& && && &&&1& &&&0& &&&0& &&&0 1
## 2& && && &&&1& &&&1& &&&0& &&&0 2
## 3& && && &&&1& &&&0& &&&0& &&&1 4
## 4& && && &&&1& &&&0& &&&0& &&&0 1
## 5& && && &&&1& &&&0& &&&0& &&&0 1
## 6& && && &&&1& &&&0& &&&0& &&&1 4
复制代码
因为model.matrix函数对数值型和分类Level=2的类别型变量没有影响,所以可以将四个变量一起用该函数生成新的数据集modelData,就可以用该数据集建模了。modelData &- model.matrix(~V1 + V2 + V5 + V8 + V21, data)
head(modelData)
复制代码##& &(Intercept) V1A12 V1A13 V1A14 V2& &V5 V8 V21
## 1& && && &&&1& &&&0& &&&0& &&&0&&6 1169&&4& &1
## 2& && && &&&1& &&&1& &&&0& &&&0 48 5951&&2& &2
## 3& && && &&&1& &&&0& &&&0& &&&1 12 2096&&2& &1
## 4& && && &&&1& &&&0& &&&0& &&&0 42 7882&&2& &1
## 5& && && &&&1& &&&0& &&&0& &&&0 24 4870&&3& &2
## 6& && && &&&1& &&&0& &&&0& &&&1 36 9055&&2& &1
复制代码NNModel &- neuralnet(V21 ~ V1A12 + V1A13 + V1A14 + V2 + V5 + V8, modelData)
复制代码
另外一种方法来自nnet package的class.ind函数。
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复制代码
高级会员, 积分 938, 距离下一级还需 62 积分
论坛徽章:3
扫一扫加入本版微信群您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
2多元线性回归解析.ppt 72页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:300 &&
你可能关注的文档:
··········
··········
*********************************August2,2010在回归中引进虚拟变量 (例题分析)【例】为研究考试成绩与性别之间的关系,从某大学商学院随机抽取男女学生各8名,得到他们的市场营销学课程的考试成绩如右表9.5.2含有一个虚拟自变量的回归9.5虚拟自变量的回归August2,2010在回归中引进虚拟变量 (例题分析)【例】建立考试分数与性别之间的线性回归方程,并解释回归系数的含义用Excel进行回归August2,2010虚拟自变量的回归 (例题分析)引进虚拟变量时,回归方程表示为E(y)=?0+?1x男(x=0):E(y)=?0—男学生考试成绩的期望值女(x=1):E(y)=?0+?1—女学生考试成绩的期望值注意:当指定虚拟变量0,1时?0总是代表与虚拟变量值0所对应的那个分类变量水平的平均值?1总是代表与虚拟变量值1所对应的那个分类变量水平的平均响应与虚拟变量值0所对应的那个分类变量水平的平均值的差值,即平均值的差值=(?0+?1)-?0=?1August2,2010虚拟自变量的回归 (例题分析)考试成绩与性别的回归男学生考试分数的平均值女学生与男学生平均考试分数的差值August2,2010虚拟自变量的回归 (考试成绩与性别的散点图)男女August2,2010虚拟自变量的回归 (例题分析)【例】为研究工资水平与工作年限和性别之间的关系,在某行业中随机抽取10名职工,所得数据如右表用Excel进行回归August2,2010虚拟自变量的回归 (例题分析)引进虚拟变量时,回归方程写为E(y)=?0+?1x1+?2x2女(x2=0):E(y|女性)=?0+?1x1男(x2=1):E(y|男性)=(?0+?2)+?1x1?0的含义表示:女性职工的期望月工资收入(?0+?2)的含义表示:男性职工的期望月工资收入?1含义表示:工作年限每增加1年,男性或女性工资的平均增加值?2含义表示:男性职工的期望月工资收入与女性职工的期望月工资收入之间的差值(?0+?2)-?0=?2结束***********************August2,2010变量选择过程在建立回归模型时,对自变量进行筛选选择自变量的原则是对统计量进行显著性检验将一个或一个以上的自变量引入到回归模型中时,是否使得残差平方和(SSE)有显著地减少。确定引入自变量是否使SSE有显著减少的方法,就是使用F统计量的值作为一个标准,以此来确定是在模型中增加一个自变量,还是从模型中剔除一个自变量变量选择的方法主要有:向前选择、向后剔除、逐步回归、最优子集等August2,2010向前选择 (forwardselection)从模型中没有自变量开始对k个自变量分别拟合对因变量的一元线性回归模型,共有k个,然后找出F统计量的值最高的模型及其自变量(P值最小的),并将其首先引入模型分别拟合引入模型外的k-1个自变量的线性回归模型如此反复进行,直至模型外的自变量均无统计显著性为止August2,2010向后剔除 (backwardelimination)先对因变量拟合包括所有k个自变量的回归模型。然后考察p(p&k)个去掉一个自变量的模型(这些模型中在每一个都有的k-1个自变量),使模型的SSE值减小最少的自变量被挑选出来并从模型中剔除考察p-1个再去掉一个自变量的模型(这些模型中每一个都有k-2个的自变量),使模型的SSE值减小最少的自变量被挑选出来并从模型中剔除如此反复进行,一直将自变量从模型中剔除,直至剔除一个自变量不会使SSE显著减小为止August2,2010逐步回归 (stepwiseregression)将向前选择和向后剔除两种方法结合起来筛选自变量在增加了一个自变量后,它会对模型中所有的变量进行考察,看看有没有可能剔除某个自变量。如果在增加了一个自变量后,前面增加的某个自变量对模型的贡献变得不显著,这个变量就会被剔除按照方法不停地增加变量并考虑剔除以前增加的变量的可能性,直至增加变量已经不能导致SSE显著减少在前面步骤中增加的自变量在后面的步骤中有可能被剔除,而在前面步骤中剔除的自变量在后面的步骤中也可能重新进入到模型中August2,2010参数的最小二乘法 (逐步回归)【例】根据例9.1的数据,用逐步回归方法建立不良贷款y与贷款余额x1、累计应收贷款x2、贷款项目个数x3和固定资产投资额x4的线性回归方程,并求出不良贷款的置信区间和预测区间August2,2010August2,2010August2,2010散点图August2,2010August2,2010August2,2010August2,2010相关分析August2,2010August2,2010多元线性回归August2,2010统计量选项August2
正在加载中,请稍后...(window.slotbydup=window.slotbydup || []).push({
id: '2014386',
container: s,
size: '234,60',
display: 'inlay-fix'
(14人评价)
&&|&&7次下载&&|&&总8页&&|
您的计算机尚未安装Flash,点击安装&
阅读已结束,如需下载到电脑,请使用积分()
下载:5积分
0人评价46页
2人评价32页
3人评价65页
1人评价59页
1人评价26页
所需积分:(友情提示:大部分文档均可免费预览!下载之前请务必先预览阅读,以免误下载造成积分浪费!)
(多个标签用逗号分隔)
文不对题,内容与标题介绍不符
广告内容或内容过于简单
文档乱码或无法正常显示
文档内容侵权
已存在相同文档
不属于经济管理类文档
源文档损坏或加密
若此文档涉嫌侵害了您的权利,请参照说明。
我要评价:
下载:5积分

我要回帖

更多关于 spss 线性回归 哑变量 的文章

 

随机推荐