12.7 长期和短期的时间序列

短期时间序列预测

我们经常被问到如何使用 很少的 数据点来拟合时间序列模型。与几乎所有关于样本量的问题一样,这个问题没有简单的答案。它取决于要估计的模型参数的数量和数据的随机性。所需的样本量随着要估计的参数数量和数据中噪声的大小的增加而增加。

一些教科书对各种时间序列模型的最小样本量提供了经验法则。这在理论和实践中都未经证实并且存在误导性。此外,他们忽略了数据的潜在可变性,并且经常忽略需要估计的参数数量。例如,对于 ARIMA 建模通常给出最小样本量为30,对于这个经验没有给出任何理由。唯一的理论限制是你需要比预测模型中参数个数更多的观测值。然而,在实践中,我们通常需要比这多得多的观测样本才可以。

理想情况下,我们会测试我们选择的模型相比一些较简单的方法是否表现出了良好的样本外性能。然而,对于短期时间序列,没有足够的数据允许我们保留部分观测值用于测试,甚至无法进行时间序列的交叉验证。 AICc 在这里特别有用,因为它可以表示一步预测的样本外 MSE 。根据最小化 AICc 选择的模型可以考虑到参数数量和噪声大小。

对于短期时间序列, AIC 信息准则通常推荐非常简单的模型,因为任何超过一两个参数的模型都会因估计误差而得到很差的预测效果。我们将auto.arima()函数应用于 M-competition 中所有少于20个观测值的时间序列。一共包含144个这样的序列,其中有54个序列包含零个参数(白噪声和随机游走),有73个序列包含一个参数,有15个序列包含两个参数,2个序列包含三个参数。有兴趣的读者可以使用以下代码进行相同的练习。

library(Mcomp)
library(purrr)
n <- map_int(M1, function(x) {length(x$x)})
M1[n < 20] %>%
  map_int(function(u) {
    u$x %>%
      auto.arima() %>%
      coefficients() %>%
      length()
  }) %>%
  table()

长期时间序列预测

大多数时间序列模型对长期时间序列都不适用。一个问题在于我们的真实数据并非来自我们使用的模型。当观测值数量不太大(比如大约200个)时,模型通常可以很好的近似生成数据的过程。但最终当你得到足够多的数据时,真正的数据生成过程与模型之间的差异开始变得更加明显。另一个问题是,由于观测样本量增加,模型参数的优化变得更加耗时。

如何处理这些问题取决于模型的目的。可以使用更加灵活和复杂的模型,但这仍然需要假定模型结构适用于整个数据周期。更好的方法通常是允许模型本身随时间变化。 ETS 模型旨在通过允许趋势和季节成分随时间而变化来处理这种情况。包含差分的 ARIMA 模型具有类似的性质。但是动态回归模型不允许模型成分的任何演变。

如果你只对预测接下来的少数观测值感兴趣,一个简单的方法就是抛弃最早的观测值,只用最近的观测值拟合模型。此时一个不灵活的模型就可以得到较好的结果,因为没有足够的时间让模型结构关系发生实质性的改变。

例如,我们在第 12.1 节对26年的汽油产量周数据建立动态谐波回归模型。假设季节性模式在近三十年里保持不变是不现实的。所以我们可以简单地用近几年的数据拟合模型。