【统计】一文带你搞懂哑变量
而在处理分类变量时,我们一定会看到这样的表述:无序多分类要进入模型前,一定要进行哑变量处理。那么问题来了:什么是哑变量?
哑变量也叫虚拟变量(Dummy variable),它实质上是将一个多分类变量转换为多个二分类变量,生成二分类变量的就是哑变量。就这么简单么?
在进一步解释哑变量意义之前,我们先了解下【参照】的意思。不知道大家注意到没有,分类变量在解释时,实质上是需要有参照类别的。如,谈论性别对疾病的影响时,当我们说男性的影响大,其实暗含了以女性作为参照,男性和女性相比较而言,男性对疾病影响大的意思,如果在没有参照标准的前提下,你是怎么定义何为影响大的,多少算大,多少算小,这就说不清了。
了解了参照,我们接着来讲哑变量的含义。
举个例子,如血型(A、B、O、AB),它是个无序多分类变量,我们是以数值1、2、3、4对应赋值血型,回归分析时,如果直接以1/2/3/4数值引入模型,那么得到的回归系数的意义就是:血型每增加1个单位,因变量的平均改变量。
我们想一想,从血型A到B和从血型B到0,因变量的平均改变量难道真的就是一样的么(即计算求得得回归系数)?很显然,只是一种可能。更多的可能是:血型的变化带来的因变量的平均改变量是不一致的,换句话说,血型与因变量之间可能是非线性关系,在这种情况下,如果类别之间的变化幅度不一致,你将类别数值作为连续变量引入模型,是无法找到类别变量与因变量之间的真实非线性关系的。
此时,就需要将血型这个无序多分类变量进行哑变量处理,而这就是哑变量存在的意义,也是为什么无序多分类变量一定要进行哑变量处理的原因。如果多分类变量与因变量已经是线性关系,那也就没有必要再使用哑变量了,使用线性模型可以较好地反映自变量与因变量之间的关系。
从这个角度,也提醒我们,在将等级变量引入回归模型之中,需要将其首先因子化处理,否则虽然也能得到回归分析结果,但该结果很可能是有偏差的。
若多分类变量有 k 类,就可以把它转换为 k-1 个二分类变量即哑变量,在解释时,每个哑变量的解释都是在以与参照类别的相比的前提下进行的。如,4分类变量作哑变量处理,选择其中第1个类别作为参照,其他三个类别都和它比,则构成了3个二分类变量,即3个哑变量。二分类变量是可以直接进入模型的。比如以类别1为参照,产生3个哑变量,分别是2/1,3/1和4/1,将其引入回归模型,我们能得到3个回归系数,分别表示类别2和参照类别1相比因变量变化的大小、类别3和参照类别1相比因变量变化的大小以及类别4和参照类别1相比因变量变化的大小。
通过生成哑变量,在回归分析时,我们就能得到3个系数。相比于将类别数值作为连续变量引入模型只能得到1个回归系数,哑变量得到的多个回归系数能够更为详细真实地反映无序多分类变量与因变量二者之间的关系。当类别之间的变化呈现非线性关系时,如类别1跨到类别2远没有类别2跨到类别3对因变量的影响大,此时这种作用更加明显和真实。
为什么这么说?因为实质上,无论你使用的是一般线性回归模型还是广义线性回归模型,它们的前提是默认自变量与因变量之间的关系是线性的,也就是说,随着自变量改变一个单位,因变量水平是线性变化的,增加的幅度即斜率是固定的。若自变量与因变量呈现非线性关系,回归模型得出的结果是不真实的。
虽然哑变量有用,但是它同时也会带来一定的问题。在你的样本量不是很大的情况下,如果你的模型之中有一个或多个无序分类变量,哑变量处理后,会增加你的自变量的个数,有可能会导致模型估计的不稳定。
另外,非常要强调注意的一点就是:在将哑变量引入模型时,一定要保证哑变量同进同出,不能只保留哑变量其中的一部分。只有当某多分类变量的全部哑变量同时引入模型之中,哑变量所表达的意思才是一个完整的原始多分类变量,才能表示剩余各类别相比参照类别的因变量的变化,否则就失去了原始多分类变量的含义。同时,在回归筛选变量时,要做到哑变量同进同出,要么全部留在模型中,要么全部删掉,不存在只保留其中几个。即使只有一个哑变量的系数有统计学意义,也要将该无序分类变量的所有哑变量的系数全部记录展现出来,而不能知选择有统计学意义的那一个哑变量。
最后,哑变量处理时,我们一般选择风险低的类别作为参照类别,剩下的就是依据专业知识和你的具体研究目的而定了。