Simulación de la serie ARIMA (1,1,0)

11

He ajustado los modelos ARIMA a la serie temporal original, y el mejor modelo es ARIMA (1,1,0). Ahora quiero simular la serie de ese modelo. Escribí el modelo AR (1) simple, pero no podía entender cómo ajustar la diferencia dentro del modelo ARI (1,1,0). El siguiente código R para la serie AR (1) es:

phi= -0.7048                                 
z=rep(0,100)                                 
e=rnorm(n=100,0,0.345)                       
cons=2.1                                     
z[1]=4.1
for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]   
plot(ts(Y))                

¿Cómo incluyo el término de diferencia ARI (1,1) en el código anterior? Alguien me ayude a este respecto.

Wazir
fuente

Respuestas:

21

Si desea simular ARIMA que puede usar arima.simen R, no es necesario hacerlo a mano. Esto generará la serie que quieras.

e <- rnorm(100,0,0.345) 
arima.sim(n=100,model=list(ar=-0.7048,order=c(1,1,0)),start.innov=4.1,n.start=1,innov=2.1+e)

Puede ver el código de cómo se logra esto escribiendo la arima.simlínea de comando R. Alternativamente, si lo hace usted mismo, la función que probablemente esté buscando es diffinv. Calcula el inverso de las diferencias rezagadas.

Para secuencias recursivas Rtiene una buena función filter. Entonces, en lugar de usar el bucle

z <- rep(NA,100)
z[1] <- 4.1
for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]   

puedes escribir

filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")

Esto dará el resultado idéntico al arima.simejemplo anterior:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])
mpiktas
fuente
tu respuesta es maravillosa
Daniel James
¿está permitido que te haga una pregunta? ¿O puedes darme un privilegio privado para chatear contigo solo?
Daniel James
por favor ayúdame a mirar este stackoverflow.com/questions/60970948/…
Daniel James