无法使用predict()函数预测ARIMA中给定输入日期的值

时间:2019-02-11 17:19:35

标签: python date datetime predict arima

我正在对Arima使用以下代码,以预测从2018-10-172018-10-22的给定日期值的输出值。但是我得到的错误是

  

错误:   “ int()参数必须是字符串,类似字节的对象或数字,而不是'Timestamp'”。

model = ARIMA(df, order=(5,1,0))
model = model.fit(disp=0)
pred = model.get_prediction(start=pd.to_datetime('2018-10-17'),
                            end=pd.to_datetime('2018-10-22'),
                            dynamic=True)

predict()不接受datetime个对象吗?它说在文档中。

1 个答案:

答案 0 :(得分:0)

假设您正在使用statsmodels.tsa.statespace.sarimax.SARIMAXResults.get_prediction,请注意startend期望intstr或日期时间。根据文档,str可以是日期字符串,因此您可以使用

pred = model.get_prediction(start='2018-10-17', 
                            end='2018-10-22',
                            dynamic=True)

Pandas TimestampsPython datetime.datetime对象不同。

如果您希望使用日期时间,请使用Timestamp.to_pydatetime()方法将“熊猫时间戳”转换为Python datetime.datetime对象:

In [181]: pd.to_datetime('2018-10-17')
Out[181]: Timestamp('2018-10-17 00:00:00')

In [180]: pd.to_datetime('2018-10-17').to_pydatetime()
Out[180]: datetime.datetime(2018, 10, 17, 0, 0)

或直接直接创建datetime.datetime对象:

In [184]: import datetime as DT

In [185]: DT.datetime(2018,10,17)
Out[185]: datetime.datetime(2018, 10, 17, 0, 0)

pred = model.get_prediction(start=DT.datetime(2018, 10, 17), 
                            end=DT.datetime(2018, 10, 22),
                            dynamic=True)