时间序列模型选择:AIC 与样本外 SSE 及其等价性

机器算法验证 时间序列 交叉验证 模型选择 有马 aic
2022-03-27 08:50:31

AIC 经常被推荐作为比较时间序列预测模型的标准。例如,在动态回归模型的上下文中看到这个

可以为最终模型计算 AIC,该值可用于确定最佳预测变量。也就是说,应针对要考虑的所有预测变量子集重复该过程,并选择具有最低 AICc 值的模型。

为什么不根据样本外的性能比较模型呢?(例如在样本外预测中选择 SSE 最低的模型)。我一直在阅读有关时间序列预测的几本教科书和网站,但没有找到这个讨论。我得到的最接近的是关于 AIC 的事实和谬误的博客条目

AIC 并不是真正的“样本内”度量。是的,它是使用训练数据计算的。但渐近地,最小化 AIC 相当于最小化横截面数据的留一法交叉验证 MSE,相当于最小化时间序列模型的样本外单步预测 MSE。这一特性使其成为用于选择预测模型的有吸引力的标准。

在我一直在工作的一个示例中(尽管无法在此处发布图表;我需要在此站点中获得更多声誉),我尝试了这两种方法,并且大多数时候 AIC 和样本外 SSE 不会产生相同的结果结果。我使用的程序如下:

  1. 我将数据分为训练样本和测试样本(在任意点;下面有一个关于这个的问题)
  2. 我使用训练样本(前 230 个周期;所有模型具有相同数量的观察值,因此 AIC 具有可比性)估计了竞争模型(具有外部回归量的 ARIMA,改变 ARIMA 参数和回归量)。
  3. 然后,我预测了与测试样本相同的时期(时期 231-260)的系列。
  4. 对于每个模型,我计算了简单的 SSE,例如其中是系列的观察值(测试样本)和是模型预测的值。SSE=t=231260(yt^yt)2ytyt^
  5. 我将 AIC 指示的模型(使用训练数据计算)与样本外 SSE 最低的模型进行了比较。大多数时候,选择的模型是不同的(至少在视觉上,SSE 选择的模型表现更好)。

如果有人可以向我解释这背后发生了什么,我将不胜感激。我显然不是这方面的专家。我只是想自学一点,所以如果我忽略了我一直在阅读的教科书中的一些重要内容,请原谅。

最后,关于在时间序列的训练和测试样本中拆分数据的问题。在我看来,与对横截面数据使用相同的程序相比,有一些根本不同的东西。对于横截面数据,您可以从整个数据集中抽取两个随机样本。对于时间序列,这没有多大意义。因此,您需要在训练和测试样本中取任意点来拆分系列。问题是,通常最好的模型对于每个任意点都是不同的。也许这就是为什么这种方法似乎并不经常使用的原因。这就是选择AIC首选模型的原因吗?(鉴于“渐近地,最小化 AIC 是......相当于最小化时间序列模型的样本外一步预测 MSE”。)

1个回答

为什么不根据样本外的性能比较模型呢?

当然,你可以这样做。我认为 AIC 的优势是计算速度更快,编码更少(虽然 AIC 通常作为模型诊断的一部分自动报告,但时间序列的交叉验证在您最喜欢的软件中可能不容易获得)。

我尝试了这两种方法,大多数时候 AIC 和样本外 SSE 不会产生相同的结果。

您似乎没有正确实施交叉验证。首先,您只拆分数据一次,而您应该多次拆分数据。其次,您根据预测多个不同范围的一次试验而不是预测一个固定范围的多次试验来评估预测性能。也许因此你得到了 AIC 和交叉验证之间的差异

在时间序列设置中实现交叉验证时,您可以使用滚动窗口。您将从观察到,其中是窗口长度,并将从 1 滚动到,其中是样本大小。您将在每个滚动窗口中估计您的模型并预测未来一个时期。然后,您将收集这些预测并将它们与实际值进行比较。在时间序列设置中使用交叉验证时,这将为您提供预测性能的样本外指标。tt+mmtTm1T

另见 Hyndman 和 Athanasopoulos “预测:原则和实践”,第 2.5 节(一直向下滚动)和 Bergmeir 等人。“关于评估时间序列预测的交叉验证有效性的说明”(2015 年,工作论文)。

至少在视觉上,上证所选择的那些[模型]表现更好

可能是模型残差没有完全具有假设的分布,或者模型有一些其他故障以某种方式使其 AIC 无效。这就是为什么在模型选择中样本外预测准确性可能优于 AIC 的一个论点。