实际问题中,影响因变量Y的因素有很多,人们需要挑选若干变量来建立回归方程,但是要如何选择变量呢?有时我们会漏掉重要的自变量,那么所建立的方程意义就不大;有时又想囊括更多的自变量,此举会导致预测精度的下降,这是由于SSE自由度的减少会导致其δ2的估计增大[1]。要建立“最优”的回归方程,我们需要从可供选择的所有变量中挑选出对Y有显著影响的变量,并且剔除其它无显著影响的变量。

“逐步回归法”是较为常用的一种方法。它有三种实现策略:正向选择、后向选择和逐步选择。一般所说的逐步回归指的是最后一种,它结合了前两种方式的优点。它首先正向引入一个自变量,然后对原有自变量进行检验,根据结果剔除不显著的自变量,如此反复进行自变量的引入和剔除操作。

逐步回归法除了剔除不太重要的变量,还会剔除和其它变量高度相关的变量,以降低多重共线性程度[2]。逐个引入变量后,要对模型整体上做F检验,并对其中每个变量逐个进行t检验。后面引入的变量有可能会使原先的变量成为不显著,需要将其删除,以保证引入新变量前,原先模型只包含显著性变量。进行共线性诊断时,当VIF值大于或等于10,则认为变量间存在严重的共线性,应当给予剔除,最终留在模型中的解释变量之间的多重共线性是不明显的。

【实例探究】

某种水泥在凝固时放出的热量Y(卡/克)与水泥中的四种化学成分X1、 X2、X3、X4有关,现测得13组数据,如下表所示,希望从中选出主要的变量,建立Y与它们的线性回归方程[1]。

哑变量 多重线性回归 哑变量多元线性回归_哑变量 多重线性回归

多元线性回归的代码和结果截图如下:

v_data<-data.frame(
X1=c(7, 1, 11, 11, 7, 11, 3, 1, 2, 21, 1, 11, 10),
X2=c(26, 29, 56, 31, 52, 55, 71, 31, 54, 47, 40, 66, 68),
X3=c( 6, 15, 8, 8, 6, 9, 17, 22, 18, 4, 23, 9, 8),
X4=c(60, 52, 20, 47, 33, 22, 6, 44, 22, 26, 34, 12, 12),
Y=c(78.5, 74.3, 104.3, 87.6, 95.9, 109.2, 102.7, 72.5, 93.1,115.9, 83.8, 113.3, 109.4)
)
m_lm<-lm(Y ~ X1+X2+X3+X4, data=v_data)
summary(m_lm)

上图显示,四个自变量建立的回归方程,全部的系数都没通过检验(p>0.05)。其中调整的R方考虑了样本量和自变量个数的影响,通常使用它来评价模型的拟合效果。

接着,我们使用R中的step()函数来进行逐步回归操作。

m_lm.step<-step(m_lm)

哑变量 多重线性回归 哑变量多元线性回归_r语言_02

使用全部自变量时,其AIC值为26.94。AIC(Akaike information criterion)是衡量统计模型拟合优度(Goodness of fit)的一种标准,其值越小表示模型不仅能够很好地解释数据,而且使用了最少的参数,减少了模型的复杂度。要是去掉X3变量,AIC减少并且是最小的那个,此步骤可行。重新拟合参数后,推进到下一轮的判断,发现不论去掉哪个参数都会使AIC值增加,因此R终止了计算,得到“最优”模型。

summary(m_lm.step)

哑变量 多重线性回归 哑变量多元线性回归_复杂度_03

查看模型详细信息,发现X2和X4两个变量系数的显著性水平不是很理想,我们可以使用add1()和drop1()两个函数进一步加以处理。

drop1(m_lm.step)

哑变量 多重线性回归 哑变量多元线性回归_线性回归_04

执行drop1()函数,从结果中我们看到,虽然去掉X4时AIC值会升高一点,不过是最能接受的选择。而且,其残差平方和(RSS)只上升了9.93,也是最少的。直观上来看,方程拟合得越好,残差的平方和相应也会越少。综合这两方面的考虑,去掉变量X4是合理的。

m_lm.opt<-lm(Y ~ X1+X2, data=v_data); summary(lm.opt)

哑变量 多重线性回归 哑变量多元线性回归_哑变量 多重线性回归_05

此时,得到进一步优化的模型已可以满足使用要求。

参考文章:

  1. 统计建模与R软件(图书)
  2. 一看就懂的多重共线性
    https://zhuanlan.zhihu.com/p/355241680
  3. 多元线性逐步回归分析
    https://zhuanlan.zhihu.com/p/144153981