ValueWarning: Информация о частоте не была предоставлена, поэтому будет использоваться MS предполагаемой частоты
Я пытаюсь подогнать авторегрессию по sm.tsa.statespace.SARIMAX. Но я встречаю предупреждение, тогда я хочу установить частоту информации для этой модели. Кто встречался с этим, вы можете мне помочь?
fit1 = sm.tsa.statespace.SARIMAX(train.Demand, order=(1, 0, 0),
enforce_stationarity=False,
enforce_invertibility=False).fit()
y_hat['AR'] = fit1.predict(start="1975-01-01", end="1975-12-01", dynamic=True)
plt.figure(figsize=(16,8))
plt.plot( train['Demand'], label='Train')
plt.plot(test['Demand'], label='Test')
plt.plot(y_hat_avg['AR'], label='AR')
plt.legend(loc='best')
plt.show()
C:\Users\thach.le\Anaconda3\lib\site-packages\statsmodels-0.8.0-py3.6-win-
amd64.egg\statsmodels\tsa\base\tsa_model.py:165: ValueWarning: No frequency
information was provided, so inferred frequency MS will be used.
% freq, ValueWarning)
Спасибо
1 ответ
Если ваши данные действительно периодические, и у вас нет пробелов во временных рядах, тогда pandas
могу вывести частоту.
Если выведенная частота выглядит для вас правильно, вы можете использовать ее, следуя ответу на /questions/38311948/ustanovite-pandastseriesindexdatetimeindexfreq-s-pomoschyu-inferredfreq
Например
train.index = pd.DatetimeIndex(train.index.values,
freq=train.index.inferred_freq)
fit1 = sm.tsa.statespace.SARIMAX(...)
Но обратите внимание, что это все еще может дать DatetimeIndex
чья частота None
если ваши данные не являются действительно периодическими.
Например, если у вас есть ежедневные данные и один день отсутствует, то inferred_freq
будет None
и пытается пройти freq="D"
поднимет ValueError
исключение. В этом случае попробуйте собрать DataFrame
чтобы присутствовали все даты, а значения в столбцах, которые вы прогнозируете, None
в эти даты. Тогда вы можете использовать missing="drop"
(или что угодно) с вашим ARIMA
модель.