我有带有日期和随机值的数据集。以下代码正在生成数据集。
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()
我试图将日期索引更改为字符串,但它给出了相同的错误。请告诉我我哪里出问题了。谢谢
答案 0 :(得分:0)
我认为这是Statsmodels中的一个错误的结果,该错误最近才修复(https://github.com/statsmodels/statsmodels/pull/5250)。
同时,您可以尝试以下操作(假设您的数据位于变量df
中)
start = df.index.get_loc(pd.to_datetime("2018-01-10"))