Proste prognozy na podstawie oszacowanego modelu AR
Masz już dopasowany model za pomocą funkcji arima() – czas na proste prognozy. Funkcja predict() pozwala tworzyć prognozy na podstawie oszacowanego modelu AR. W obiekcie zwróconym przez predict() wartość $pred to prognoza, a $se to błąd standardowy tej prognozy.
Aby prognozować na kilka okresów do przodu względem ostatniej obserwacji, możesz użyć argumentu n.ahead w funkcji predict(). Argument ten określa horyzont prognozy (h), czyli liczbę prognozowanych okresów. Prognozy są wyznaczane rekurencyjnie od 1 do h kroków do przodu, poczynając od końca obserwowanego szeregu czasowego.
W tym ćwiczeniu stworzysz proste prognozy przy użyciu modelu AR dopasowanego do danych Nile, które zawierają roczne obserwacje przepływu Nilu w latach 1871–1970.
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w R
Instrukcje do ćwiczenia
- Użyj
arima(), aby dopasować model AR do szeregu czasowegoNile. Zapisz wynik jakoAR_fit. - Użyj
predict(), aby prognozować przepływ Nilu w 1971 roku. - Skorzystaj z
predict_ARwraz z$pred[1], aby uzyskać prognozę 1-krokową. - Wywołaj ponownie
predict(), aby wygenerować prognozy od 1 do 10 kroków do przodu (lata 1971–1980). W tym celu ustaw argumentn.aheadna10. - Uruchom gotowy kod, aby zwizualizować dane
Nilewraz z prognozami i 95-procentowym przedziałem predykcji.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)