为什么Arima.sim会返回非静态AR模型的错误消息?

问题描述 投票:1回答:1

当我在R中使用Arima.sim模拟Ar模型时,它返回了一条错误消息。

“arima.sim中的错误......模型的一部分不是固定的”

例如:

set.seed(1)
ar = arima.sim(n = 400, list(ar = c(2)), sd = 1)

Error in arima.sim(n = 400, list(ar = c(2)), sd = 1) : 
  'ar' part of model is not stationary

我在网上查了一下,有迹象表明arima.sim无法处理非静止模型或某些季节性模型。为什么失败了?它与用于生成随机数的算法有什么关系吗?

r arima
1个回答
0
投票

AR(1)模型与i.i.d.如果自回归参数r满足| r | <1,则误差是静止的。因此,您确实试图模拟非平稳情况。它几乎完全正确,然后我们得到一个错误。

我希望看到没有错误的唯一非平稳情况是| r | = 1,即单位根情况。然后我们得到类似的东西

enter image description here

错误是标准正常的地方。现在价值不小,但也没有。

然后当| r |> 1时,我们有一个爆炸案例。是的,在这种情况下,算法也开始变得重要:因为,当模拟AR(1)时,我们希望实现看起来真实,我们有一个老化期,例如,前5000个观测值被丢弃。在您的情况下,算法可能会生成5000 + 400个观测值,并仅显示最后400个(在静止情况下)。问题在于,正如我所说的那样,一旦| r |> 1,这些值就会变得无用。例如,

x <- numeric(50)
x[1] <- rnorm(1)
for(i in 2:length(x))
  x[i] <- 2 * x[i - 1] + rnorm(1)
x
#  [1] -1.274118e+00 -2.920323e+00 -2.690751e+00 -5.066151e+00 -1.169234e+01 -2.409816e+01
#  [7] -4.787102e+01 -9.502020e+01 -1.912421e+02 -3.823547e+02 -7.653762e+02 -1.530197e+03
# [13] -3.060378e+03 -6.121630e+03 -1.224165e+04 -2.448105e+04 -4.896242e+04 -9.792375e+04
# [19] -1.958463e+05 -3.916917e+05 -7.833816e+05 -1.566764e+06 -3.133528e+06 -6.267057e+06
# [25] -1.253411e+07 -2.506823e+07 -5.013646e+07 -1.002729e+08 -2.005458e+08 -4.010917e+08
# [31] -8.021833e+08 -1.604367e+09 -3.208733e+09 -6.417467e+09 -1.283493e+10 -2.566987e+10
# [37] -5.133973e+10 -1.026795e+11 -2.053589e+11 -4.107179e+11 -8.214357e+11 -1.642871e+12
# [43] -3.285743e+12 -6.571486e+12 -1.314297e+13 -2.628594e+13 -5.257189e+13 -1.051438e+14
# [49] -2.102875e+14 -4.205751e+14

现在想象一下为老化模拟5000个观测值,然后提供以下400个。因此,当| r |> 1的情况实际上是无意义的模拟。一个例外是如果你假设某个固定常数c的X0 = c并且只想模拟几个周期;在这种情况下,您可以使用与上面的循环类似的东西。

© www.soinside.com 2019 - 2024. All rights reserved.