Simularea seriei ARIMA (1,1,0)

Am adaptat modelele ARIMA la seria de timp originală, iar cel mai bun model este ARIMA (1, 1,0). Acum vreau să simulez seria din acel model. Am scris modelul simplu AR (1), dar nu puteam înțelege cum să ajustez diferența în cadrul modelului ARI (1,1,0). Următorul cod R pentru seria AR (1) este:

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

Cum includ termenul diferenței ARI (1,1) în codul de mai sus. Oricine mă ajută în acest sens.

Răspuns

Dacă doriți să simulați ARIMA, puteți utiliza arima.sim în R, nu este necesar să o faceți manual. Aceasta va genera seria dorită.

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) 

Puteți analiza codul modului în care se realizează acest lucru tastând arima.sim în linia de comandă R. Alternativ, dacă o faceți singur, funcția pe care probabil o căutați este diffinv. Calculează inversul diferențelor întârziate.

Pentru secvențe recursive R are o funcție frumoasă filter. Deci, în loc să folosiți buclă

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

poți scrie

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

Acest lucru va da rezultatul identic cu arima.sim exemplul de mai sus:

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *