冬天外套先別收
最後,你要使用 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 中的時間序列分析
練習說明
- 建立
ARIMA類別的實例mod,用於「整合式」的 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()