开始使用免费开始使用

冬季外套先别急着收

最后,您将使用 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 中的时间序列分析

查看课程

练习说明

  • 创建一个名为 modARIMA 类实例,用于"积分"的 ARMA(1,1) 模型,即 ARIMA(1,1,1) 模型。
    • order(p,d,q) 中,d 为 1,因为我们做过一次一阶差分。
    • 使用 .fit() 方法拟合 mod,并将结果命名为 res
  • 使用 resplot_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()
编辑并运行代码