2

假设我有一个时间序列数据集,使用 90% 作为训练集,10% 作为随机验证集。如何评估 ARIMA 模型的准确性?

我是否必须auto.arima使用 100% 的完整数据集来拟合 ARIMA 模型,并迭代地将其重新拟合到训练集forecast::Arima以预测验证集?

或者

我是否必须auto.arima使用训练集迭代地拟合 ARIMA 模型并预测验证集,从而每次都使用不同的模型而不进行重新拟合

我一直认为这是第一个,但是,我的模型在使用傅里叶项来合并多个季节性时会做一些奇怪的事情。

如果有人可以帮助我,将不胜感激。

4

1 回答 1

2

我强烈推荐阅读 Rob Hyndman 的《预测:原则与实践》中关于交叉验证时间序列模型主题的“评估预测准确性”(第 3.4 节)。

https://otexts.com/fpp2/accuracy.html

您的交叉验证技术很可能取决于您要预测的内容。有许多不同的交叉验证时间序列模型的技术。

示例 #1 - 假设我有 2014-2018 年的月销售额,我想建立一个模型来预测 2019 财年的月销售额。我将在 2014-2017 年训练我的 ARIMA 模型并预测 12 个月,然后比较我的结果使用平均绝对百分比误差(MAPE,在 Hyndman 的书中也讨论过)等技术,将预测与我作为测试集的 2018 年实际月度销售额进行比较。话虽如此,随着您从上一个当前数据点进一步预测,您的预测间隔将变得越来越大。

示例 #2 - 月销售额的相同预测问题。我也可以在 2014 年 1 月到 2017 年 12 月训练模型,然后提前 1 个月预测这个时间。然后在 2014 年 1 月 - 2018 年 1 月训练模型,预测 2018 年 2 月,然后训练 2014 年 1 月 - 2018 年 2 月,预测 2018 年 3 月,依此类推。下图很好地描述了这种方法。

来自预测的示例 #2 的图像:原则和实践

书中讨论了其他交叉验证的方法,我再次推荐阅读。R 有很多很棒的时间序列特定的交叉验证功能,例如 tsCV() 函数。

希望这可以帮助。祝你好运!

于 2019-11-01T14:39:10.760 回答