Python 3.x 在python中使用ARIMA进行预测-它是如何工作的?

Python 3.x 在python中使用ARIMA进行预测-它是如何工作的?,python-3.x,tensorflow,keras,arima,pmdarima,Python 3.x,Tensorflow,Keras,Arima,Pmdarima,我对如何使用ARIMA进行预测感到非常困惑 假设我们有一个名为y\u orig的系列,我们将其分为y\u train和y\u 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.s

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

假设我们有一个名为
y\u orig
的系列,我们将其分为
y\u train
y\u 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
拟合模型后,我们可以使用下面的代码进行预测

# 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\u测试进行比较。请注意,正如预期的那样,
y_测试
未在培训阶段使用。还请注意,我不是在寻找滚动预测,而是寻找参数(一旦训练)固定的长期预测

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

首先,我们在训练阶段采用了我没有展示的模型——这与我的问题无关。然后,我们使用下面的代码预测并查看样本中的拟合程度

y_pred_train=model.predict(y_train)
然后,我们对样本中的模型进行测试,如下所示:

y_pred_test=model.predict(y_test)
在这种情况下,不会重新估计参数,并且在测试阶段使用
y_test
预测下一个值(使用固定参数)

因此我对阿里玛感到困惑。为什么我们对ARIMA模型不这样做

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


非常感谢

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

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

弗雷德里克:非常感谢!!。但是“如果我不将预测与测试数据进行比较,我如何测试预测的有效性?”“你是说进行滚动预测更合适吗?”以及“我一次只能预测一个步骤?”如果是这样,那么ARIMA模型将无法与参数固定的模型进行比较。。。。。最后,在ARIMA的情况下,“不重新估计参数就不可能进行多步预测吗?”对不起,我有点困惑,为了获得
ARIMA
的准确度(=测试预测的有效性),取N个时间序列数据序列,切掉每个序列最后的
M
值,在每个第一个
(N-M)
传感器值上安装一个新的
ARIMA
模型,进行
model.forecast(N_periods=M)
预测,并计算标签(最后一个
M
值)和预测(从
model.forecast得出的结果)之间的
MSE
。这一点非常清楚。非常感谢,我就是这么做的。然而,在过去的几周里,我一遍又一遍地阅读有关ARIMA的文章,我仍然不明白为什么我们不使用AR、MA或两者中的估计棺材系数来做未来的预测。你是说ARIMA没有权重,但权重和系数对我来说是一样的,不是吗?。Y(t)=系数1*Y(t-1)+系数2*Y(t-2)+错误。。。。coeff1和coeff2仍然是权重,对吗?在这种情况下,为什么不使用它们?这是一个理论问题,而不是一个编码问题,你应该问一个新的SO问题。谢谢弗雷德里克。真的感谢你,我确实更好地理解了编码问题,但从理论上或数学上来说,我仍然不确定预测是如何进行的。你说没有重量,所以我不知道怎么做。如果你能给我一篇文章或pdf来解释这一部分,我将不胜感激。我再次感谢你的帮助弗雷德里克非常感谢!!。但是“如果我不将预测与测试数据进行比较,我如何测试预测的有效性?”“你是说进行滚动预测更合适吗?”以及“我一次只能预测一个步骤?”如果是这样,那么ARIMA模型将无法与参数固定的模型进行比较。。。。。最后,在ARIMA的情况下,“不重新估计参数就不可能进行多步预测吗?”对不起,我有点困惑,为了获得
ARIMA
的准确度(=测试预测的有效性),取N个时间序列数据序列,切掉每个序列最后的
M
值,在每个第一个
(N-M)
传感器值上安装一个新的
ARIMA
模型。预测(N\u周期=M)
并计算t