Mô phỏng loạt ARIMA (1,1,0)


11

Tôi đã trang bị các mô hình ARIMA cho chuỗi thời gian ban đầu và mô hình tốt nhất là ARIMA (1,1,0). Bây giờ tôi muốn mô phỏng loạt từ mô hình đó. Tôi đã viết mô hình AR (1) đơn giản, nhưng tôi không thể hiểu cách điều chỉnh sự khác biệt trong mô hình ARI (1,1,0). Mã R sau đây cho chuỗi AR (1) là:

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

Làm thế nào để tôi bao gồm thuật ngữ ARI (1,1) khác nhau trong mã trên. Bất cứ ai giúp tôi về vấn đề này.

Câu trả lời:


21

Nếu bạn muốn mô phỏng ARIMA bạn có thể sử dụng arima.simtrong R, không cần phải làm bằng tay. Điều này sẽ tạo ra loạt bạn muốn.

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)

Bạn có thể xem mã làm thế nào đạt được điều này bằng cách nhập arima.simvào dòng lệnh R. Ngoài ra, nếu bạn tự làm, chức năng bạn có thể đang tìm kiếm diffinv. Nó tính toán nghịch đảo của sự khác biệt độ trễ.

Đối với trình tự đệ quy Rcó một chức năng tốt đẹp filter. Vì vậy, thay vì sử dụng vòng lặp

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

bạn có thể viết

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

Điều này sẽ cho kết quả giống hệt với arima.simví dụ trên:

diffinv(filter(c(4.1,2.1+e),filter=-0.7048,method="recursive")[-1])
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.