#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 не сможет фиксировать эффекты, подобные Пасхе, потому что даже с сезонностью в один год праздничный день не будет иметь регулярной продолжительности цикла.