Simulatie van ARIMA (1,1,0) -serie

Ik heb de ARIMA-modellen aangepast aan de originele tijdreeks, en het beste model is ARIMA (1, 1,0). Nu wil ik de serie van dat model simuleren. Ik heb het eenvoudige AR (1) -model geschreven, maar ik kon niet begrijpen hoe ik het verschil binnen het model ARI (1,1,0) moest aanpassen. De volgende R-code voor AR (1) -serie is:

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

Hoe kan ik de verschilterm ARI (1,1) opnemen in bovenstaande code. Iedereen kan me hierbij helpen.

Antwoord

Als u ARIMA wilt simuleren, kunt u arima.sim in R gebruiken, het is niet nodig om dit met de hand te doen. Dit genereert de gewenste 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) 

Je kunt de code bekijken hoe dit wordt bereikt door arima.sim in de R-opdrachtregel. Als alternatief, als u het zelf doet, is de functie die u waarschijnlijk zoekt diffinv. Het berekent het omgekeerde van vertraagde verschillen.

For recursieve reeksen R heeft een leuke functie filter. Dus in plaats van loop

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

je kunt schrijven

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

Dit geeft hetzelfde resultaat als arima.sim voorbeeld hierboven:

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *