การจำลองซีรี่ส์ ARIMA (1,1,0)


11

ฉันได้ติดตั้งโมเดล ARIMA กับซีรี่ส์เวลาดั้งเดิมและรุ่นที่ดีที่สุดคือ ARIMA (1,1,0) ตอนนี้ฉันต้องการจำลองซีรีส์จากโมเดลนั้น ฉันเขียนโมเดล AR (1) อย่างง่าย แต่ฉันไม่เข้าใจวิธีการปรับความแตกต่างภายในโมเดล ARI (1,1,0) รหัส R ต่อไปนี้สำหรับซีรีย์ 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))                

ฉันจะรวมคำต่าง ARI (1,1) ในรหัสข้างต้นได้อย่างไร คนใดคนหนึ่งช่วยฉันในเรื่องนี้

คำตอบ:


21

หากคุณต้องการจำลอง ARIMA คุณสามารถใช้arima.simใน R ไม่จำเป็นต้องทำด้วยมือ สิ่งนี้จะสร้างซีรีส์ที่คุณต้องการ

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)

คุณสามารถดูรหัสของวิธีการนี้ทำได้โดยพิมพ์arima.simในบรรทัดคำสั่ง R อีกทางเลือกหนึ่งถ้าคุณทำมันด้วยตัวคุณเอง, diffinvฟังก์ชั่นที่คุณอาจมองเป็น มันคำนวณความผกผันของความแตกต่างที่ล้าหลัง

สำหรับลำดับ recursive มีฟังก์ชั่นที่ดีR filterดังนั้นแทนที่จะใช้ลูป

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

คุณสามารถเขียน

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

สิ่งนี้จะให้ผลลัพธ์ที่เหมือนกันกับarima.simตัวอย่างด้านบน:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.