Python 3.x 在python中使用ARIMA进行预测-它是如何工作的?
我对如何使用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
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