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 pude 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? Cualquiera me ayude en este sentido.
Respuesta
Si quieres simular ARIMA puedes usar arima.sim
en R, no es necesario hacerlo a mano. Esto generará la serie que desea.
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 arima.sim
en la línea de comandos R. Alternativamente, si lo hace usted mismo, la función que probablemente esté buscando es diffinv
. Calcula la inversa de las diferencias rezagadas. secuencias recursivas R
tiene una función agradable filter
. Entonces, en lugar de usar loop
z <- rep(NA,100) z[1] <- 4.1 for (i in 2:100) z[i]=cons+phi*z[i-1]+e[i]
puede escribir
filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")
Esto dará el resultado idéntico al arima.sim
ejemplo anterior:
diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])