【问题标题】:Error using prediction with ARIMA (python statsmodels)使用 ARIMA 进行预测时出错(python statsmodels)
【发布时间】:2018-09-25 17:06:34
【问题描述】:

我有包含日期​​和随机值的数据集。以下代码正在生成数据集。

def random_dates(start, end, n=10):
        start_u = start.value//10**9
        end_u = end.value//10**9
        return pd.DatetimeIndex((10**9*np.random.randint(start_u, end_u, n)))

    start = pd.to_datetime('2017-01-01')
    end = pd.to_datetime('2018-01-12')

    days = random_dates(start, end)

    np.random.seed(seed=1111)
    data = np.random.randint(1, high=100, size=len(days))
    df = pd.DataFrame({'Date': days, 'values': data})
    df = df.set_index('Date')
    print(df)

我正在尝试在数据集上实现 ARIMA 时间序列模型,以预测 2018 年 11 月至 2018 年 12 月。从数据集图像可以看出,我在需要预测值的日期处设置了零。

我下面的代码是做预测的。但是,我在第 2 行遇到错误 get_prediction 的开始无法分配给我想要的数据框的日期值。 TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是 'Timestamp'

start = pd.to_datetime("2018-01-10")
pred = results.get_prediction(start, dynamic=False)
pred_ci = pred.conf_int()
ax = tc.plot(label='observed')
pred.predicted_mean.plot(ax=ax, label='One-step ahead Forecast', alpha=.7, figsize=(14, 7))
ax.fill_between(pred_ci.index,
                pred_ci.iloc[:, 0],
                pred_ci.iloc[:, 1], color='k', alpha=.2)
ax.set_xlabel('Date')
ax.set_ylabel('TC')
plt.legend()
plt.show()

我试图将日期索引更改为字符串,但它给出了同样的错误。请告诉我哪里出错了。谢谢

【问题讨论】:

    标签: python-3.x pandas statsmodels arima


    【解决方案1】:

    我认为这是最近才修复的 Statsmodels 中的错误 (https://github.com/statsmodels/statsmodels/pull/5250) 造成的。

    与此同时,您可以尝试以下方法(假设您的数据在变量 df 中)

    start = df.index.get_loc(pd.to_datetime("2018-01-10"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-13
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2018-01-17
      • 2016-12-08
      相关资源
      最近更新 更多