Forecasting/prediction 在 python 中使用 ARIMA - 它是如何工作的?
Forecasting/prediction using ARIMA in python - how does it work?
我对如何 predict/forecast 使用 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
模型没有training/test阶段,不是自学习。它对输入数据进行统计分析,并进行预测。如果你想再做一次预测(在y_test
),你需要再做一次统计分析(使用model.fit
)和再做一次预测(使用model.forecast
)。 ARIMA
模型在训练阶段没有任何 weights
训练,模型中没有保存任何与先前数据 'fitted' 相关的内容。您不能使用 "fitted" ARIMA
模型来预测其他数据样本。
我对如何 predict/forecast 使用 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
模型没有training/test阶段,不是自学习。它对输入数据进行统计分析,并进行预测。如果你想再做一次预测(在y_test
),你需要再做一次统计分析(使用model.fit
)和再做一次预测(使用model.forecast
)。 ARIMA
模型在训练阶段没有任何 weights
训练,模型中没有保存任何与先前数据 'fitted' 相关的内容。您不能使用 "fitted" ARIMA
模型来预测其他数据样本。