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.

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])

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.