繁体   English   中英

传递exog值时,ARMAX模型预测会导致“ ValueError:矩阵未对齐”

[英]ARMAX model forecasting leads to “ValueError: matrices are not aligned” when passing exog values

我正在努力使用ARMAX模型预测样本值。

拟合模型效果很好。

armax_mod31 = sm.tsa.ARMA(endog = sales, order = (3,1), exog = media).fit()
armax_mod31.fittedvalues

就我所拥有的模型而言,在没有外生值的情况下进行预测也很好。

arma_mod31 = sm.tsa.ARMA(sales, (3,1)).fit()
all_arma = arma_mod31.forecast(steps = 14, alpha = 0.05)
forecast_arma = Series(res_arma[0], index = pd.date_range(start = "2013-08-21", periods = 14)) 
ci_arma = DataFrame(res_arma[2], columns = ["lower", "upper"])

但是,一旦我要从样本值中进行预测,就会遇到问题。

all_armax = armax_mod31.forecast(steps = 14, alpha = 0.05, exog = media_out)

导致“ ValueError:矩阵未对齐”。

我的第一个想法是* media_out *的长度不合适。 我检查了几次,并尝试通过其他系列作为exog。 exog的长度与步骤数相同。 我尝试了一个时间序列,也只尝试了* media_out.values *。

检查了文档:

"exog : array
If the model is an ARMAX, you must provide out of sample
values for the exogenous variables. This should not include
the constant."

据我了解,这就是我的工作。 有什么想法我做错了吗? 另外,我在网上寻找解决方案时发现了这个ipython笔记本http://nbviewer.ipython.org/cb6e9b476a41586958b5 在[53]中:您可以看到类似的错误。 作者的评论暗示了样本外预测的一个普遍问题,对吗?

我正在运行python 2.7.3,pandas 0.12.0-1和statsmodels 0.5.0-1。

嗯,我明白了。 您还需要传递过去的数据。 例如,如果要预测ARMAX(2,q)模型的12个步骤,则exog的长度应为14。您需要两个额外的滞后才能预测1个步骤。 因此,如果您确保exog为2d,这应该可以正常工作。

无论如何我都看不到,但是如果您认为有什么需要改进的地方,请告诉我。 现在,我将在文档中将其记录下来。

[ 编辑 :我意识到这个要求很愚蠢。 使用ARMA预测https://github.com/statsmodels/statsmodels/pull/1124时,您不再需要提供任何样本变量 ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM