Simulation von ARIMA (1,1,0) -Serien

11

Ich habe die ARIMA-Modelle an die ursprüngliche Zeitreihe angepasst, und das beste Modell ist ARIMA (1,1,0). Jetzt möchte ich die Serie von diesem Modell simulieren. Ich habe das einfache AR (1) -Modell geschrieben, konnte aber nicht verstehen, wie der Unterschied innerhalb des ARI-Modells (1,1,0) angepasst werden kann. Der folgende R-Code für die AR (1) -Serie lautet:

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

Wie füge ich den Differenzterm ARI (1,1) in den obigen Code ein? Jeder hilft mir in dieser Hinsicht.

Wazir
quelle

Antworten:

21

Wenn Sie ARIMA simulieren möchten, das Sie arima.simin R verwenden können, müssen Sie dies nicht von Hand tun. Dadurch wird die gewünschte Serie generiert.

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)

Sie können sich den Code ansehen, wie dies erreicht wird, indem Sie die arima.simR-Befehlszeile eingeben . Wenn Sie es selbst tun, ist die Funktion, nach der Sie wahrscheinlich suchen, alternativ diffinv. Es berechnet die Umkehrung der verzögerten Differenzen.

Für rekursive Sequenzen Rhat eine schöne Funktion filter. Also anstatt Schleife zu verwenden

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

Du kannst schreiben

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

Dies ergibt das gleiche Ergebnis wie im arima.simobigen Beispiel:

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