Simulasi seri ARIMA (1,1,0)

11

Saya telah memasang model ARIMA ke seri waktu asli, dan model terbaik adalah ARIMA (1,1,0). Sekarang saya ingin mensimulasikan seri dari model itu. Saya menulis model AR (1) sederhana, tetapi saya tidak bisa mengerti bagaimana menyesuaikan perbedaan dalam model ARI (1,1,0). Kode R untuk seri AR (1) berikut adalah:

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

Bagaimana saya memasukkan perbedaan istilah ARI (1,1) dalam kode di atas. Ada yang membantu saya dalam hal ini.

Wazir
sumber

Jawaban:

21

Jika Anda ingin mensimulasikan ARIMA yang dapat Anda gunakan arima.simdalam R, tidak perlu melakukannya dengan tangan. Ini akan menghasilkan seri yang Anda inginkan.

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)

Anda dapat melihat kode tentang bagaimana ini dicapai dengan mengetikkan arima.simbaris perintah R. Atau jika Anda melakukannya sendiri, fungsi yang mungkin Anda cari adalah diffinv. Ini menghitung kebalikan dari perbedaan yang tertinggal.

Sebab urutan rekursif Rmemiliki fungsi yang bagus filter. Jadi alih-alih menggunakan loop

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

kamu bisa menulis

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

Ini akan memberikan hasil yang identik dengan arima.simcontoh di atas:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])
mpiktas
sumber
jawaban Anda luar biasa
Daniel James
apakah saya diizinkan mengajukan pertanyaan kepada Anda; atau bisakah Anda memberi saya hak istimewa pribadi untuk mengobrol dengan Anda sendirian?
Daniel James
tolong bantu saya melihat stackoverflow.com/questions/60970948/…
Daniel James