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.

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.