Прості прогнози з оціненої 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)