【问题标题】:Forecasting/prediction using ARIMA in python - how does it work?在 python 中使用 ARIMA 进行预测/预测 - 它是如何工作的?
【发布时间】:2020-05-30 09:49:59
【问题描述】:

我对如何使用 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 模型做同样的事情?

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

非常感谢!!

【问题讨论】:

    标签: python-3.x tensorflow keras arima pmdarima


    【解决方案1】:

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

    【讨论】:

    • Frederik 非常感谢!!但是,“如果我不将预测与测试数据进行比较,我该如何测试它的有效性?” “你的意思是滚动预测更合适吗?”并且“我一次只能预测一个步骤?”......如果是这样,那么 ARIMA 模型将无法与参数固定的模型相媲美......最后,在 ARIMA 的情况下,“这不可能在不重新估计参数的情况下进行多步预测?对不起,我有点困惑
    • 要获得ARIMA 的准确度(=测试预测的有效性),取N 个时序数据序列,将每个序列的最后一个M 值切掉,拟合一个新的@ 987654335@ 模型在每个第一个 (N-M) 传感器值上,执行 model.forecast(n_periods=M) 并计算标签(最后一个 M 值)和预测(来自 model.forecast)之间的 MSE。跨度>
    • 这个很清楚。非常感谢,这正是我所做的。然而,在过去的几周里,我一遍又一遍地阅读 ARIMA,我仍然无法理解为什么我们不使用 AR、MA 或两者中的估计系数来进行未来的预测。您是说 ARIMA 没有权重,但权重和系数对我来说是一回事,不是吗? Y(t) = coeff1 * Y(t-1) + coeff 2 * Y(t-2) + error .... coeff1 和 coeff2 仍然是权重,对吧?在这种情况下,为什么不使用它们?非常感谢
    • 这更像是一个理论问题而不是编码问题,你应该问一个新的 SO 问题。
    • 谢谢弗雷德里克。多亏了你,我确实更好地理解了编码问题,但从理论上或数学上我仍然不确定预测是如何完成的。你说没有重量,所以我不确定它是如何完成的。如果您能指出我解释这部分的文章或 pdf,将不胜感激。再次感谢您的所有帮助
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2023-03-30
    • 1970-01-01
    • 2016-02-13
    • 2017-06-26
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多