Jeg har monteret ARIMA-modellerne til den originale tidsserie, og den bedste model er ARIMA (1, 1,0). Nu vil jeg simulere serien fra den model. Jeg skrev den enkle AR (1) -model, men jeg kunne ikke forstå, hvordan man justerer forskellen inden for modellen ARI (1,1,0). Følgende R-kode for AR (1) -serien er:
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))
Hvordan inkluderer jeg forskelleudtrykket ARI (1,1) i ovenstående kode. Enhver hjælper mig i denne henseende.
Svar
Hvis du vil simulere ARIMA, kan du bruge arima.sim
i R, det er ikke nødvendigt at gøre det manuelt. Dette genererer den ønskede serie.
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 se på koden for, hvordan dette opnås ved at skrive arima.sim
i R kommandolinje. Alternativt hvis du gør det selv, er den funktion, du sandsynligvis ser, diffinv
. Den beregner det inverse af forsinkede forskelle.
For rekursive sekvenser R
har en god funktion filter
. Så i stedet for at bruge 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 skrive
filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")
Dette giver det samme resultat til arima.sim
eksempel ovenfor:
diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])