J'essaie de faire rentrer Autoregression de sm.tsa.statespace.SARIMAX. Mais je rencontre un avertissement, puis je veux régler les informations de fréquence pour ce modèle.
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)
Merci
Si vos données sont vraiment périodiques et que votre série chronologique ne comporte pas de lacunes, pandas
peut en déduire la fréquence.
Si la fréquence déduite vous semble correcte, vous pouvez l’utiliser en suivant la réponse à Définir pandas.tseries.index.DatetimeIndex.freq avec inferred_freq
Par exemple
train.index = pd.DatetimeIndex(train.index.values,
freq=train.index.inferred_freq)
fit1 = sm.tsa.statespace.SARIMAX(...)
Mais notez que cela peut toujours donner une DatetimeIndex
dont la fréquence est None
si vos données ne sont pas vraiment périodiques.
Par exemple, si vous avez des données quotidiennes et qu’un jour est manquant, le inferred_freq
sera None
et la tentative de transmission de freq="D"
déclenchera une exception ValueError
. Dans ce cas, essayez de construire votre DataFrame
de sorte que toutes les dates soient présentes et que les valeurs de la ou des colonnes que vous prévoyez soient None
à ces dates. Ensuite, vous pouvez utiliser missing="drop"
(ou autre) avec votre modèle ARIMA
.