-1

我有一个在 train[:350] test[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))

4

1 回答 1

0

您不需要循环,而是使用 predict 方法:

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

于 2022-03-03T08:20:45.247 回答