Статьи

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

Это еще одна ситуация, когда термины Фурье полезны для обработки сезонности. Сезон не только довольно длинный, он не целочисленный (в среднем 365,25 ÷ 7 = 52,18). Таким образом, модели ARIMA и ETS не имеют тенденцию давать хорошие результаты, даже с периодом 52 в качестве приближения.

Регресс с ошибками ARIMA

Самый простой подход — это регрессия с ошибками ARIMA. Ниже приведен пример использования еженедельные данные по США завершили автомобильного бензина поставляемой продукции (в тысячах баррелей в день) в период с февраля 1991 года по май 2005 года обновленная версия данных доступна с сайта ОВОС . Я выбираю количество членов Фурье, минимизируя AICc. Порядок модели ARIMA также выбирается путем минимизации AICc, хотя это делается внутри auto.arima()функции.

library(forecast)
gas <- ts(read.csv("http://robjhyndman.com/data/gasoline.csv", header=FALSE)[,1], 
          freq=365.25/7, start=1991+31/7/365.25)
bestfit <- list(aicc=Inf)
for(i in 1:25)
{
  fit <- auto.arima(gas, xreg=fourier(gas, K=i), seasonal=FALSE)
  if(fit$aicc < bestfit$aicc)
    bestfit <- fit
  else break;
}
fc <- forecast(bestfit, xreg=fourierf(gas, K=12, h=104))
plot(fc)

Подогнанная модель имеет 12 пар терминов Фурье и может быть записана как

    \ [y_t = bt + \ sum_ {j = 1} ^ {12} \ left [\ alpha_j \ sin \ left (\ frac {2 \ pi jt} {52.18} \ right) + \ beta_j \ cos \ left (\ frac {2 \ pi jt} {52.18} \ right) \ right> + n_t \]

где N_Tпроцесс ARIMA (3,1,3). Поскольку N_Tмодель нестационарна, модель фактически оценивается по разностям переменных с обеих сторон этого уравнения. Вот почему нет необходимости в терминах перехвата. Существует 24 параметра для определения сезонности, что довольно много, но, очевидно, требуется в соответствии с выбором AIC. (BIC дал бы меньше.) Общее количество степеней свободы — 31 (остальные семь получены из 6 параметров ARMA и параметра дрейфа).

TBATS

Альтернативным подходом является модель TBATS, представленная De Livera et al. (JASA, 2011) . При этом используется модель пространства состояний, которая является обобщением тех, которые лежат в основе экспоненциального сглаживания. Это также позволяет автоматически преобразовывать Бокса-Кокса и ошибки ARMA. Алгоритм моделирования полностью автоматизирован:

gastbats <- tbats(gas)
fc2 <- forecast(gastbats, h=104)
plot(fc2, ylab="thousands of barrels per day")

( tbatsФункция генерирует некоторые предупреждения здесь, но все равно работает нормально. Я исправлю предупреждения в следующей версии.)

Здесь подобранная модель задается в верхней части графика как TBATS (0,999, {2,2}, 1, {<52,18,8>}). То есть преобразование Бокса-Кокса, равное 0,999 (по существу, ничего не делающее), ошибки ARMA (2,2), параметр демпфирования, равный 1 (ничего не делая), и 8 пар Фурье с периодом м = 52,18. Эта модель может быть написана как

    \ begin {align *} y_t & = \ ell_ {t-1} + b_ {t-1} + s_ {t-1} + \ alpha d_t \\ b_t & = b_ {t-1} + \ beta d_t \ \ s_t & = \ sum_ {j = 1} ^ {8} s_ {j, t} \\ s_ {j, t} & = s_ {j, t-1} \ cos \ left (\ frac {2 \ pi jt} {52.18} \ right) + s_ {j, t-1} ^ {*} \ sin \ left (\ frac {2 \ pi jt} {52.18} \ right) + \ gamma_1d_t \\ s_ {j, t } ^ * & = -s_ {j, t-1} \ sin \ left (\ frac {2 \ pi jt} {52.18} \ right) + s_ {j, t-1} ^ {*} \ cos \ left (\ frac {2 \ pi jt} {52.18} \ right) + \ gamma_2d_t, \ end {align *}

где D_Tпредставляет собой процесс АРМА (2,2) и \альфа, \бета, \ gamma_1и \ gamma_2сглаживающие параметры. Здесь сезонность была обработана с 18 параметрами (шестнадцать начальных значений для S_ {J, 0}и S_ {у, 0} ^ *и два параметра сглаживания \ gamma_1и \ gamma_2). Общее количество степеней свободы равно 26 (остальные 8 получены из двух параметров сглаживания \альфаи \бетачетырех параметров ARMA, а также значений начального уровня и наклона \ ell_0и b_0).

Какой использовать?

В этом примере прогнозы почти идентичны, и дифференцировать две модели практически невозможно. Модель TBATS предпочтительна, когда сезонность изменяется во времени или когда есть несколько сезонных периодов. Подход ARIMA предпочтителен, если есть ковариаты, которые являются полезными предикторами, поскольку они могут быть добавлены в качестве дополнительных регрессоров.