执行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
[3] https://github.com/statsmodels/statsmodels/blob/master/statsmodels/tsa/ar_model.py
答案 0 :(得分:1)
Here是我们使用arma2ma预测标准错误。如果您使用ARMA并且仅为MA术语而不是AR传递0,那么您应该得到这些。我想它永远不会被添加到AR。
要回答你的问题,你不需要反转AR系数,但你需要否定它们,因为用于scipy.signal.lfilter的ARMA表示。