開始使用免費開始

冬天外套先別收

最後,你要使用 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
  • 使用 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()
編輯並執行程式碼