多重线性回归要求各个自变量之间相互独立,不存在多重共线性。所谓多重共线性,是指自变量之间存在某种相关或者高度相关的关系,其中某个自变量可以被其他自变量组成的线性组合来解释。
医学研究中常见的生理资料,如收缩压和舒张压、总胆固醇和低密度脂蛋白胆固醇等,这些变量之间本身在人体中就存在一定的关联性。如果在构建多重线性回归模型时,把具有多重共线性的变量一同放在模型中进行拟合,就会出现方程估计的偏回归系数明显与常识不相符,甚至出现符号方向相反的情况,对模型的拟合带来严重的影响。
今天我们就来讨论一下,如果自变量之间存在多重共线性,如何通过有效的变量筛选来加以解决?
回顾一下前期讲解多重线性回归时,介绍的判断自变量多重共线性的方法。
1. 计算自变量两两之间的相关系数及其对应的P值,一般认为相关系数>0.7,且P<0.05时可考虑自变量之间存在共线性,可以作为初步判断多重共线性的一种方法。
2. 共线性诊断统计量,即Tolerance(容忍度)和VIF(方差膨胀因子)。一般认为如果Tolerance<0.2或VIF>5(Tolerance和VIF呈倒数关系),则提示要考虑自变量之间存在多重共线性的问题。
顾名思义,当自变量之间存在多重共线性时,最简单的方法就是对共线的自变量进行一定的筛选,保留更为重要的变量,删除次要或可替代的变量,从而减少变量之间的重复信息,避免在模型拟合时出现多重共线性的问题。
对于如何去把握应该删除哪一个变量,保留哪一个变量,近期也有小伙伴在微信平台中问到这个问题,下面举个例子进行一个简单的说明。
表1. 自变量相关性
如表1所示, X3和X4、X5之间相关系数>0.7,变量X4与X1、X3、X5之间相关系数>0.7,X5与X3、X4之间相关系数>0.7,说明X3、X4、X5之间存在一定的共线性,由于X4与X1的相关性也较高,故此时建议可以先将X4删除再进行模型拟合,当然也需要结合容忍度和VIF值及专业知识来进行判断。有些时候共线性不可能从统计上得到完全解决,因此在不损失重要信息的前提下,人为剔除共线的变量往往是最有效的方法。
当自变量之间的关系较为复杂,对于变量的取舍不易把握时,我们还可以利用逐步回归的方法进行变量筛选,以解决自变量多重共线性的问题。逐步回归法从共线性的自变量中筛选出对因变量影响较为显著的若干个变量,把对因变量贡献不大的自变量排除在模型之外,从而建立最优的回归子集,不仅克服了共线性问题,而且使得回归方程得到简化。
% MATLAB逐步回归
mdl3 = stepwiselm(dat_del2);
实际运行证明逐步回归并不能解决多重共线性,反而可能将重要变量剔除!
https://zhuanlan.zhihu.com/p/91092190