Вопрос:
Я пытаюсь установить Autoregression на 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:Usersthach.leAnaconda3libsite-packagesstatsmodels-0.8.0-py3.6-win- amd64.eggstatsmodelstsabasetsa_model.py:165: ValueWarning: No frequency information was provided, so inferred frequency MS will be used. % freq, ValueWarning)
благодаря
Ответ №1
Если ваши данные действительно периодичны, и у вас нет пробелов в ваших временных рядах, тогда pandas могут вывести частоту.
Если выведенная частота выглядит правильно для вас, вы можете использовать ее, следуя ответам в Set pandas.tseries.index.DatetimeIndex.freq с inferred_freq
Например
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.