5.5 预测变量的筛选
当存在很多备选的预测变量时,我们需要从中筛选出一部分较好的预测变量供回归模型使用。
一个常见的但是 不推荐 的方法是画出被预测变量和特定的预测变量之间的关系图,如果不能看出明显的相关关系,则删除该预测变量。但这个方法常常会失效,尤其在未考虑其他预测变量时,散点图并不总能正确的反映两个变量之间的关系。
另一种常见的无效方法是对所有预测变量进行多元线性回归,并删除所有 \(p\) 值大于0.05的所有变量。统计显著性并不总能表示预测变量的预测价值。因为当两个或者多个预测变量相互关联时, \(p\) 值可能会是错误的结果(详见5.9节)。
因此,我们通过计算模型精度来筛选变量。本节将介绍五种度量方法。他们都可以通过 CV()
函数计算得到,我们以美国消费模型为例:
CV(fit.consMR)
#> CV AIC AICc BIC AdjR2
#> 0.1163 -409.2980 -408.8314 -389.9114 0.7486
我们将这些指标与其他模型产生的这些指标值进行比较。对于CV,AIC,AICc和BIC准则,它们的值越小越好;而对于调整的可决系数 \(\bar{R^2}\) ,我们希望它尽可能的大。
调整的可决系数 \(\bar{R^2}\)
如5.1节所言,在生成一个模型之后,我们通常会计算出模型的 \(R^2\) 值。但是, \(R^2\) 并不能准确的反应模型的优劣。我们假想一个模型,该模型的预测输出值总为真实值的20%,那么此时 \(R^2\) 值将会等于1(仅从 \(R^2\) 值来看的话模型拟合效果非常好)。但显然,这是一个极其糟糕的模型。
此外, \(R^2\) 也没有考虑到“自由度”的影响。在模型中增加任意一个变量(即便该变量与被预测变量无关)都会导致 \(R^2\) 值增大。因此, \(R^2\) 值不应该作为衡量模型优劣的指标。
等效的方法是选择最小平方误差和(SSE)的模型,定义如下 \[ \text{SSE} = \sum_{t=1}^T e_{t}^2. \]
最小化SSE等效于最大化 \(R^2\) ,该方法偏向于选择具有更多变量的模型,因此也不是选择有效预测变量的方法。
采用调整的可决系数可以解决以上问题: \[ \bar{R}^2 = 1-(1-R^2)\frac{T-1}{T-k-1}, \] 其中, \(T\) 是观测点的个数,\(k\)是预测变量的个数。调整的可决系数 \(\bar{R^2}\) 是 \(R^2\) 的拓展,它不会随着预测变量数的增加而增加。因此,我们可以选择出 \(\bar{R^2}\) 值最大的模型作为最优模型。其中,最大化 \(\bar{R}^2\) 等同于最小化式(5.3)中的 \(\hat{\sigma}_e\) 。
最大化 \(\bar{R}^2\) 在筛选变量时一般会比较有效,但当变量数目太多时,效果往往会比较差。
交叉检验
在3.4节中我们曾介绍过时间序列的交叉检验,它是用来确定模型预测能力的一个通用方法。对于回归模型,我们也可以对选择的预测变量使用经典的留一法交叉验证(Bergmeir, Hyndman, & Koo, 2018)。这样可以更快且更有效地使用数据,该过程步骤如下:
- 将 \(t\) 时刻的观测值从数据集中移出,用剩下的数据拟合出模型。然后计算 \(t\) 时刻观测值和预测值之间的误差 \(e_{t}^*=y_{t}-\hat{y}_{t}\)(此处的误差与残差不同,因为 \(t\) 时刻观测值的数据在估计 \(\hat{y}_{t}\) 时并没有被使用)。
- 分别令 \(t=1,\dots,T\) ,重复步骤一。
- 计算 \(e_{1}^*,\dots,e_{T}^*\) 的 MSE 。我们称之为 CV。
虽然这看起来是一个非常耗时的过程,但计算 CV 有较为快速的方法,因此留一法交叉验证耗时相比对整个数据集拟合模型来说并不算多。在 5.7节中,我们会介绍快速计算 CV 值的方法。在此标准下,最优模型是具有最小 CV 值的模型。
赤池信息准则(AIC)
赤池信息准则也是一个重要的方法,我们通常称之为 AIC 准则,其定义如下: \[ \text{AIC} = T\log\left(\frac{\text{SSE}}{T}\right) + 2(k+2), \] 其中, \(T\) 是观测点的个数; \(k\) 是预测变量的个数。在 R 中,很多包都有计算 AIC 的函数,虽然它们可能会有略微的不同,但是它们通常会选择出相同的最优模型。AIC 的计算公式中还有关于 \(k+2\) 的部分,这是因为模型中有 \(k+2\) 个待估参数: \(k\) 个预测变量系数,截距项和残差的方差。AIC 方法的思路是添加模型参数个数的惩罚项。
在此标准下,最优模型是具有最小 AIC 值的模型。当 \(T\) 很大时,最小化 AIC 等同于最小化 CV 值。
修正的赤池信息准则(修正的AIC)
当 \(T\) 值较小时,AIC 准则总是倾向于选择更多的预测变量,因此出现了修正的 AIC 准则,其定义如下: \[ \text{AIC}_{\text{c}} = \text{AIC} + \frac{2(k+2)(k+3)}{T-k-3}. \] 与 AIC 准则相同,AICc 准则也应该被最小化。
施瓦茨的贝叶斯信息准则(BIC)
施瓦茨的贝叶斯信息准则,通常被称为 BIC 、 SBIC 或 SC ,也是一个重要的方法,其定义如下: \[ \text{BIC} = T\log\left(\frac{\text{SSE}}{T}\right) + (k+2)\log(T). \] 与 AIC 一样,最小化 BIC 可以选择得到最佳模型。 BIC 准则选择出的模型比 AIC 准则选择出的模型具有更少的预测变量。这是因为 BIC 准则对参数个数的惩罚力度更强。当 \(T\) 很大时,最小化 BIC 与留 \(v\) 交叉检验非常相似( \(v = T[1-1/(\log(T)-1)]\) )。
我们应当选用哪种准则?
\(\bar{R}^2\) 被广泛用于模型筛选,但是由于它倾向于选择具有很多预测变量的模型,因此它并不适用于预测。
在给定足够多数据情况下, BIC 准则能找出真正完美拟合这些数据的模型,因此统计学家更喜欢用 BIC 准则筛选模型。但是,很少有数据存在完美的模型,即使存在,该模型的预测结果也不一定准确(因为参数估计结果可能不准确)。
因此,我们建议使用 AICc 、 AIC 或 CV 准则的其中一个,因为他们都是以预测数据为目标。当 \(T\) 足够大时,它们会选择出相同的模型。在本书的大多数例子中,我们使用 AICc 值来筛选模型。
示例:美国消费支出
在预测美国消费支出的多元回归模型中有四个预测变量,因此有 \(2^4=16\) 个可选择模型。现在我们检测四个预测变量是否真的都有用,或者是否可以删除一个或多个预测变量。在表5.1中展示了16个模型的拟合结果。“1”表示预测变量存在于模型中,“0”表示预测变量不存在于模型中。因此,第一行所代表的模型中包含了全部的四个预测变量。
模型结果根据 AICc 进行排序。因此最好的模型在下表的最顶端,最差的模型在下表的最底端。
收入 | 工业产出 | 个人储蓄 | 失业率 | CV | AIC | AICc | BIC | AdjR2 |
---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0.116 | -409.3 | -408.8 | -389.9 | 0.749 |
1 | 0 | 1 | 1 | 0.116 | -408.1 | -407.8 | -391.9 | 0.746 |
1 | 1 | 1 | 0 | 0.118 | -407.5 | -407.1 | -391.3 | 0.745 |
1 | 0 | 1 | 0 | 0.129 | -388.7 | -388.5 | -375.8 | 0.716 |
1 | 1 | 0 | 1 | 0.278 | -243.2 | -242.8 | -227.0 | 0.386 |
1 | 0 | 0 | 1 | 0.283 | -237.9 | -237.7 | -225.0 | 0.365 |
1 | 1 | 0 | 0 | 0.289 | -236.1 | -235.9 | -223.2 | 0.359 |
0 | 1 | 1 | 1 | 0.293 | -234.4 | -234.0 | -218.2 | 0.356 |
0 | 1 | 1 | 0 | 0.300 | -228.9 | -228.7 | -216.0 | 0.334 |
0 | 1 | 0 | 1 | 0.303 | -226.3 | -226.1 | -213.4 | 0.324 |
0 | 0 | 1 | 1 | 0.306 | -224.6 | -224.4 | -211.7 | 0.318 |
0 | 1 | 0 | 0 | 0.314 | -219.6 | -219.5 | -209.9 | 0.296 |
0 | 0 | 0 | 1 | 0.314 | -217.7 | -217.5 | -208.0 | 0.288 |
1 | 0 | 0 | 0 | 0.372 | -185.4 | -185.3 | -175.7 | 0.154 |
0 | 0 | 1 | 0 | 0.414 | -164.1 | -164.0 | -154.4 | 0.052 |
0 | 0 | 0 | 0 | 0.432 | -155.1 | -155.0 | -148.6 | 0.000 |
上表显示,最好的模型中包含四个变量。但是,仔细观察上表会发现一些其他特点。前四个模型和其他模型有着明显的差异,这表明“收入”和“储蓄”是比“生产”和“失业率”更重要的变量。此外,前两行具有几乎相同的 CV , AIC 和 AICc 值,因此我们可以删除“生产”并得到相似的预测。需要注意的是,如图5.5所示,“生产”和“失业率”之间存在高度负相关关系,因此“生产”中的预测信息大部分也包含在“失业率”中。
逐步回归
当预测变量的个数很多时,例如预测变量个数为40个,此时有 \(2^{40}\) 个备选模型,将每个备选模型都列出来是不可能的。因此,需要其他方式来筛选模型中的预测变量。
一种高效的方法为 向后逐步回归法 :
- 首先用所有预测变量进行建模。
- 每次删除一个预测变量。如果模型精度有所改进,则保留修改之后的模型。
- 迭代直至模型精度不再提升。
当解释变量个数太多时, 向后逐步回归 效果较差,此时我们更倾向于使用 向前逐步回归。此过程从仅包含截距的模型开始,每次添加一个预测变量,并将能提高模型预测精度的预测变量保留下来,重复该过程直至模型精度不再提高。
对于向后逐步回归法和向前逐步回归法而言,起始模型都可以仅包含一部分预测变量。在这种情况下, 对于向后逐步回归法,我们还应考虑在每个步骤中添加预测变量,对于前向逐步回归法,我们还应考虑在每个步骤中删除预测变量。因此该方法也被称为 混合 过程。
需要注意的是,每个逐步回归法都不能得到一个最佳的模型,但是可以得到效果较好的模型。