我的目标是使用python构建一个程序,该程序可以获取多个时间序列样本,这些样本具有从0到9天的数据,并将这些样本用作训练数据,以使用ARIMA拟合预测模型。应该使用预测模型来获取一个仅包含第0天到第3天数据的新样本,并预测第4天到第9天的数据。
现在,我的问题是我不知道如何构建具有多个样本的预测模型。似乎ARIMA函数只能获取一个样本来建立预测模型。我尝试使用外生变量,但是如果我输入多个变量,则会不断收到错误消息。
model = {}
model_fit = {}
errors = 0
for col in df.columns:
try:
model[col] = ARIMA(df[col], order=(1,0,0))# dates = df["DateIndex"])
model_fit[col] = model[col].fit(disp=0) #, batch_size = 11, nb_epoch = 11)
#print(model_fit[col].summary())
#plot residual errors
plt.figure()
residuals = pd.DataFrame(model_fit[col].resid)
residuals.plot()
residuals.plot(kind='kde')
#print(residuals.describe())
except Exception as e:
print(col, 'failed:',e)
errors += 1
print(errors,'model fits failed')
plt.show()
h = plt.figure(figsize=(20,len(df.columns)))
ncols = 4
nrows = round(len(df.columns)/ncols)
x_vars = ["D0", "D3", "D4", "D5", "D6", "D7", "D8", "D9"]
for i, col in enumerate(df.columns):
try:
ax = h.add_subplot(nrows,ncols,i+1)
start = 0
end = len(df[col])
plt.plot(x_vars, df[col].values[start:end], label = col)
plt.plot(x_vars, model_fit[col].predict(start=start+1,end=end), label = col + ' Model')
plt.legend()
except Exception as e:
print(col,'failed:',e)
plt.show()
我的结果是显示预测数据和实际数据的多个图形。问题在于预测数据仅基于一个样本。是否可以使用ARIMA使用多个样本创建预测模型?