无论传递外源变量数组,使用ARMAX(0,2)模型进行预测都会产生相同的结果

时间:2016-06-09 00:17:42

标签: python statsmodels

我使用statsmodels ARMA功能使用带有1个外生变量的ARMAX(0,2)模型生成预测,并且得到了违反直觉的结果。

无论在预测函数中传递给exog的外生变量(例如arma_res.forecast(steps = 5, exog = f_exog)),都会返回相同的预测数组,但最后一个元素除外。

例如:

arparams = np.array([0])
maparams = np.array([.65, .35])

arparams = np.r_[1, -arparams]
maparam = np.r_[1, maparams]
nobs = 250
y = arma_generate_sample(arparams, maparams, nobs)

exog = np.random.normal(size=nobs)

arma_mod = sm.tsa.ARMA(y, order=(0, 2), exog=exog)
arma_res = arma_mod.fit(trend='nc', disp=-1)

# Exogenous vars for forecasts
f_exog = [10, 10, 10, 10, 10]
f_exog_2 = [x * 5 for x in f_exog]

forecast_1 = arma_res.forecast(steps=5, exog=f_exog)[0]
forecast_2 = arma_res.forecast(steps=5, exog=f_exog_2)[0]

制作预测:

array([-0.0884847 , -0.03223685, -0.00190045, -0.00860229,  0.0987421 ])
array([-0.0884847 , -0.03223685, -0.00190045, -0.00860229,  0.49371049])

具有此设置的笔记本位于:https://github.com/dbrodSq/ARMA_Test/blob/master/Statsmodels_forecast_example.ipynb

无论"步骤如何,上述模式都成立。参数。有谁知道为什么?

我相信使用Statsmodels可以预测多个时段的ARMAX,并且我不相信只要k_ar!= 0(即至少有一个AR参数),就会发生上述类似的问题。

道歉,如果我错过了一些明显的东西,并且非常感谢你的帮助。

0 个答案:

没有答案