Python时间序列预测
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 预测最后一年的均值

从以前的基线中吸取的教训是,由于数据集中的正向趋势分量,早期的数值似乎在长期内不能预测未来值。早期的数值似乎太小,不能代表每股收益在1979年底和1980年达到的新水平。

如果我们使用训练集中最后一年的均值来预测下一年呢?这意味着我们将计算1979年的平均每股收益,并对1980年的每个季度进行预测——随着时间的推移而增加的更近的值可能更接近1980年观察到的值。目前,这只是一个假设,因此让我们实施此基线并进行测试,以理解其表现如何。

我们的数据已经拆分为测试集和训练集(在2.2.1节中完成),因此我们可以继续计算训练集中最后一年的均值,它对应于1979年的最后四个数据点:

这使平均每股收益为12.96美元。因此,我们将预测强生公司在1980年四个季度的EPS为12.96美元。使用与之前基线相同的过程,我们将创建一个新的pred__last_yr_mean列,以保存去年的均值作为预测:

然后,使用我们之前定义的mape函数,我们可以评估新基线的性能。请记住,第一个参数是观测值,保存在测试集中。然后,我们传入预测值,这些位于pred__last_yr_mean列中:

这给了我们15.60%的MAPE值。我们可以在图2.8中看到预测。

你能重新创建图2.8吗

作为练习,尝试重新创建图2.8,以使用1979年的季度均值来可视化预测。代码应与清单2.1相同,只是这次预测在不同的列中。

图2.8 预测训练集最后一年(1979)的均值作为基线模型。你可以看到,与之前我们在图2.6中构建的基线相比,预测更接近测试集的实际值

这个新的基线比以前的基线有了明显的改进,尽管它的实施同样简单,因为我们将MAPE从70%降低到了15.6%。这意味着预测值平均偏离观测值15.6%。使用去年的均值是朝着正确方向迈出的一大步。我们希望获得尽可能接近0%的MAPE,因为这将转化为更接近我们预测范围内实际值的预测。

我们可以从这个基线中理解到,未来的数值很可能取决于历史上不太久远的过去的数值。这是自相关的标志,我们将在第5章深入探讨这一主题。现在,让我们看看可以为这种情况开发的另一个基线。