Cách diễn giải và thực hiện dự báo bằng gói tsoutliers và auto.arima


9

Tôi đã có dữ liệu hàng tháng từ năm 1993 đến 2015 và muốn dự báo về những dữ liệu này. Tôi đã sử dụng gói tsoutliers để phát hiện các ngoại lệ, nhưng tôi không biết làm cách nào để tiếp tục dự báo với bộ dữ liệu của mình.

Đây là mã của tôi:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

Đây là đầu ra của tôi từ gói tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

Đây là âm mưu của tôi

Tôi có những tin nhắn cảnh báo là tốt.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

Nghi ngờ:

  1. Nếu tôi không sai, gói tsoutliers sẽ xóa các ngoại lệ mà nó phát hiện và thông qua việc sử dụng bộ dữ liệu với các ngoại lệ bị xóa, nó sẽ cung cấp cho chúng tôi mô hình arima tốt nhất phù hợp với tập dữ liệu, điều đó có đúng không?
  2. Tập dữ liệu loạt điều chỉnh đang bị dịch chuyển xuống rất nhiều do loại bỏ sự thay đổi cấp độ, v.v. Điều này không có nghĩa là nếu việc dự báo được thực hiện trên chuỗi điều chỉnh, đầu ra của dự báo sẽ rất không chính xác, vì dữ liệu gần đây đã hơn 12, trong khi dữ liệu được điều chỉnh chuyển sang khoảng 7-8.
  3. Thông điệp cảnh báo 4 và 5 có nghĩa là gì? Có nghĩa là nó không thể làm auto.arima bằng cách sử dụng chuỗi điều chỉnh?
  4. [12] trong ARIMA (0,1,0) (0,0,1) [12] có nghĩa là gì? Có phải chỉ là tần suất / định kỳ của tập dữ liệu của tôi, mà tôi đặt nó thành hàng tháng? Và điều này cũng có nghĩa là chuỗi dữ liệu của tôi cũng theo mùa?
  5. Làm cách nào để phát hiện tính thời vụ trong bộ dữ liệu của tôi? Từ hình dung của cốt truyện chuỗi thời gian, tôi không thể thấy bất kỳ xu hướng rõ ràng nào, và nếu tôi sử dụng chức năng phân tách, nó sẽ cho rằng có một xu hướng theo mùa? Vì vậy, tôi chỉ tin những gì các tsoutliers nói với tôi, nơi có xu hướng theo mùa, vì có MA của đơn hàng 1?
  6. Làm cách nào để tiếp tục thực hiện dự báo của mình với dữ liệu này sau khi xác định các ngoại lệ này?
  7. Làm cách nào để kết hợp các ngoại lệ này với các mô hình dự báo khác - Làm mịn theo cấp số nhân, ARIMA, Mô hình cơ sở, Đi bộ ngẫu nhiên, theta? Tôi chắc chắn rằng tôi không thể xóa các ngoại lệ vì có sự thay đổi cấp độ và nếu tôi chỉ lấy dữ liệu chuỗi điều chỉnh, các giá trị sẽ quá nhỏ, vậy tôi phải làm gì?

Tôi có cần thêm các ngoại lệ này làm công cụ hồi quy trong auto.arima để dự báo không? Làm thế nào để nó hoạt động sau đó?

Câu trả lời:


5

Những bình luận này quá dài ... do đó, một "TRẢ LỜI"

  1. Bạn đã sai, nó không điều chỉnh và sau đó xác định ARIMA (như AUTOBOX). Nó giả định rằng không có sự điều chỉnh can thiệp nào và sau đó vội vàng xác định một mô hình ARIMA có khả năng bị ảnh hưởng bởi việc không điều trị dị thường. Thông thường, người ta cần điều chỉnh cho cả chuỗi nguyên nhân do người dùng chỉ định và / hoặc cấu trúc xác định không xác định (ngoại lệ / thay đổi cấp độ, xung theo mùa, xu hướng thời gian địa phương) trước khi xác định cấu trúc ARIMA. Xem ví dụ này về một bệnh nhân nghèo , điều đó làm cho sai lầm của sự khác biệt không cần thiết của chuỗi ban đầu trong khi trạng thái tự nhiên đúng / chính xác không cần bất kỳ sự khác biệt nào. Không cố định không nhất thiết ngụ ý sự cần thiết phải khác biệt nhưng thường có thể gợi ý điều chỉnh giảm nghĩa cho thay đổi mức độ / trung bình

  2. Dự báo chính xác luôn luôn được thực hiện từ loạt ban đầu, do đó dự báo nên được tin tưởng trong lịch sử.

  3. Tôi không biết vì tôi không chủ động sử dụng thủ tục này. Tôi đã giới thiệu nó cho bạn vì bạn đã yêu cầu các giải pháp dựa trên r miễn phí KHÔNG phải vì tôi nghĩ nó tốt hoặc đủ vì mô hình ARIMA là một quá trình tự kiểm tra lặp lại (nhiều giai đoạn).

  4. mô hình cho thấy nó nghĩ rằng dữ liệu có thành phần ma (12) theo mùa NHƯNG điều này có thể chỉ đơn giản phản ánh sự cần thiết của một xung theo mùa.

  5. khái niệm về một xu hướng theo mùa là tốt nhất mơ hồ.

  6. Câu trả lời của tôi sẽ quá rõ ràng và tự thực hiện


1
tu rất nhiều @ricardo
IrishStat

4

Gói 'tsoutliers' thực hiện quy trình được mô tả bởi Chen và Liu (1993) [1]. Một mô tả của gói và thủ tục cũng được đưa ra trong tài liệu này .

Tóm lại, thủ tục bao gồm hai giai đoạn chính:

  1. Phát hiện các ngoại lệ theo mô hình ARIMA đã chọn.
  2. Chọn và / hoặc chỉnh sửa mô hình ARIMA bao gồm các ngoại lệ được phát hiện trong bước trước đó và loại bỏ các ngoại lệ không đáng kể trong sự phù hợp mới.

Sê-ri sau đó được điều chỉnh cho các ngoại lệ được phát hiện và các giai đoạn (1) và (2) được lặp lại cho đến khi không phát hiện thêm các ngoại lệ hoặc cho đến khi đạt được số lần lặp tối đa.


Giai đoạn đầu tiên (phát hiện các ngoại lệ) cũng là một quá trình lặp lại. Vào cuối mỗi lần lặp, phần dư từ mô hình ARIMA được điều chỉnh cho các ngoại lệ được phát hiện trong giai đoạn này. Quá trình được lặp lại cho đến khi không tìm thấy thêm các ngoại lệ hoặc cho đến khi đạt được số lần lặp tối đa (theo mặc định là 4 lần lặp). Ba cảnh báo đầu tiên mà bạn nhận được có liên quan đến vòng lặp bên trong này, tức là, giai đoạn được thoát sau bốn lần lặp.

Bạn có thể tăng số lần lặp tối đa này thông qua đối số maxit.ilooptrong hàm tso. Không nên thiết lập số lần lặp cao trong giai đoạn đầu tiên và để quá trình chuyển sang giai đoạn thứ hai nơi mô hình ARIMA được chỉnh sửa hoặc chọn lại.


Các cảnh báo 4 và 5 có liên quan đến quá trình điều chỉnh mô hình ARIMA và chọn mô hình tương ứng cho các chức năng stats::arimaforecast:auto.arima. Thuật toán tối đa hóa hàm khả năng không phải lúc nào cũng hội tụ thành một giải pháp. Bạn có thể tìm thấy một số chi tiết liên quan đến các vấn đề này, ví dụ, trong bài đăng nàybài đăng này


[1] Chung Chen và Lon-Mu Liu (1993) "Ước tính chung về các thông số mô hình và hiệu ứng ngoại lệ trong chuỗi thời gian", Tạp chí của Hiệp hội thống kê Hoa Kỳ , 88 (421), trang 284-297. DOI: 10.1080 / 01621459.1993.10594321 .


Sẽ mất bao nhiêu thời gian để chạy tso ()?
Anoop Toffy

@AnoopToffy tùy thuộc vào độ dài của dữ liệu, tính định kỳ, v.v ... Đối với dữ liệu hàng năm, hàng tháng, hàng quý, cỡ mẫu khoảng 120 quan sát và động có thể được mô hình ARIMA nắm bắt một cách hợp lý, thuật toán sẽ chạy tối đa khoảng 10 giây (thường ít hơn nhiều).
javlacalle
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.