Простые прогнозы на основе оценённой AR-модели
Теперь, когда данные смоделированы с помощью функции arima(), можно перейти к построению простых прогнозов. Функция predict() позволяет получать прогнозы на основе оценённой AR-модели. В объекте, который возвращает predict(), значение $pred содержит прогноз, а $se — стандартную ошибку прогноза.
Чтобы строить прогнозы на несколько периодов вперёд относительно последнего наблюдения, используйте аргумент n.ahead в функции predict(). Он задаёт горизонт прогнозирования (h), то есть количество периодов. Прогнозы строятся рекурсивно — от 1 до h шагов вперёд от конца наблюдаемого временного ряда.
В этом упражнении вы построите простые прогнозы с помощью AR-модели, применённой к данным Nile — ряду годовых наблюдений расхода воды в реке Нил с 1871 по 1970 год.
Это упражнение является частью курса
Анализ временных рядов в R
Инструкции к упражнению
- С помощью
arima()подберите AR-модель для временного рядаNile. Сохраните результат в переменнуюAR_fit. - С помощью
predict()постройте прогноз расхода воды в Ниле на 1971 год. - Используйте
predict_ARвместе с$pred[1], чтобы получить прогноз на 1 шаг вперёд. - Снова вызовите
predict(), чтобы построить прогнозы от 1 до 10 шагов вперёд (с 1971 по 1980 год). Для этого задайте аргументn.aheadравным10. - Запустите готовый код, чтобы отобразить данные
Nile, прогнозы и 95%-й доверительный интервал прогноза.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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)