Eenvoudige voorspellingen met een geschat AR-model
Nu je je data hebt gemodelleerd met het arima()-commando, ben je klaar om eenvoudige voorspellingen te maken op basis van je model. De functie predict() kan worden gebruikt om voorspellingen te maken met een geschat AR-model. In het object dat je predict()-commando oplevert, is de waarde $pred de voorspelling, en de waarde $se de standaardfout van de voorspelling.
Om voorspellingen te maken voor meerdere perioden na de laatste waarnemingen, kun je het argument n.ahead gebruiken in je predict()-commando. Dit argument bepaalt de voorspellingshorizon (h), oftewel het aantal te voorspellen perioden. De voorspellingen worden recursief gemaakt van 1 tot en met h stappen vooruit vanaf het einde van de geobserveerde tijdreeks.
In deze oefening maak je eenvoudige voorspellingen met een AR-model toegepast op de Nile-data, die jaarlijkse waarnemingen bevat van de afvoer van de Nijl van 1871 tot 1970.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in R
Oefeninstructies
- Gebruik
arima()om een AR-model te fitten op de tijdreeksNile. Sla dit op alsAR_fit. - Gebruik
predict()om een voorspelling te maken voor de afvoer van de Nijl in 1971. - Gebruik
predict_ARsamen met$pred[1]om de 1-stapsvoorspelling op te halen. - Gebruik nog een aanroep van
predict()om voorspellingen te maken van 1 stap vooruit tot 10 stappen vooruit (1971 tot 1980). Stel hiervoor hetn.ahead-argument gelijk aan10. - Voer de voorgecodeerde regels uit om je
Nile-data plus de voorspellingen en een 95%-voorspellingsinterval te plotten.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Fit an AR model to Nile
AR_fit <- arima(___, order = ___)
print(AR_fit)
# Use predict() to make a 1-step forecast
predict_AR <- predict(___)
# Obtain the 1-step forecast using $pred[1]
# Use predict to make 1-step through 10-step forecasts
predict(___, n.ahead = ___)
# Run to plot the Nile series plus the forecast and 95% prediction intervals
ts.plot(Nile, xlim = c(1871, 1980))
AR_forecast <- predict(AR_fit, n.ahead = 10)$pred
AR_forecast_se <- predict(AR_fit, n.ahead = 10)$se
points(AR_forecast, type = "l", col = 2)
points(AR_forecast - 2*AR_forecast_se, type = "l", col = 2, lty = 2)
points(AR_forecast + 2*AR_forecast_se, type = "l", col = 2, lty = 2)