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

Numpy 在计算AR(q)的95%置信区间时调用arma2ma,numpy,statistics,scipy,time-series,statsmodels,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

执行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]

[2]

[3] 是我们使用arma2ma来预测标准误差。如果你使用ARMA,只需通过0作为MA项而不是AR项,你就应该得到这些。我想它从来没有被添加到AR中

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