目录
- 前言
- 数据预处理
- auto_arima多步预测
- auto_arima逐步预测
- 结果对比
- SARIMAX多步预测
- SARIMAX逐步预测
- 结论
- 参考文献
前言
在做时间序列预测的时候,很多场景不只是要预测下一期的结果,称为单期预测,更多的场景是要预测未来好几期的结果,称为多期预测,与单期预测不同,多步预测对输入资料要求更高,更能看出模型的稳健性。针对多期预测,可以一次性多步预测,也可以逐步预测,这一期,我们就来看一下auto_arima下两者的区别,为此我们先做一些预处理工作。
数据预处理
经过数据预处理后,我们将一些特别异常的数据进行了识别与去除,划分出训练集和测试集,把最后的7期预留出作为测试集来计算平均绝对误差以评估模型的好坏和对比两种预测方法的区别
auto_arima多步预测
多步预测就是指在一个预测动作里面一次性把未来好几期的预测结果给出来
输出如下结果
auto_arima逐步预测
与多步预测不同,逐步预测是指每次只预测(当前的)未来一期,再将预测出来的值添加进原来训练的集合作为新的训练集,再预测下一期,如此往复,直到预测到预设的期数为止。
输出的结果如下
结果对比
对比多步预测和逐步预测两者输出的7个预测值,似乎没有很大的区别,第一个都是146.60965843758422,从第二个预测值开始才有细微的差异,在利用auto_arima预测没有区别,似乎可以推断auto_arima的多步预测本质上就是按照逐步预测进行的,再来看一下statsmodels下面的SARIMAX是不是多步预测与逐步预测一致呢?
SARIMAX多步预测
有了前面的对比,这里我们就直接上代码了
输出结果如下
SARIMAX逐步预测
输出结果如下
结论
可以看到SARIMAX的预测结果与auto_arima的预测结果截然不同,表现出2种不同的调性,SARIMAX多步预测与逐步预测也未表现出明显的差异性, 这点与auto_arima类似,似乎可以得出结论,auto_arima与SARIMAX两者在多步预测与逐步预测2种预测方式上表现几乎一致,如果以后你在做多期预测的时候,也许没必要画蛇添足逐步来完成。
参考文献
1,https://pypi.org/project/pmdarima/
2,https://www.statsmodels.org/stable/tsa.html