Simulazione della serie ARIMA (1,1,0)


11

Ho montato i modelli ARIMA sulle serie storiche originali 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 all'interno 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 posso includere il termine differenza ARI (1,1) nel codice sopra. Qualcuno mi aiuti in questo senso.

Risposte:


21

Se si desidera simulare ARIMA che è possibile utilizzare arima.simin R, non è necessario farlo manualmente. Questo genererà la serie desiderata.

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 vedere il codice di come ottenere ciò digitando arima.simnella riga di comando R. In alternativa, se lo fai da solo, la funzione che probabilmente stai cercando è diffinv. Calcola l'inverso delle differenze ritardate.

Per le sequenze ricorsive Rha 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]   

tu puoi scrivere

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

Questo darà lo stesso risultato arima.simall'esempio sopra:

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

la tua risposta è meravigliosa
Daniel James

mi è permesso di farti una domanda; o puoi darmi un privilegio privato per chattare con te da solo?
Daniel James,

per favore aiutatemi a guardare questo stackoverflow.com/questions/60970948/…
Daniel James
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.