Simulation de la série ARIMA (1,1,0)

Jai ajusté les modèles ARIMA à la série chronologique dorigine, et le meilleur modèle est ARIMA (1, 1,0). Maintenant, je veux simuler la série à partir de ce modèle. Jai écrit le modèle AR (1) simple, mais je ne pouvais pas comprendre comment ajuster la différence dans le modèle ARI (1,1,0). Le code R suivant pour la série AR (1) est:

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

Comment puis-je inclure le terme de différence ARI (1,1) dans le code ci-dessus. Tout le monde maide à cet égard.

Réponse

Si vous voulez simuler ARIMA vous pouvez utiliser arima.sim dans R, il nest pas nécessaire de le faire à la main. Cela générera la série souhaitée.

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) 

Vous pouvez voir le code de la façon dont cela est réalisé en tapant arima.sim en ligne de commande R. Sinon, si vous le faites vous-même, la fonction que vous recherchez est probablement diffinv. Elle calcule linverse des différences retardées.

Pour séquences récursives R a une fonction agréable filter. Donc au lieu dutiliser la boucle

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

vous pouvez écrire

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

Cela donnera le même résultat à arima.sim exemple ci-dessus:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1]) 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *