ValueWarning:未提供频率信息,因此将使用推断的频率MS

Lê *_*ạch 7 python frequency statsmodels

我尝试通过sm.tsa.statespace.SARIMAX拟合Autoregression。但是我遇到警告,然后我想为此模型设置频率信息。谁曾经遇到过,您能帮我吗?

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)
Run Code Online (Sandbox Code Playgroud)

谢谢

Cor*_*rey 5

如果您的数据确实是周期性的,并且时间序列中没有间隔,则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(...)
Run Code Online (Sandbox Code Playgroud)

但是请注意,如果您的数据不是真正的周期性数据,这仍然可以给出DatetimeIndex其频率None

例如,如果您有每日数据,但缺少一天,inferred_freq则将通过None尝试并通过freq="D"将引发ValueError异常。在这种情况下,请尝试构建您的报告,DataFrame以便所有日期都存在,并且您预测的列中的值都None在这些日期上。然后,您可以missing="drop"ARIMA模型中使用(或其他方法)。