2010-04-21 63 views
11

Tôi đang cố gắng giải thích cho bản thân kết quả dự báo từ việc áp dụng mô hình ARIMA vào tập dữ liệu chuỗi thời gian. Dữ liệu được lấy từ Cuộc thi M1, series là MNB65. Tôi đang cố gắng để phù hợp với dữ liệu cho một mô hình ARIMA (1,0,0) và nhận được dự báo. Tôi đang sử dụng R. Dưới đây là một số đoạn đầu ra:Giải thích dự báo từ mô hình ARIMA

> arima(x, order = c(1,0,0)) 
Series: x 
ARIMA(1,0,0) with non-zero mean 
Call: arima(x = x, order = c(1, 0, 0)) 
Coefficients: 
     ar1 intercept 
     0.9421 12260.298 
s.e. 0.0474 202.717 

> predict(arima(x, order = c(1,0,0)), n.ahead=12) 
$pred 
Time Series: 
Start = 53 
End = 64 
Frequency = 1 
[1] 11757.39 11786.50 11813.92 11839.75 11864.09 11887.02 11908.62 11928.97 11948.15 11966.21 11983.23 11999.27 

Tôi có một vài câu hỏi:

(1) Làm thế nào để giải thích rằng mặc dù các số liệu cho thấy một xu hướng giảm rõ ràng, dự báo từ mô hình này xu hướng trở lên. Điều này cũng xảy ra đối với ARIMA (2,0,0), là ARIMA phù hợp nhất cho dữ liệu sử dụng auto.arima (gói dự báo) và cho mô hình ARIMA (1,0,1).

(2) Giá trị chặn cho mô hình ARIMA (1,0,0) là 12260.298. Không nên đánh chặn thỏa mãn phương trình: C = mean * (1 - tổng (AR coeffs)), trong trường hợp đó, giá trị phải là 715.52. Tôi phải thiếu một cái gì đó cơ bản ở đây.

(3) Đây rõ ràng là chuỗi có ý nghĩa không cố định. Tại sao mô hình AR (2) vẫn được chọn là mô hình tốt nhất bởi auto.arima? Có thể có một lời giải thích trực quan?

Cảm ơn.

+1

Tôi đã bỏ phiếu để đóng vì đây không phải là câu hỏi lập trình. –

Trả lời

21
  1. Mô hình ARIMA (p, 0, q) sẽ cho phép xu hướng do mô hình dừng. Nếu bạn thực sự muốn bao gồm một xu hướng, hãy sử dụng ARIMA (p, 1, q) với một thuật ngữ trôi dạt, hoặc ARIMA (p, 2, q). Thực tế là auto.arima() cho thấy 0 sự khác biệt thường cho thấy không có xu hướng rõ ràng.

  2. Tệp trợ giúp cho arima() cho thấy rằng việc chặn thực sự là trung bình. Tức là, mô hình AR (1) là (Y_t-c) = phi * (Y_ {t-1} - c) + e_t thay vì Y_t = c + phi * Y_ {t-1} + e_t như bạn có thể mong đợi .

  3. auto.arima() sử dụng kiểm tra gốc đơn vị để xác định số lượng chênh lệch cần thiết. Vì vậy, kiểm tra kết quả từ bài kiểm tra gốc đơn vị để xem những gì đang xảy ra. Bạn luôn có thể chỉ định số lượng khác biệt được yêu cầu trong auto.arima() nếu bạn nghĩ rằng các phép kiểm thử gốc đơn vị không dẫn đến một mô hình hợp lý.

Đây là kết quả từ hai bài kiểm tra cho dữ liệu của bạn:

R> adf.test(x) 

     Augmented Dickey-Fuller Test 

data: x 
Dickey-Fuller = -1.031, Lag order = 3, p-value = 0.9249 
alternative hypothesis: stationary 

R> kpss.test(x) 

     KPSS Test for Level Stationarity 

data: x 
KPSS Level = 0.3491, Truncation lag parameter = 1, p-value = 0.09909 

Vì vậy, ADF nói mạnh phi văn phòng phẩm (giả thuyết trong trường hợp đó) trong khi KPSS không hoàn toàn bác bỏ tính dừng (giả thuyết không cho bài kiểm tra đó). auto.arima() sử dụng sau này theo mặc định. Bạn có thể sử dụng auto.arima (x, test = "adf") nếu bạn muốn thử nghiệm đầu tiên. Trong trường hợp đó, nó cho thấy mô hình ARIMA (0,2,1) có xu hướng.

+1

Cảm ơn Giáo sư Hyndman vì những lời bình luận kỹ lưỡng. –

+0

Giáo sư Hyndman, có cách nào để đảm bảo rằng một chuỗi là tôi (2) hoặc yêu cầu hai lần khác biệt để làm cho nó đứng yên? Các kết quả để phân tích sâu hơn sẽ thay đổi nếu chuỗi được phân biệt một hoặc hai lần. Bài đăng của bạn đề xuất sử dụng KPSS nhưng có bất kỳ lựa chọn thay thế nào không? Cảm ơn bạn. – Anusha

Các vấn đề liên quan