Kom igångKom igång gratis

Behåll vinterjackan ett tag till

Avslutningsvis ska du prognostisera temperaturen för de kommande 30 åren med en ARMA(1,1)-modell, inklusive konfidensband runt uppskattningen. Tänk på att driftuppskattningen har betydligt större inverkan på långsiktiga prognoser än ARMA-parametrarna.

Tidigare konstaterade du att temperaturdata följer en slumpvandring och du undersökte första differentiering av datan. I den här övningen använder du ARIMA-modulen på temperaturdata (före differentiering), vilket är identiskt med att använda ARMA-modulen på förändringar i temperatur och sedan ta kumulativa summor av dessa förändringar för att få temperaturprognosen.

Eftersom temperaturerna ökar över tid behöver du också lägga till en trendkomponent när du definierar ARIMA-modellen. I övningen använder du en linjär trend med tid genom att sätta argumentet trend='t'. Du kan även prova andra trendmodeller för att se hur prognoserna förändras. För en kvadratisk trend \(\small a+ bt + ct^2\) sätter du till exempel trend=[0,1,1], för att inkludera både en linjär term, \(\small bt\), och en kvadratisk term, \(\small ct^2\), i modellen.

Datan är förinläst i en DataFrame som heter temp_NY.

Den här övningen är en del av kursen

Tidsserieanalys i Python

Visa kurs

Övningsinstruktioner

  • Skapa en instans av klassen ARIMA kallad mod för en integrerad ARMA(1,1)-modell, det vill säga en ARIMA(1,1,1)-modell
    • d i order(p,d,q) är ett, eftersom vi differentierade en gång
    • Anpassa mod med metoden .fit() och spara resultaten som res
  • Prognostisera serien med metoden plot_predict()res
    • Välj startdatumet 1872 och slutdatumet 2046

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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()
Redigera och kör kod