我正在努力使用 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:矩阵未对齐”。
我的第一个想法是length*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 http://nbviewer.ipython.org/cb6e9b476a41586958b5尽管
在网上寻找解决方案。
在In [53]:你可以看到类似的错误。作者的评论表明了样本外预测的普遍问题,对吗?
我正在运行 python 2.7.3、pandas 0.12.0-1 和 statsmodels 0.5.0-1。