Как вы моделируете розничные продажи с переменной сезонностью в праздничные дни?

#python #time-series #statsmodels #forecasting

#python #временные ряды #statsmodels #прогнозирование

Вопрос:

Я использую statsmodels на python для прогнозирования еженедельных розничных продаж с помощью набора данных Walmart kaggle. У меня возникли проблемы с достижением стационарности, прежде чем я прогоню ее через SARIMA. Проблема в том, что Пасха может отличаться от года к году неделями. Как вы можете моделировать эти колебания в праздничные дни?

Я попытался выполнить поиск по сетке для наилучших (p, d, q) (P, D, Q) m параметров. Мой gridsearch вернул SARIMA (0,1,0) (0,2,0) 52 с AIC 832, но при построении графика он явно ужасно искажен (что и ожидалось, поскольку мои данные никогда не достигали стационарности с этими преобразованиями).

Есть ли у кого-нибудь рекомендации по использованию SARIMAX с учетом сезонности розничной торговли? Я знаю, что пакет R превосходит, но я не знаю R, и я надеюсь, что смогу решить эту проблему без него.

 p, d, q = 0, 1, 0
P, D, Q, m = 0, 2, 0, 52

model = SARIMAX(train11.Weekly_Sales.asfreq('W-FRI'), order=(p,d,q), seasonal_order=(P,D,Q,m),
                trend='n', enforce_stationarity=False, enforce_invertibility=False)
model_fit = model.fit()
model_fit.summary()
  
 ==========================================================================================
Dep. Variable:                       Weekly_Sales   No. Observations:                  143
Model:             SARIMAX(0, 1, 0)x(0, 2, 0, 52)   Log Likelihood                -415.101
Date:                            Tue, 02 Apr 2019   AIC                            832.202
Time:                                    21:48:24   BIC                            833.813
Sample:                                02-05-2010   HQIC                           832.770
                                     - 10-26-2012                                         
Covariance Type:                              opg                                         
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
sigma2      2.202e 08   1.77e 07     12.406      0.000    1.85e 08    2.55e 08
===================================================================================
Ljung-Box (Q):                       28.96   Jarque-Bera (JB):                77.77
Prob(Q):                              0.79   Prob(JB):                         0.00
Heteroskedasticity (H):               0.00   Skew:                            -1.44
Prob(H) (two-sided):                  0.00   Kurtosis:                         9.49
===================================================================================
  

Ответ №1:

Проще всего использовать фиктивные переменные для праздников и специальных мероприятий. SARIMAX допускает спецификацию другой объясняющей переменной в exog .

Фиктивные переменные могут быть либо для определенных дней, если есть достаточно лет, чтобы оценить, например, эффект Пасхи, или несколько праздников могут быть объединены в одной фиктивной переменной, например, несколько выходных перед Рождеством, когда количество покупок намного выше обычного.

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