![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=1739283927-eUo52W1jLRYZBkIhjgTKdb0PjHP1ikVA-0-6359cd9c1b6919b925c944f8d12d5916)
图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=1739283927-5XCFSFS82MOQkBMOYnLHyxfS8pNmS7cf-0-d75382363b863943b0d003420006fd84)
然后,我们按照与前几节相同的方式计算MAPE:
![](https://epubservercos.yuewen.com/0425EF/30403329904667306/epubprivate/OEBPS/Images/38_02.jpg?sign=1739283927-KA9bR2qvlbuTD5cajdq6vZWAYwqYc8ex-0-1a5b88559c4b4f0a4a1a0b139f05ba48)
这给出了11.56%的MAPE,这是本章所有基线中最小的MAPE。图2.11说明了我们的预测与测试集中观测数据的比较。作为练习,我强烈建议你尝试自己重新创建它。
![](https://epubservercos.yuewen.com/0425EF/30403329904667306/epubprivate/OEBPS/Images/38_03.jpg?sign=1739283927-rS2g79WMiDKbrkjXyK9wch5b1UCjH9Ks-0-536d3309629ff29cc6cb3c0a18db14f0)
图2.11 测试集的原始季节性预测结果。这一预测与测试集中观测到的数据更相似,并导致最小的MAPE。显然,该数据集的季节性对未来值有影响,在预测时必须考虑这一点
正如你所看到的,在本章我们建立的所有基线中,简单的季节性预测结果MAPE是最小的。这意味着季节性对未来数值有重大影响,因为将上个季节重复到未来会产生相当准确的预测。客观地说,这是有意义的,因为在图2.11中我们可以清楚地观测到每年重复的循环模式。当我们为这个问题开发一个更复杂的预测模型时,必须考虑季节性效应。我将在第8章中详细解释如何使用它们。