Gooi die winterjas nog niet weg
Tot slot ga je de temperatuur voor de komende 30 jaar voorspellen met een ARMA(1,1)-model, inclusief betrouwbaarheidsbanden rond die schatting. Houd er rekening mee dat de schatting van de drift veel meer invloed heeft op langetermijnvoorspellingen dan de ARMA-parameters.
Eerder heb je vastgesteld dat de temperatuurdata een random walk volgt en heb je gekeken naar eerste verschillen. In deze oefening gebruik je de ARIMA-module op de temperatuurdata (vóór het nemen van verschillen). Dat is identiek aan het toepassen van de ARMA-module op veranderingen in temperatuur, gevolgd door cumulatieve sommen van deze veranderingen te nemen om de temperatuurvoorspelling te krijgen.
Omdat temperaturen in de loop van de tijd stijgen, moet je ook een trendcomponent toevoegen wanneer je het ARIMA-model definieert. In de oefening gebruik je een lineaire trend in de tijd door het argument trend='t' te zetten. Je kunt ook andere trendmodellen proberen om te zien hoe de voorspellingen veranderen. Bijvoorbeeld, voor een kwadratische trend \(\small a+ bt + ct^2\) zet je trend=[0,1,1], om zowel een lineaire term, \(\small bt\), als een kwadratische term, \(\small ct^2\), in het model op te nemen.
De data is voorgeladen in een DataFrame met de naam temp_NY.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in Python
Oefeninstructies
- Maak een instantie van de
ARIMA-klasse genaamdmodvoor een geïntegreerd ARMA(1,1)-model, oftewel een ARIMA(1,1,1)-model- De
dinorder(p,d,q)is één, omdat we één keer eerste verschillen hebben genomen - Fit
modmet de methode.fit()en noem de resultatenres
- De
- Voorspel de reeks met de methode
plot_predict()opres- Kies als startdatum
1872en als einddatum2046
- Kies als startdatum
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()