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
Oefeninstructies
- Maak voor elk ARMA-model een instantie van de
ARIMA-klasse, en geef de data en deorder=(p,d,q)door.pis de autoregressieve orde;qis de moving-average-orde;dis het aantal keer dat de reeks is gedifferentieerd. - Fit het model met de methode
.fit(). - Print de AIC-waarde, te vinden in het element
.aicvan 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: ", ___)