Сравнение auto.arima() и ets() на сезонных данных
Как формировать обучающую и тестовую выборки, если данные имеют частоту выше годовой? В таких случаях в параметры start и/или end функции window() можно передавать вектор вида c(год, период). Также важно правильно задавать значение h в функциях прогнозирования: h должно быть равно длине тестовой выборки.
Например, если ваши данные охватывают 15 лет, обучающая выборка состоит из первых 10 лет, а вы хотите спрогнозировать последние 5 лет, следует использовать h = 12 * 5, а не h = 5 — ведь тестовая выборка содержит 60 ежемесячных наблюдений. Если же обучающая выборка охватывает первые 9,5 лет, а прогноз строится на последние 5,5 лет, нужно задать h = 66, чтобы учесть дополнительные 6 месяцев.
В заключительном упражнении этой главы вы сравните сезонные модели ARIMA и ETS, применив их к квартальным данным о производстве цемента qcement. Поскольку ряд достаточно длинный, вместо кросс-валидации на временных рядах можно использовать обучающую и тестовую выборки — это значительно быстрее.
Набор данных qcement уже доступен в вашем рабочем пространстве.
Это упражнение является частью курса
Прогнозирование в R
Инструкции к упражнению
- Создайте обучающую выборку
train, охватывающую 20 лет данныхqcement: с 1988 года по последний квартал 2007 года включительно. Для параметраendиспользуйте вектор. Оставшиеся данные составят тестовую выборку. - Подберите модели ARIMA и ETS на обучающих данных и сохраните их в переменные
fit1иfit2соответственно. - Как и в предыдущих упражнениях, проверьте, что остатки обеих моделей являются белым шумом.
- Постройте прогнозы для оставшихся данных с помощью обеих моделей и сохраните их в
fc1иfc2соответственно. Задайтеhравным общему числу кварталов в тестовой выборке. Обратите внимание: последнее наблюдение вqcementне приходится на последний квартал года! - С помощью функции
accuracy()определите лучшую модель по значению RMSE и сохраните её в переменнуюbettermodel.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Use 20 years of the qcement data beginning in 1988
train <- window(___, start = ___, end = ___)
# Fit an ARIMA and an ETS model to the training data
fit1 <- ___
fit2 <- ___
# Check that both models have white noise residuals
___
___
# Produce forecasts for each model
fc1 <- forecast(___, h = ___)
fc2 <- forecast(___, h = ___)
# Use accuracy() to find better model based on RMSE
accuracy(___, ___)
accuracy(___, ___)
bettermodel <- ___