Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Maak een instantie van de ARIMA-klasse genaamd mod voor een geïntegreerd ARMA(1,1)-model, oftewel een ARIMA(1,1,1)-model
    • De d in order(p,d,q) is één, omdat we één keer eerste verschillen hebben genomen
    • Fit mod met de methode .fit() en noem de resultaten res
  • Voorspel de reeks met de methode plot_predict() op res
    • Kies als startdatum 1872 en als einddatum 2046

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()
Code bewerken en uitvoeren