Simulering av ARIMA (1,1,0) -serien

Jag har anpassat ARIMA-modellerna till den ursprungliga tidsserien, och den bästa modellen är ARIMA (1, 1,0). Nu vill jag simulera serien från den modellen. Jag skrev den enkla AR (1) -modellen, men jag kunde inte förstå hur jag skulle justera skillnaden inom ARI-modellen (1,1,0). Följande R-kod för AR (1) -serien är:

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

Hur inkluderar jag skillnadsbegreppet ARI (1,1) i ovanstående kod. Någon hjälper mig i detta avseende.

Svar

Om du vill simulera ARIMA kan du använda arima.sim i R, du behöver inte göra det för hand. Detta genererar den serie du vill ha.

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) 

Du kan titta på koden för hur detta uppnås genom att skriva arima.sim i R-kommandoraden. Alternativt om du gör det själv är den funktion du förmodligen letar efter diffinv. Den beräknar det inversa av fördröjda skillnader.

För rekursiva sekvenser R har en fin funktion filter. Så istället för att använda loop

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

du kan skriva

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

Detta kommer att ge samma resultat till arima.sim exemplet ovan:

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *