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)。这样可以更快且更有效地使用数据,该过程步骤如下:

  1. \(t\) 时刻的观测值从数据集中移出,用剩下的数据拟合出模型。然后计算 \(t\) 时刻观测值和预测值之间的误差 \(e_{t}^*=y_{t}-\hat{y}_{t}\)(此处的误差与残差不同,因为 \(t\) 时刻观测值的数据在估计 \(\hat{y}_{t}\) 时并没有被使用)。
  2. 分别令 \(t=1,\dots,T\) ,重复步骤一。
  3. 计算 \(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 进行排序。因此最好的模型在下表的最顶端,最差的模型在下表的最底端。

#> Warning in kableExtra::kable_styling(., latex_options =
#> "scale_down"): Please specify format in kable. kableExtra
#> can customize either HTML or LaTeX outputs. See https://
#> haozhu233.github.io/kableExtra/ for details.
表 5.1: 四个变量的所有可能组合模型
收入 工业产出 个人储蓄 失业率 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}\) 个备选模型,将每个备选模型都列出来是不可能的。因此,需要其他方式来筛选模型中的预测变量。

一种高效的方法为 向后逐步回归法

  • 首先用所有预测变量进行建模。
  • 每次删除一个预测变量。如果模型精度有所改进,则保留修改之后的模型。
  • 迭代直至模型精度不再提升。

当解释变量个数太多时, 向后逐步回归 效果较差,此时我们更倾向于使用 向前逐步回归。此过程从仅包含截距的模型开始,每次添加一个预测变量,并将能提高模型预测精度的预测变量保留下来,重复该过程直至模型精度不再提高。

对于向后逐步回归法和向前逐步回归法而言,起始模型都可以仅包含一部分预测变量。在这种情况下, 对于向后逐步回归法,我们还应考虑在每个步骤中添加预测变量,对于前向逐步回归法,我们还应考虑在每个步骤中删除预测变量。因此该方法也被称为 混合 过程。

需要注意的是,每个逐步回归法都不能得到一个最佳的模型,但是可以得到效果较好的模型。

筛选预测变量之后的推断

在本书中,我们不讨论预测变量的统计推断(例如查看每个预测变量的 \(p\) 值)。如果你非常想要查看预测变量的统计显着性,请注意选择预测变量的任何过程都会使 \(p\) 值背后的假设无效。当模型用于预测时,我们建议的用于选择预测变量的过程是有效的;如果你希望研究任意一个预测变量对被预测变量的影响,那么我们建议的方法是无效的。

参考文献

Bergmeir, C., Hyndman, R. J., & Koo, B. (2018). A note on the validity of cross-validation for evaluating autoregressive time series prediction. Computational Statistics and Data Analysis, 120, 70–83. https://robjhyndman.com/publications/cv-time-series/