【问题标题】:Unable to predict values for a given input date in ARIMA using predict() function无法使用 predict() 函数预测 ARIMA 中给定输入日期的值
【发布时间】:2019-02-11 17:19:34
【问题描述】:

我正在为 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 对象吗?它在文档中说它确实如此。

【问题讨论】:

    标签: python date datetime predict arima


    【解决方案1】:

    假设您使用的是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() 方法将 Pandas 时间戳转换为 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)
    

    【讨论】:

      猜你喜欢
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2012-12-18
      • 2020-09-09
      • 2019-07-28
      • 1970-01-01
      相关资源
      最近更新 更多