冬季外套先别急着收
最后,您将使用 ARMA(1,1) 模型预测未来 30 年的气温,并给出该估计的置信带。请注意,与 ARMA 参数相比,漂移项的估计对长期预测的影响更大。
之前,您判断气温数据服从随机游走,并查看了对数据做一阶差分。在本练习中,您将对未差分的气温数据使用 ARIMA 模块,这等同于对气温的"变化量"使用 ARMA 模块,然后对这些变化量做累积和以得到气温预测。
由于气温随时间呈上升趋势,定义 ARIMA 模型时还需要加入趋势项。在练习中,您将通过设置参数 trend='t' 使用随时间线性的趋势。您也可以尝试其他趋势模型,比较预测如何变化。例如,若使用二次趋势 $\small a+ bt + ct^2$,将 trend=[0,1,1],即可在模型中同时包含线性项 \(\small bt\) 和二次项 $\small ct^2$。
数据已预加载为名为 temp_NY 的 DataFrame。
本练习是课程的一部分
Python 中的时间序列分析
练习说明
- 创建一个名为
mod的ARIMA类实例,用于"积分"的 ARMA(1,1) 模型,即 ARIMA(1,1,1) 模型。- 在
order(p,d,q)中,d为 1,因为我们做过一次一阶差分。 - 使用
.fit()方法拟合mod,并将结果命名为res。
- 在
- 使用
res的plot_predict()方法对序列进行预测并绘图。- 将起始日期设为
1872,结束日期设为2046。
- 将起始日期设为
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_predict
# Forecast temperatures using an ARIMA(1,1,1) model
mod = ARIMA(temp_NY, trend='t', order=(1,1,1))
___ = ___.fit()
# Plot the original series and the forecasted series
fig, ax = plt.subplots()
temp_NY.plot(ax=ax)
plot_predict(___, start='1872', end='2046', ax=ax)
plt.show()