web-dev-qa-db-ja.com

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)

ありがとう

7

データが本当に周期的で、時系列にギャップがない場合、pandasは頻度を推測できます。

推測された頻度が正しいように見える場合は、 Set pandas.tseries.index.DatetimeIndex.freq with inferred_freq の回答に従ってください。

例えば

train.index = pd.DatetimeIndex(train.index.values,
                               freq=train.index.inferred_freq)
fit1 = sm.tsa.statespace.SARIMAX(...)

ただし、データが本当に周期的でない場合、これにより、DatetimeIndexの頻度がNoneになります。

たとえば、毎日のデータがあり、1日が欠落している場合、inferred_freqNoneになり、freq="D"を渡そうとするとValueError例外が発生します。この場合、DataFrameを作成して、すべての日付が存在し、予測する列の値がそれらの日付のNoneになるようにしてください。その後、ARIMAモデルでmissing="drop"(またはその他)を使用できます。

5
Corey