Prognoze simple dintr-un model AR estimat
Acum că ți-ai modelat datele folosind comanda arima(), ești pregătit să faci prognoze simple pe baza modelului tău. Funcția predict() poate fi utilizată pentru a genera prognoze dintr-un model AR estimat. În obiectul generat de comanda predict(), valoarea $pred reprezintă prognoza, iar valoarea $se este eroarea standard a prognozei.
Pentru a face predicții pentru mai multe perioade dincolo de ultimele observații, poți folosi argumentul n.ahead în comanda predict(). Acest argument stabilește orizontul de prognoză (h), adică numărul de perioade prognozate. Prognozele sunt calculate recursiv, de la 1 până la h pași înainte față de sfârșitul seriei de timp observate.
În acest exercițiu, vei face prognoze simple folosind un model AR aplicat pe datele Nile, care înregistrează observații anuale ale debitului râului Nil din 1871 până în 1970.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în R
Instrucțiuni pentru exercițiu
- Folosește
arima()pentru a ajusta un model AR la seria de timpNile. Salvează rezultatul caAR_fit. - Folosește
predict()pentru a prognoza debitul Nilului în 1971. - Folosește
predict_ARîmpreună cu$pred[1]pentru a obține prognoza la 1 pas înainte. - Apelează din nou
predict()pentru a genera prognoze de la 1 până la 10 pași înainte (1971–1980). Pentru aceasta, setează argumentuln.aheadla valoarea10. - Rulează codul predefinit pentru a reprezenta grafic datele
Nile, prognozele și intervalul de predicție de 95%.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)