怎么在不减少变量下消除多重共线性?

恰好前段时间跟一个统计背景的同事争论过这个问题,基本上,只有一个办法:增大样本量。

多重共线性是一个小样本条件下比较棘手的问题,我们知道在线性回归的情况下,系数估计的方差为:

多重共线性反映在最后一项上,也就是说是的系数的方差变大了。

注意多重共线性并不意味着假设检验的完全失效,实际上,如果原假设为真,我们的假设检验不会错,size永远是对的,或者说犯第一类错误的概率总是能控制的;但是如果我们的原假设为假,多重共线性导致power大大降低,所以很容易犯第二类错误。

翻译成人话就是,多重共线性会使得你更容易得到不显著的结果。另外还有一个推论就是,如果你得到了显著的结果,也就不用去管什么多重共线性的问题了。这也就是为什么我个人感觉审稿人拿多重共线性说事都是耍流氓:拿去审的稿件基本上不会不显著,如果人家的结果显著了还怀疑多重共线性的话,只能说审稿人自己统计没学好。

为了说明这一点,我们做个小模拟看看:

program drop _all

program define test_multi

drop _all

set obs 30

gen x1=rlogistic()

gen x2=10*x1+rnormal()

gen x3=3*x1+3*x2+rnormal()

gen y=x1+x2+(rchi2(1)-1)

* run the desired command

reg y x1 x2 x3

end

clear

simulate _b _se, reps(10000): test_multi

gen test1=abs(_b_x1)>1.96*_se_x1

gen test2=abs(_b_x2)>1.96*_se_x2

gen test3=abs(_b_x3)>1.96*_se_x3

sum test1 test2 test3

下面是一万次模拟的结果:

注意x1 和x2真实系数都为1,x3的真实系数为0,三个变量都是高度共线性的。前两个系数反映了power,最后一个反映了size,可以看到size基本上是对的(0.058约等于0.05,由于我的残差不是正态的且样本量只有30,偏差主要来自于非正态的小样本偏误),但是大大影响了power(x1的拒绝率只有0.08,意味着如果存在多重共线性,跑100次回归只有8次得到了显著的结果)。

如何解决呢?如果我们把样本量扩大到,比如说,500,我们得到了如下结果:

首先,由于样本量增大了,所以x3的假设检验结果也更「对」了,更接近于0.05;其次,增大样本量大大提高了x1 x2的假设检验的power。如果样本量增大到1000呢?

所以答案也就呼之欲出了,为了解决多重共线性,办法只有一个:增大样本 。

尽管题主排除了剔除变量这个选项,但是我还是不得不说一下为什么不能剔除变量。道理很简单,因为经济学关注的是系数,如果把x2剔除了,那么就会导致x1的估计大大的向上偏误,即大大高估了x1的影响力,这是比多重共线性更加难以让人接受的情况。所以任何以剔除变量为手段的解决多重共线性的方法,在经济学里都是不被接受的。

当然,如果你不能增大样本,结果又不显著的话,那只能祝你good luck了。

来源:知乎 http://www.zhihu.com

作者:慧航

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。

点击下载

此问题还有 17 个回答,查看全部。

延伸阅读:

怎么评价罗纳德·科斯的学术地位?他对于中国的「十大忠告」是正确的吗?

为什么富人越来越富,穷人越来越穷?

Advertisements

Tags: