python ValueError:Start必须是日期。得到2016-01-01 | 2016-01-01 00:00:00

时间:2017-05-17 18:21:15

标签: python statsmodels

我正在使用statsmodels.tsa.statespace.sarimax进行预测。 这是我的代码

pprint(list(rolmean_df.index)[0])
>> datetime.date(2015, 5, 19)

mod = sm.tsa.statespace.SARIMAX(rolmean_df['IC_10_diff'], trend='n', order=(2,1,2))
results = mod.fit()
s = results.get_prediction(start = pd.to_datetime('2016-01-01').date(), dynamic= False)
>> ValueError: Start must be in dates. Got 2016-01-01 | 2016-01-01 00:00:00

我不确定我的"开始"格式错误或其他不起作用。

3 个答案:

答案 0 :(得分:10)

来自doc: http://www.statsmodels.org/dev/generated/statsmodels.tsa.statespace.sarimax.SARIMAXResults.html

  • get_forecast([steps])样本外预测
  • get_prediction([开始, end,dynamic,exog])样本内预测和样本外 预测

所以,“开始必须在日期”意味着开始应该在您的数据集中。

如果要将模型用于forecase,请使用get_forecast()。

答案 1 :(得分:1)

我几天前和你有同样的问题,现在我有一个合理的解释。

我认为此功能的开始日期和结束日期取决于您的数据集。

例如,我第一次希望开始日期等于2017-10-01',但此日期不包含在我的数据中。然后' 2017-12-01'是开始日期的值,可以编译文件,因为此日期在我的数据集中。

答案 2 :(得分:1)

我有类似的问题。您必须确保开始日期包含在rolmean_df['IC_10_diff']中。

只需打印`rolmean_df ['IC_10_diff']'中的所有值,然后选择最接近2016-01-01的值。