0

我对如何使用 ARIMA 进行预测/预测感到非常困惑。

假设我们有一个名为的系列y_orig,我们分为y_trainy_test。假设它y_orig不是静止的,我们可以使用下面的代码拟合 ARIMA

# fit ARIMA model
from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(y_train, order=(2,1,2))
model_fit = model.fit(disp=0)
print(model_fit.summary())

拟合模型后,我们可以使用下面的代码进行预测

n_periods = len(`y_test`)

fc, -, - = model_fit.forecast(n_periods, alpha=0.05)  # 95% conf

该值fc应该给出一个预测,然后我与之比较y_test。请注意,正如预期的那样,y_test在训练阶段不使用。另请注意,我不是在寻找滚动预测,而是在寻找参数(一旦训练)固定的长期预测。

我很困惑,因为y_test在预测阶段根本没有使用。
例如,如果我们要使用其他预测模型(如 Keras 或 tensorflow)。我们会这样编码。

首先,我们将模型拟合到我没有展示的训练阶段——这对我的问题无关紧要。in sample然后我们使用下面的代码预测并查看我们的拟合程度。

y_pred_train=model.predict(y_train)

然后我们测试模型out of sample如下:

y_pred_test=model.predict(y_test)

在这种情况下,参数不会重新估计,y_test而是在测试阶段用于预测下一个值(具有固定参数)。

因此,我对 ARIMA 感到困惑。为什么我们不对 ARIMA 模型做同样的事情?

请帮助我理解,因为我很困惑。

非常感谢!!

4

1 回答 1

2

我认为您对代码块中的.fit和有点困惑。在这里只是一个命名不佳的变量,它应该只是,我要预测的数据。该模型没有训练/测试阶段,它不是自学的。它对输入数据进行统计分析,并进行预测。如果要进行另一次预测(在 上),则需要进行另一次统计分析(使用)并进行另一次预测(使用)。该模型在训练阶段没有任何训练,与任何先前“拟合”的数据相关的任何内容都不会保存在模型中。您不能使用“拟合”模型来预测其他数据样本。y_trainARIMAy_trainyARIMAy_testmodel.fitmodel.forecastARIMAweightsARIMA

于 2020-05-30T10:09:32.257 回答