web-dev-qa-db-fra.com

ValueWarning: Aucune information de fréquence n’a été fournie, donc la fréquence inférée sera utilisée par MS

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

3
Lê Ngọc Thạch

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.

1
Corey