Enkla prognoser från en skattad AR-modell
Nu när du har modellerat dina data med arima()-kommandot är du redo att göra enkla prognoser utifrån modellen. Funktionen predict() kan användas för att ta fram prognoser från en skattad AR-modell. I objektet som skapas av predict()-anropet innehåller $pred själva prognosen och $se standardfelet för prognosen.
För att göra prognoser för flera perioder efter de senaste observationerna kan du använda argumentet n.ahead i predict()-anropet. Det här argumentet anger prognoshorisont (h), det vill säga antalet perioder som prognostiseras. Prognoserna beräknas rekursivt från 1 till h steg framåt från slutet av den observerade tidsserien.
I den här övningen gör du enkla prognoser med en AR-modell anpassad till Nile-data, som innehåller årliga observationer av Nilens vattenflöde från 1871 till 1970.
Den här övningen är en del av kursen
Tidsserieanalys i R
Övningsinstruktioner
- Använd
arima()för att anpassa en AR-modell till tidserienNile. Spara resultatet somAR_fit. - Använd
predict()för att göra en prognos för Nilens vattenflöde år 1971. - Använd
predict_ARtillsammans med$pred[1]för att hämta 1-stegs-prognosen. - Gör ytterligare ett anrop till
predict()för att ta fram prognoser från 1 till 10 steg framåt (1971 till 1980). Sätt argumentetn.aheadtill10. - Kör den färdigskrivna koden för att plotta
Nile-data tillsammans med prognoserna och ett 95-procentigt prediktionsintervall.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)