最近偶尔在重温统计学,发现自己工作后用了各种高级的统计分析方法,各种统计模型,却忽视了统计学中一些最基础的知识,而这些知识是所有这些高级方法的基础,基础不扎实,高级方法用起来真觉得底气不足,今天看到哑变量在回归分析中的应用,总结如下:

哑变量(Dummy Variable),也叫虚拟变量,引入哑变量的目的是,将不能够定量处理的变量量化,如职业、性别对收入的影响,战争、自然灾害对GDP的影响,季节对某些产品(如冷饮)销售的影响等等。 这种“量化”通常是通过引入“哑变量”来完成的。根据这些因素的属性类型,构造只取“0”或“1”的人工变量,通常称为哑变量(dummy variables),记为D。

举一个例子,假设变量“职业”的取值分别为:工人、农民、学生、企业职员、其他,5种选项,我们可以增加4个哑变量来代替“职业”这个变量,分别为D1(1=工人/0=非工人)、D2(1=农民/0=非农民)、D3(1=学生/0=非学生)、D4(1=企业职员/0=非企业职员),最后一个选项“其他”的信息已经包含在这4个变量中了,所以不需要再增加一个D5(1=其他/0=非其他)了。这个过程就是引入哑变量的过程,其实在结合分析(conjoint analysis)中,就是利用哑变量来分析各个属性的效用值的。

在线性回归分析中引入哑变量的目的是,可以考察定性因素对因变量的影响,引入哑变量有两种方式:加法方式与乘法方式。

所谓加法方式是指,哑变量作为单独的自变量,有独立的系数,从几何意义上来讲,就是只改变回归直线的截距(constant),不改变斜率(B);

而乘法方式则正好相反,不改变截距,只改变斜率,因为哑变量在回归方程中不是作为一个独立的自变量,而是与其中某一个自变量相乘后作为一个自变量。

当然,也可以同时使用加法和乘法来引入哑变量,即同时改变截距和斜率。

由于哑变量的取值只有0和1,它起到的作用像是一个“开关”的作用,它可以屏蔽掉D=0的case,使之不进入分析,在spss软件中就是filter的作用。我试验了一下,确实如此。

利用spss软件自带的data:car.sav,分析汽车的功率与100米加速时间的关系,将变量“filter_$”作为哑变量,我们分别run两次线性回归分析,然后对比这2次的结果,来说明上面的想法。

第一次:将哑变量“filter_$”纳入到分析中,同时利用加法和乘法来引入,将“accel”作为因变量,“horse”、“filter_$”、“filter_$*horse”作为自变量,进行线性回归分析;

第二次,利用变量“filter_$”进行筛选case,即不分析filter_$=0的case,同样将“accel”作为因变量,而只将“horse”作为自变量;

两次的线性回归结果分别为:

第一次:accel=20.495-0.049*horse-0.007*"filter_$*horse"+0.738*filter_$

第二次:accel=21.234-0.056*horse

当filter_$=1时,第一次计算的公式正好等于第二次机算的公式。


 

虚拟变量(Dummy Variable),又称名义变量或哑变量,是量化了的质变量,通常取值为0或1。在研究一个因变量的时候,解释变量中除了定量变量,有时候会有一些定性变量,比如性别、年龄、宗教、民族、婚姻状况、教育程度等。这些定性变量也可以成为指标变量或分类变量。此时需要使用虚拟变量。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到俩个方程的作用,而且接近现实。如果某个因素有n种选择,则将其用哑变量引入模型时,要设置n-1个哑变量,以避免完全的多重共线性。如性别的选择有两种,则引入一个哑变量,是男则数值为1,否则为0,当然也可以设置为女为1,否则为0。季节的选择有4个,则引入3个哑变量,哑变量1:春为1,否则为0.哑变量2:夏为1,否则为0.哑变量3:秋为1,否则为0.

对于有序变量,如轻、中、重,则要酌情考虑。如果样本量足够大的话,也进行哑变量化,这样可以得到不同级别的差异。但是如果样本量不够大时,哑变量化造成变量数目上升,使回归结果变得不可靠,只能适得其反。

哑变量设置的原则
在模型中引入多个哑变量时,哑变量的个数应按下列原则确定:如果有n种互斥的属性类型,在模型中引入(n-1)个哑变量。例如,文化程度分小学、初中、高中、大学、研究生5类,引用4个哑变量

回归分析
spss中,logistics回归中,有专门的选项来处理需要哑变量化的变量,只需单击“Categorical..”进行设置即可。但是对于多元线性回归就没有那么幸运了。
computer或recode设置一组哑变量。由于哑变量是一个整体变量,所以进行变量筛选时必须共同进退。因此,将所有哑变量同一般变量一下直接进行筛选是不对的,会出现一部分变量进入一部分变量未进入的情形。解决的方法是:将同一因素下的哑变量进行归组,在纳入方法中选择了“ENTER”来确保这些哑变量同进同出,而其它连续型变量和二分类变量则归为另一组,纳入方法为STEPWISE。然后在没有纳入这组哑变量的情况下再做一次STEPWISE,再来比较是不是应该纳入这组哑变量。

sas中,哑变量的设置需要另外写程序,但是在回归程序中,则比较简单。eg.因变量y,自变量x1,x2,哑变量组x31 x32 x33,
proc reg;
  model y=x1 x2 {x31 x32 x33} /selection=stepwise;
run;
即,把哑变量组用{}括起来就可以了。