使用时间序列交叉验证计算预测误差

机器算法验证 时间序列 预测
2022-03-05 08:08:21

我有一个时间序列的预测模型,我想计算它的样本外预测误差。目前我正在遵循的策略是在Rob Hyndman 的博客(靠近页面底部)上建议的策略,如下所示(假设时间序列的训练集y1,,ynk

  1. 将模型拟合到数据并让成为下一次观察的预测。yt,,yt+k1y^t+k
  2. 将预测误差计算为et=y^t+kyt+k
  3. 重复t=1,,nk
  4. 计算均方误差为MSE=1nkt=1nket2

我的问题是,由于我的训练集重叠,我有多少需要担心相关性。特别是,假设我不仅要预测下一个值,还要预测下一个值,这样我就有了预测和错误,我想构建一个预测错误的期限结构。my^t+k,,y^t+k+m1et,1,,et,m

我仍然可以每次将训练集的窗口向前滚动 1 ,还是应该向前滚动如果我预测的系列中存在显着的自相关,这些问题的答案将如何变化(可以想象这是一个长记忆过程,即自相关函数以幂律而不是指数方式衰减。)m

我会很感激这里的解释,或者链接到我可以找到关于 MSE 周围的置信区间(或其他错误度量)的理论结果的地方。

1个回答

听起来您可能对使用最大熵 bootstrap估计错误更感兴趣,而不是交叉验证。这将允许您生成数据的多个引导程序,然后您可以将其拆分为任意数量的训练/测试集,以计算预测的置信区间。

Rob Hyndman 在他的博客上进一步讨论了时间序列交叉验证,他在其中实现了几种不同的“滚动”和预测方法,但主要集中在实现上。我的博客上也有一些进一步的实现也许最简单的方法是在所有时间窗口中平均您的错误,因此忽略错误中的潜在相关性。

据我所知,时间序列数据的交叉验证的理论状态在某种程度上落后于一般交叉验证的理论状态。直观地说,我预计误差会随着时间范围的增加而增加,这表明您应该预期各种预测范围内的相关误差。为什么这让你担心?