Прогнозирование еженедельных данных
При работе с еженедельными данными моделировать сезонность с помощью ETS или ARIMA затруднительно: длина сезонного периода слишком велика (примерно 52). Вместо этого можно применить гармоническую регрессию, которая использует синусы и косинусы для описания сезонности.
Функция fourier() упрощает генерацию необходимых гармоник. Чем выше порядок (\(K\)), тем более «извилистым» может быть сезонный паттерн. При \(K=1\) он представляет собой простую синусоиду. Значение \(K\) выбирается путём минимизации критерия AICc. Как было показано в видео, функция fourier() принимает временной ряд, количество генерируемых членов Фурье и необязательное количество строк для прогноза:
> # fourier(x, K, h = NULL)
> fit <- auto.arima(cafe, xreg = fourier(cafe, K = 6),
seasonal = FALSE, lambda = 0)
> fit %>%
forecast(xreg = fourier(cafe, K = 6, h = 24)) %>%
autoplot() + ylim(1.6, 5.1)
Предварительно загруженный набор данных gasoline содержит еженедельные данные об объёмах готовых моторных бензиновых продуктов в США. В этом упражнении вы построите гармоническую регрессию для этого набора данных и составите прогноз на следующие три года.
Это упражнение является частью курса
Прогнозирование в R
Инструкции к упражнению
- Создайте матрицу
xregс именемharmonics, применив методfourier()к даннымgasolineс порядком \(K=13\), который был выбран для минимизации AICc. - Подберите модель динамической регрессии и сохраните её в переменную
fit. Присвойте параметруxregзначениеharmonics, а параметруseasonal— значениеFALSE, поскольку сезонность учитывается через регрессоры. - Создайте новую матрицу
xregс именемnewharmonicsаналогичным образом, а затем вычислите прогноз на следующие три года и сохраните его в переменнуюfc. - Наконец, постройте график прогноза
fc.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Set up harmonic regressors of order 13
harmonics <- fourier(___, K = ___)
# Fit regression model with ARIMA errors
fit <- auto.arima(___, xreg = ___, seasonal = ___)
# Forecasts next 3 years
newharmonics <- fourier(___, K = ___, h = ___)
fc <- forecast(___, xreg = ___)
# Plot forecasts fc
___