我有一个在train[:350]测试[350:427]值的数据集中训练的arima模型。我在训练值中拟合模型,我的(p,d,q(值为(1,1,2(。目前我一次只能预测一个时间步长。我想循环运行模型,以便每次它输出一个预测值时,它都会被添加到火车数据集,并且新值用于预测另一个新的预测值。我不知道该怎么做,到目前为止,这就是我所拥有的。
historical = train['max']
predictions = []
for t in range(len(test)):
model = ARIMA(historical, order=(1,1,2))
model_fit = model.fit()
output = model_fit.forecast(exog=test['max'][t])
predictions.append(output)
observed = test['max'][t]
historical.append(predictions)
print(len(historical))
您不需要循环,而是使用预测方法:
model_fit.predict(start, end, endog=test["max"], dynamic=True)
在这种情况下,ARIMA会将预测值添加到您的数据中,以便进行新的预测。如果你想用实际值更新你的数据,你可以设置dynamic=False
https://www.statsmodels.org/dev/generated/statsmodels.tsa.arima.model.ARIMAResults.predict.html#statsmodels.tsa.arima.model.ARIMAResults.predict