0

执行 AR(q) 拟合后,我返回一个 ARResultsWrapper,其中包含所有参数和拟合统计信息。计算 95% 置信区间应该是从 AR(q) 转换为 MA(p),然后对这些系数进行 cumsum,如 [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

4

1 回答 1

1

是我们使用 arma2ma 预测标准误差的方法。如果您使用 ARMA 并且只为 MA 项而不是 AR 传递 0,您应该得到这些。我猜它从未被添加到 AR 中。

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

于 2013-11-15T08:28:03.507 回答