![Python时间序列预测](https://wfqqreader-1252317822.image.myqcloud.com/cover/404/51549404/b_51549404.jpg)
2.5 实现简单的季节性预测
在本章中,我们考虑了前两个基线的趋势分量,但我们没有研究数据集中的另一个重要分量,即图2.10所示的季节性分量。我们的数据中有明显的周期性模式,我们可以用这些信息来构建最后一个基线:简单的季节性预测。
![](https://epubservercos.yuewen.com/0425EF/30403329904667306/epubprivate/OEBPS/Images/37_02.jpg?sign=1739319838-wTPLpyPsCeSrWSXCcUSd5zuvWOVlvwrU-0-faafebe9fb6c5d3b3c95ba5b252c5a50)
图2.10 时间序列的季节性分量。我们可以在这里看到周期性波动,这表明季节性的存在
简单的季节性预测采用上一个观测周期,并将其重复到未来。在我们的例子中,一个完整的周期发生在四个季度中,因此我们将从1979年第一季度的每股收益中提取并预测1980年第一季度的值,然后我们将从1979年第二季度的每股收益中提取并预测1980年第二季度的值。这个过程将在第三和第四季度重复。
在Python中,我们可以通过简单地获取训练集的最后四个值(对应于1979年的四个季度),并将其分配给1980年的相应季度来实现此基线。以下代码附加了pred_last_season列,以保存我们对简单的季节性预测方法的预测:
![](https://epubservercos.yuewen.com/0425EF/30403329904667306/epubprivate/OEBPS/Images/38_01.jpg?sign=1739319838-VSeiDgTVkaoWodETIF01UnyKK5tE88R4-0-f119127298383edd86d5c6d3597a942a)
然后,我们按照与前几节相同的方式计算MAPE:
![](https://epubservercos.yuewen.com/0425EF/30403329904667306/epubprivate/OEBPS/Images/38_02.jpg?sign=1739319838-giT0ERVirn1CbLevOJERLlKnkrEaFmXZ-0-9e171e0026a17204ad038e96819ac9dd)
这给出了11.56%的MAPE,这是本章所有基线中最小的MAPE。图2.11说明了我们的预测与测试集中观测数据的比较。作为练习,我强烈建议你尝试自己重新创建它。
![](https://epubservercos.yuewen.com/0425EF/30403329904667306/epubprivate/OEBPS/Images/38_03.jpg?sign=1739319838-Ze4n7DuwuxmViCSkNSoxv1mtOCicCEHU-0-8d7e64fe239e1b1a8b4fdd49f97c90e4)
图2.11 测试集的原始季节性预测结果。这一预测与测试集中观测到的数据更相似,并导致最小的MAPE。显然,该数据集的季节性对未来值有影响,在预测时必须考虑这一点
正如你所看到的,在本章我们建立的所有基线中,简单的季节性预测结果MAPE是最小的。这意味着季节性对未来数值有重大影响,因为将上个季节重复到未来会产生相当准确的预测。客观地说,这是有意义的,因为在图2.11中我们可以清楚地观测到每年重复的循环模式。当我们为这个问题开发一个更复杂的预测模型时,必须考虑季节性效应。我将在第8章中详细解释如何使用它们。