НачатьНачать бесплатно

Прогнозирование еженедельных данных

При работе с еженедельными данными моделировать сезонность с помощью 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
___
Редактировать и запускать код