Giá trị được trang bị của mô hình ARMA


11

Tôi đang cố gắng hiểu cách tính giá trị phù hợp cho các mô hình ARMA (p, q). Tôi đã tìm thấy một câu hỏi ở đây liên quan đến các giá trị được trang bị của các quy trình ARMA nhưng không thể hiểu được nó.

Nếu tôi có một mô hình ARMA (1,1), tức là

Xt=α1Xt1+ϵtβ1ϵt1

và được đưa ra một chuỗi thời gian (đứng yên) tôi có thể ước tính các tham số. Làm thế nào tôi có thể tính toán các giá trị được trang bị bằng cách sử dụng các ước tính đó. Đối với kiểu AR (1), các giá trị được trang bị được đưa ra bởi

Xt^=α1^Xt1.

Vì các đổi mới trong mô hình ARMA là không thể quan sát được, tôi sẽ sử dụng ước tính của tham số MA như thế nào? Tôi có thể bỏ qua phần MA và tính các giá trị được trang bị của phần AR không?

Câu trả lời:


10

Để trả lời câu hỏi của bạn, về cơ bản bạn cần phải biết cách tính phần dư tức là trong một mô hình. Bởi vì sau đó . Trước tiên chúng ta hãy tạo dữ liệu giả ( ) từ và khớp với mô hình (không có ý nghĩa):^ X t = X t - e t X tetarmaXt^=XtetXtarima(.5,.6)arma

library(forecast)
n=1000
ts_AR <- arima.sim(n = n, list(ar = 0.5,ma=0.6))
f=arima(ts_AR,order=c(1,0,1),include.mean=FALSE)
summary(f)
    Series: ts_AR 
    ARIMA(1,0,1) with zero mean     

    Coefficients:
             ar1     ma1
          0.4879  0.5595
    s.e.  0.0335  0.0317

    sigma^2 estimated as 1.014:  log likelihood=-1426.7
    AIC=2859.4   AICc=2859.42   BIC=2874.12

    Training set error measures:
                         ME    RMSE       MAE      MPE     MAPE      MASE
    Training set 0.02102758 1.00722 0.8057205 40.05802 160.1078 0.6313145

Bây giờ tôi tạo phần dư như sau: (vì không có phần dư tại 1) và với chúng ta có: , trong đó và là phần trung bình tự động hồi quy và di chuyển ước tính trong mô hình được trang bị ở trên. Đây là mã:t = 2 , . . . , N đ t = X t - Một r * X t - 1 - M một * e t - 1 Một r M mộte1=0t=2,...,net=XtArXt1Maet1ArMa

e = rep(1,n)
e[1] = 0 ##since there is no residual at 1, e1 = 0
for (t in (2 : n)){
  e[t] = ts_AR[t]-coef(f)[1]*ts_AR[t-1]-coef(f)[2]*e[t-1]
}

Khi bạn tìm thấy phần dư , các giá trị được trang bị chỉ là . Vì vậy, trong phần sau đây, tôi đã so sánh 10 giá trị được trang bị đầu tiên thu được từ R và các giá trị tôi có thể tính toán từ tôi đã tạo ở trên (tức là thủ công).^ X t = X t - e t e tetXt^=Xtetet

cbind(fitted.from.package=fitted(f)[1:10],fitted.calculated.manually=ts_AR[1:10]-e[1:10])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.4193068                 -1.1653515
 [2,]          -0.8395447                 -0.5685977
 [3,]          -0.4386956                 -0.6051324
 [4,]           0.3594109                  0.4403898
 [5,]           2.9358336                  2.9013738
 [6,]           1.3489537                  1.3682191
 [7,]           0.5329436                  0.5219576
 [8,]           1.0221220                  1.0283511
 [9,]           0.6083310                  0.6048668
[10,]          -0.5371484                 -0.5352324

Như bạn thấy có gần nhưng không hoàn toàn giống nhau. Lý do là khi tôi tạo phần dư tôi đặt . Có những lựa chọn khác mặc dù. Ví dụ, dựa trên tệp trợ giúp , phần dư và phương sai của chúng được tìm thấy bởi bộ lọc Kalman và do đó cách tính của sẽ hơi khác so với tôi. Nhưng thời gian trôi qua họ đang hội tụ. Bây giờ cho mô hình Ar (1). Tôi đã trang bị mô hình (không có ý nghĩa) và trực tiếp chỉ cho bạn cách tính các giá trị được trang bị bằng các hệ số. Lần này tôi không tính toán số dư. Lưu ý rằng tôi đã báo cáo 10 giá trị được trang bị đầu tiên loại bỏ giá trị đầu tiên (vì một lần nữa nó sẽ khác nhau tùy thuộc vào cách bạn xác định nó). Như bạn có thể thấy, chúng hoàn toàn giống nhau.e te1=0arimaet

f=arima(ts_AR,order=c(1,0,0),include.mean=FALSE)
cbind(fitted.from.package=fitted(f)[2:10],fitted.calculated.manually=coef(f)*ts_AR[1:9])
      fitted.from.package fitted.calculated.manually
 [1,]          -0.8356307                 -0.8356307
 [2,]          -0.6320580                 -0.6320580
 [3,]           0.0696877                  0.0696877
 [4,]           2.1549019                  2.1549019
 [5,]           2.0480074                  2.0480074
 [6,]           0.8814094                  0.8814094
 [7,]           0.9039184                  0.9039184
 [8,]           0.8079823                  0.8079823
 [9,]          -0.1347165                 -0.1347165

Trong tệp trợ giúp arimahọ nói: "(...) những đổi mới và phương sai của chúng được tìm thấy bởi bộ lọc Kalman." Vì vậy, hàm rõ ràng bằng cách nào đó sử dụng bộ lọc Kalman cho các giá trị ban đầu.
DatamineR
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.