Aan de slagGa gratis aan de slag

Welk ARMA-model is het beste?

Herinner je uit Hoofdstuk 3 dat het Akaike Information Criterion (AIC) gebruikt kan worden om modellen met verschillende aantallen parameters te vergelijken. Het meet de goodness-of-fit, maar legt een straf op aan modellen met meer parameters om overfitting te ontmoedigen. Lagere AIC-scores zijn beter.

Fit de temperatuursgegevens met een AR(1), AR(2) en ARMA(1,1) en kijk welk model het beste past, gebruikmakend van het AIC-criterium. De AR(2)- en ARMA(1,1)-modellen hebben één parameter meer dan het AR(1)-model.

De jaarlijkse verandering in temperatuur staat in een DataFrame chg_temp.

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in Python

Cursus bekijken

Oefeninstructies

  • Maak voor elk ARMA-model een instantie van de ARIMA-klasse, en geef de data en de order=(p,d,q) door. p is de autoregressieve orde; q is de moving-average-orde; d is het aantal keer dat de reeks is gedifferentieerd.
  • Fit het model met de methode .fit().
  • Print de AIC-waarde, te vinden in het element .aic van de resultaten.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Import the module for estimating an ARIMA model
from statsmodels.tsa.arima.model import ARIMA

# Fit the data to an AR(1) model and print AIC:
mod_ar1 = ARIMA(chg_temp, order=(___, 0, 0))
res_ar1 = mod_ar1.fit()
print("The AIC for an AR(1) is: ", res_ar1.aic)

# Fit the data to an AR(2) model and print AIC:
mod_ar2 = ARIMA(chg_temp, order=(___, ___, ___))
res_ar2 = mod_ar2.___
print("The AIC for an AR(2) is: ", res_ar2.aic)

# Fit the data to an ARMA(1,1) model and print AIC:
mod_arma11 = ___
res_arma11 = ___
print("The AIC for an ARMA(1,1) is: ", ___)
Code bewerken en uitvoeren