我生成一些数据,如[1,6,1,6,1,6],并在正态分布下添加噪音。我使用arma_order_select_ic
来选择订单。然后使用aic_min_order来拟合ARMA模型。有时模型运行良好。但有时它会引发ValueError。
ValueError: The computed initial AR coefficients are not stationary
这是我的代码。
import statsmodels.api as sm
import numpy as np
x = [1 if i%2 == 0 else 6 for i in range(50)]
eta = np.random.normal(0, 0.01, 50)
x = x + eta
res = sm.tsa.stattools.arma_order_select_ic(x, ic=['aic'])
print res.aic_min_order
model = sm.tsa.ARMA(x, res.aic_min_order).fit(disp = 0)
print model.predict(45, 55)
我是否遗漏某些内容或ARMA不适合此类数据?
答案 0 :(得分:1)
ARMA专为静止过程而设计,默认情况下会对参数估计值产生稳定性。
您的数据不是静止的,即滞后多项式具有季节性单位根。通常的处理方法是使用季节性差异或确定性季节模式,例如使用虚拟变量或样条函数。
Statsmodels目前没有自动季节检测和模型选择,但SARIMAX可用于季节性综合ARMA流程。