Skip to main content
 首页 » 编程设计

python之statsmodels arma(1,0) 与 AR(1) 不匹配

2024年10月01日11Free-Thinker

谁能解释为什么 ARMA(1,0) 模型与 maxlags=1 的 AR 拟合不匹配?这些模型有什么不同之处?

a = [ 6.12970357,  6.13318109,  6.12992128,  6.1273058 ,  6.12839643, 
            6.12424563,  6.11080196,  6.10680013,  6.0860927 ,  6.07901746, 
            6.0872292 ,  6.08381584,  6.08107671,  6.08881808,  6.06819407, 
            6.06471499,  6.0537349 ,  6.05255967,  6.04334514,  6.03572065] 
 
 
ar1model = ar_model.AR(a).fit(maxlag=1) 
ar1model.params 

数组([-0.09735684, 1.01516508])

model10=ARMA(a, (1,0)).fit() 
model10.params 

数组([ 6.08423432, 0.97711525])

请您参考如下方法:

我的猜测是 ARMA 通过重新参数化强加了平稳性,而 AR 则没有。

此外,ARMA 常数是长期平均值,而 AR 常数来自动态方程 y_t = const + b * y_{t-1} .在 |b| < 1 的固定 AR(1) 中, 长期常数为 const / (1 - b) .

ARMA 模型的参数化是根据残差进行的,即它是一个带有 ARMA 误差的回归模型:

A(L) (y_t - const) = B(L) u_t

或在 ARMA(1,0) 情况下

y_t - const - b (y_{t-1} - const) = u_t 或为 y_t 写的 y_t = b y_{t-1} - (1 - b) const + u_t

参见示例 http://robjhyndman.com/hyndsight/arimax/http://robjhyndman.com/hyndsight/arimaconstants/对于两种可能的参数化。

结果差异的其他来源,尤其是在小样本中,可能是不同的默认初始化或不同的默认估计算法,在病态问题中,起始值也可能对最终结果产生影响。 一般来说,AR 和 ARMA 都假设过程是平稳的,而结果表明根在 1 附近并且可能不稳定。也许估计差分系列会产生更好的结果。

(我不太熟悉 statsmodels 中的 AR 实现。)