Simulazione della serie ARIMA (1,1,0)

Ho adattato i modelli ARIMA alla serie storica originale e il modello migliore è ARIMA (1, 1,0). Ora voglio simulare la serie da quel modello. Ho scritto il semplice modello AR (1), ma non riuscivo a capire come regolare la differenza allinterno del modello ARI (1,1,0). Il seguente codice R per la serie AR (1) è:

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

Come includo il termine differenza ARI (1,1) nel codice precedente. Qualcuno mi aiuta in questo senso.

Risposta

Se vuoi simulare ARIMA puoi usare arima.sim in R, non è necessario farlo a mano. Questo genererà la serie che desideri.

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) 

Puoi controllare il codice di come si ottiene digitando arima.sim nella riga di comando R. In alternativa, se lo fai da solo, la funzione che stai probabilmente cercando è diffinv. Calcola linverso delle differenze ritardate.

Per sequenze ricorsive R ha una bella funzione filter. Quindi, invece di usare loop

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

puoi scrivere

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

Questo darà il risultato identico all arima.sim esempio sopra:

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *