在计算AR(q)的95%置信区间时调用arma2ma

时间:2013-11-13 15:20:23

标签: numpy statistics scipy time-series statsmodels

执行AR(q)拟合后,我返回了一个包含所有参数和拟合统计数据的ARResultsWrapper。计算95%置信区间应该是从AR(q)转换为MA(p),然后对这些系数进行计算,如[1]的1.0.2节所示。在Python中,此过程相当于:

forecast = model.predict(begin, end)
arparams = params[1:] # drop the constant term
ma_rep = arma2ma(np.r_[1, arparams[::-1]], [1.], forecast.size)
fcasterr = np.sqrt(self.model.sigma2 * np.cumsum(ma_rep**2))
const = norm.ppf(1 - (1-conf)/2.)
confint = np.c_[forecast -  const * fcasterr,forecast +  const * fcasterr]

但是,我是否正确调用arma2ma方法尚不清楚。我应该反转系数的顺序,否定它们(如[2,3]中所做的那样),删除常数项或直接传递所有model.params?

[1] http://faculty.washington.edu/ezivot/econ584/notes/forecast.pdf

[2] https://github.com/mkordi/pygwr/blob/b3440687b8f44b23f6a813ef0eefa0664dfb9e75/pygwr/gwstatsmodels/tsa/arima_model.py

[3] https://github.com/statsmodels/statsmodels/blob/master/statsmodels/tsa/ar_model.py

1 个答案:

答案 0 :(得分:1)

Here是我们使用arma2ma预测标准错误。如果您使用ARMA并且仅为MA术语而不是AR传递0,那么您应该得到这些。我想它永远不会被添加到AR。

要回答你的问题,你不需要反转AR系数,但你需要否定它们,因为用于scipy.signal.lfilter的ARMA表示。