什么是哑变量(虚拟变量),应用中应注意什么问题?
The following article is from 小白学统计 Author 冯国双
内容来自:“小白学统计”微信公众号,感谢作者授权。
虚拟变量(dummy variable)也叫哑变量,翻译不同而已。因为dummy的含义有假的、虚拟的、哑的等各种含义,所以国内翻译也不一样。但是他们俩是一回事。
虚拟变量其实算不上一种变量类型(比如连续变量、分类变量等),确切地说,是一种将多分类变量转换为二分变量的一种形式。Dummy这个词意思是虚拟的、假的,所以dummy variable意思就是假的变量,不是真实的变量。那它到底虚拟在什么地方呢?我们通过一个例子来详细解释一下。
例:某研究者检测了四种不同类型社区(分别用0、1、2、3表示)的SO2情况。研究者欲分析社区类型是否与SO2水平有关系,或者说,不同社区类型的SO2水平是否不同。
该例子中,因变量SO2水平是一个定量资料,自变量社区类型是一个分类资料,分析方法可以考虑一般线性模型。
首先要强调一点,不管是一般线性模型还是广义线性模型,它们都是“线性”的,也就是说,只要你采用了这些模型,就已经默认了自变量与因变量之间的关系是线性的。所以,对于例中的数据,如果用一般线性模型,其结果如下图所示。
图中的意思是,随着社区类型从0到3之间的改变,SO2水平是线性增加的,增加的幅度(斜率)是207.8。也就是说,社区类型从0变为1,SO2增加207.8;社区类型从1变为2,SO2增加207.8;社区类型从2变为3,SO2增加207.8。
但我们会发现,事实并非如此。从0到1时,似乎增加的幅度更大;而从1到2时,似乎增加的幅度没有这么大。也就是说,207.8这个幅度,只是一个平均幅度,是从0到3增加的平均幅度。如果我们想具体了解从0到1、从1到2、从2到3真实的增加值,就需要用到虚拟变量了。
所谓虚拟变量,就是把原来的一个多分类变量转化为多个二分变量,总的来说就是,如果多分类变量有k个类别,则可以转化为k-1个二分变量。如变量x为赋值1、2、3、4的四分类变量,就可以转换为3个赋值为0和1的二分类变量。
在进一步解释虚拟变量的含义之前,我们需要先了解一下“参照”的含义。分类结果的解释一般是要有参照类别的。比如我们说男性肺癌发生率高,暗含了“相对女性”这样的参照;50岁以上人群冠心病发生率更高,暗含了“相对50岁以下人群”的参照。没有参照,就没法说高或低。比如我们单独说80%这个数字,它是高还是低呢?相对70%就是高的,相对90%就是低的。所以分类变量的结果需要结合参照来解释。
当我们把k个类别的多分类变量转化为k-1个二分变量后,每一个二分类变量表示相对参照类的大小。例如,多分类变量x用1、2、3、4表示,我们设定以1作为参照,那么生成的3个虚拟变量分别表示:2和1相比的大小、3和1相比的大小、4和1相比的大小。
通过生成虚拟变量,就把原来的一个系数变成了多个系数,这多个系数更详细地显示了自变量与因变量之间的关系,尤其在非线性关系的时候,尤其重要。因为当你在用线性回归、logistic回归这些方法的时候,已经默认了是线性关系了,你是不可能找出非线性关系的。
下图比较了虚拟变量与原始变量的拟合效果。
蓝色线是将其作为定量变量纳入,给出了直线的拟合效果。红色线是将其作为虚拟变量纳入,给出了相对参照而言,每个类别的拟合效果。不难看出,虚拟变量给出了真实的拟合效果,而定量变量在社区=0时高估,在社区=1时低估,结果很容易有偏。
在作为定量资料的时候,我们计算的斜率只有一个,即207.8。而将其作为3个虚拟变量后,便计算出3个系数,分别为431、509.4、666.6,分别表示:社区=1与社区=0相比,SO2平均高431;社区=2与社区=0相比,SO2平均高509.4;社区=3与社区=0相比,SO2平均高666.6。
如何设置虚拟变量呢?目前大多数软件都可以实现,如SAS软件在各种回归分析的过程中,一般都会有class语句,通过class语句的param=reference选项便可实现虚拟变量的设置。在SPSS中,在回归分析界面可以点击Categorical,通过该按钮可以设置虚拟变量,并指定其参照类。
如果我们要手工来设定,其思路也比较简单,设置过程如下所示:
社区类型是原始变量,社区1、社区2、社区3是生成的3个虚拟变量。方法是:第1个虚拟变量,当社区类型=1时,变量社区1=1,否则社区1=0;第2个虚拟变量,当社区类型=2时,变量社区2=1,否则社区3=0;第3个虚拟变量,当社区类型=3时,变量社区3=1,否则社区3=0。
最后强调一点:在模型分析时,虚拟变量都是同进同出,也就是说,要么都在模型中,要么都不在模型中,不能只保留其中一个,否则它的含义就变了。
更多阅读
关注医咖会,及时获取最新统计教程
点击左下角“阅读原文”,查看全部免费统计教程。或者使用电脑打开网址:http://www.mediecogroup.com/,分类查看全部统计教程。
快加小咖个人微信(xys2019ykh),拉你进统计讨论群和众多热爱研究的小伙伴们一起交流学习。