模拟 ar(2) 模型产生错误信息
Simulating ar(2) model generates an error message
我是模拟的新手,尤其是在时间序列方面,所以如果这个问题看起来太幼稚,我深表歉意。我试图理解为什么模拟这个 ar(2) 模型会产生错误:
arima.sim(list(order = c(2, 0, 0), ar = c(0.7, 0.3)), n = time_n, sd=0.2)
Error in arima.sim(list(order = c(2, 0, 0), ar = c(0.7, 0.3)), n = time_n, :
'ar' part of model is not stationary
任何指针将不胜感激!
根据理论(例如参见here),为了使自回归模型平稳,如果r
是自回归多项式
的根
1 - phi_1 x - phi_2 x ...
然后
The linear AR(p) process is strictly stationary and ergodic
if and only if |rj|>1 for all j, where |rj| is the modulus of the
complex number rj.
你的情况
polyroot(c(1, -0.7, -0.3))
给出 (1,-3.333)
事实上,这是arima.sim
中的实际代码:
minroots <- min(Mod(polyroot(c(1, -model$ar))))
if (minroots <= 1)
stop("'ar' part of model is not stationary")
查看模式并懒得计算数学,我怀疑 AR2 的标准转换为 (ph1 + phi2 < 1)。
我是模拟的新手,尤其是在时间序列方面,所以如果这个问题看起来太幼稚,我深表歉意。我试图理解为什么模拟这个 ar(2) 模型会产生错误:
arima.sim(list(order = c(2, 0, 0), ar = c(0.7, 0.3)), n = time_n, sd=0.2)
Error in arima.sim(list(order = c(2, 0, 0), ar = c(0.7, 0.3)), n = time_n, :
'ar' part of model is not stationary
任何指针将不胜感激!
根据理论(例如参见here),为了使自回归模型平稳,如果r
是自回归多项式
1 - phi_1 x - phi_2 x ...
然后
The linear AR(p) process is strictly stationary and ergodic if and only if |rj|>1 for all j, where |rj| is the modulus of the complex number rj.
你的情况
polyroot(c(1, -0.7, -0.3))
给出 (1,-3.333)
事实上,这是arima.sim
中的实际代码:
minroots <- min(Mod(polyroot(c(1, -model$ar))))
if (minroots <= 1)
stop("'ar' part of model is not stationary")
查看模式并懒得计算数学,我怀疑 AR2 的标准转换为 (ph1 + phi2 < 1)。