我对如何使用ARIMA进行预测/预测感到非常困惑。
假设我们有一个名为y_orig
的系列,我们将其分为y_train
和y_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模型做同样的事情?
请帮助我理解,因为我非常困惑。
非常感谢!!
我想你对ARIMA
代码块中的.fit
和y_train
有点困惑。y_train
在这里只是一个命名不佳的变量,它应该只是y
,我想要预测的数据。ARIMA
模型没有训练/测试阶段,它不是自学。它对输入数据进行统计分析,并进行预测。如果要进行另一个预测(y_test
(,则需要进行另一个统计分析(使用model.fit
(并执行另一个预测(使用model.forecast
(。ARIMA
模型在训练阶段没有任何训练weights
,与任何先前"拟合"的数据相关的任何内容都不会保存在模型中。不能使用"拟合"ARIMA
模型来预测其他数据样本。