多重共线性是指模型中的自变量之间存在较高的相关关系,如自变量 x 1 , x 2 之间的关系为 x 1 =2 x 2 。多重共线性的存在会影响模型的准确性及稳定性,方差膨胀因子(vif)可以用于检验自变量之间是否具有相关关系,该值反映了变量之间存在多重共线性的程度,其值在0~10表明自变量之间不存在多重共线性,10~100表明变量之间存在较强的多重共线性,大于100时则表明自变量之间存在严重的多重共线性。R语言中“car”包的vif()函数可以用于多重共线性检验,
可以看出线性回归模型m_multicolline中自变量X1、X2、X3的vif值均大于10,表明当前模型存在多重共线性,且引起多重共线性的原因可能是X1、X2、X3。
一般处理多重共线性的方法为删除相关变量,R包“leaps”中的regsubsets()函数可以通过全子集回归的方式检验所有可能的回归模型,帮助确定剔除哪些变量,输出各个自变量被选择的矩阵及各个自变量被选择后对应模型的样本决定系数 R 2 (R-square)、校正决定系数adjr2(adjusted R-square)及马洛斯Cp值(Mallows Cp)。一般来说,样本决定系数越大,表示模型拟合效果越好,但样本决定系数反映的是大概有多准,因为随着样本数量的增加,样本决定系数必然增加,无法真正定量说明准确程度,只能大概定量,而校正决定系数可以抵消样本数量对样本决定系数的影响。马洛斯Cp值也用于评估一个回归模型的优良性,使用马洛斯Cp值可以为模型精选出自变量子集,马洛斯Cp值越小模型准确性越高。通常,当马洛斯Cp值接近或小于自变量数量时,可停止筛选并采用该自变量子集为最佳组合,这样采用数量较少的自变量组合来简化模型的同时,也能保持模型的均方误差不变或减小,缓解过度拟合问题并提升模型的预测能力,举例如下:
由全子集回归的结果可知,将X3、X4、X5、X6作为最终的自变量构建回归模型能够有较好的拟合效果。
亦可使用逐步回归方法解决多重共线性问题,逐步回归的基本思想是逐个引入自变量,每次引入对因变量影响最显著的自变量,并对方程中的老变量逐个进行检验,把变化不显著的变量逐个从方程中剔除,最终的回归方程既不漏掉对因变量影响显著的变量,又不包含对因变量影响不显著的变量。R语言中的step()函数可以在已有模型的基础上实现逐步回归,其原理是将原模型中的变量逐个剔除,重新进行回归,依据赤池信息量准则(Akaike information criterion,AIC)确定最终的模型,赤池信息量准则是评估统计模型复杂度和衡量统计模型拟合效果的一种标准,可以帮助寻找能够最好地解释数据但包含最少自由参数的模型。赤池信息量越小,表明模型的拟合效果越好且出现过度拟合的可能性越小。选择最低赤池信息量对应的模型后重复进行变量剔除操作,当赤池信息量的值不再变小时,终止逐步回归,输出逐步回归结果,举例如下:
当用x1、x2、x3、x4作为回归方程的自变量时,AIC的值为28.764;去掉x3,回归方程的AIC的值为24.021;去掉x4,回归方程的AIC的值为25.011。由于去掉x3可以使AIC达到最小值,因此R语言会自动去掉x3,选择x1、x2、x4作为回归系数的自变量。