执行 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
[3] https://github.com/statsmodels/statsmodels/blob/master/statsmodels/tsa/ar_model.py