为什么Arima.sim返回非平稳AR模型的错误消息?

时间:2019-02-14 17:42:04

标签: r arima

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

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

例如:

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无法处理非平稳模型或某些季节性模型。为什么失败了?它与用于生成随机数的算法有关吗?

1 个答案:

答案 0 :(得分:0)

具有i.i.d.的AR(1)模型如果自回归参数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假设X 0 = c,并且只想模拟几个周期;在这种情况下,您可以使用类似于我上面的循环的内容。