Bình luận: Trước hết tôi muốn nói một lớn cảm ơn bạn cho tác giả của mới tsoutliers gói mà cụ Chen và Liu phát hiện chuỗi thời gian outlier được công bố trên Tạp chí của Hiệp hội thống kê Mỹ vào năm 1993 trong mã nguồn mở phần mềm .
Gói phát hiện 5 loại ngoại lệ khác nhau lặp lại trong dữ liệu chuỗi thời gian:
- Phụ gia ngoại lệ (AO)
- Đổi mới ngoại lệ (IO)
- Thay đổi cấp độ (LS)
- Thay đổi tạm thời (TC)
- Thay đổi cấp độ theo mùa (SLS)
Điều tuyệt vời hơn nữa là gói này triển khai auto.arima từ gói dự báo để phát hiện các ngoại lệ là liền mạch. Ngoài ra gói sản xuất các lô đẹp để hiểu rõ hơn về dữ liệu chuỗi thời gian.
Dưới đây là những câu hỏi của tôi:
Tôi đã thử chạy một vài ví dụ bằng cách sử dụng gói này và nó hoạt động rất tốt. Các ngoại lệ phụ gia và thay đổi cấp độ là trực quan. Tuy nhiên, tôi đã có 2 câu hỏi liên quan đến việc trao các thay đổi tạm thời ngoại lệ và các ngoại lệ đổi mới mà tôi không thể hiểu được.
Thay đổi tạm thời ngoại lệ Ví dụ:
Hãy xem xét ví dụ sau:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
Chương trình phát hiện đúng sự thay đổi cấp độ và thay đổi tạm thời tại địa điểm sau.
Outliers:
type ind time coefhat tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
Dưới đây là cốt truyện và câu hỏi của tôi.
- Làm thế nào để viết thay đổi tạm thời trong một định dạng phương trình? (Sự thay đổi cấp độ có thể dễ dàng được viết dưới dạng biến nhị phân, bất cứ lúc nào trước 1935 / Quan sát 12 là 0 và bất kỳ lúc nào sau 1935 và sau là 1.)
Phương trình thay đổi tạm thời trong hướng dẫn gói và bài viết được đưa ra là:
trong đó là 0,7. Tôi chỉ cố gắng để dịch điều này sang ví dụ trên.
- Câu hỏi thứ hai của tôi là về ngoại lệ đổi mới, tôi chưa bao giờ bắt
gặp một ngoại lệ đổi mới trong thực tế. bất kỳ ví dụ số hoặc một ví dụ trường hợp sẽ rất hữu ích.
Chỉnh sửa: @Irishstat, chức năng tsoutliers thực hiện công việc tuyệt vời trong việc xác định các ngoại lệ và đề xuất một mô hình ARIMA thích hợp. Nhìn vào bộ dữ liệu Nile, xem ứng dụng auto.arima bên dưới và sau đó áp dụng tsoutliers (với các giá trị mặc định bao gồm auto.arima):
auto.arima(Nile)
Series: Nile
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.2544 -0.8741
s.e. 0.1194 0.0605
sigma^2 estimated as 19769: log likelihood=-630.63
AIC=1267.25 AICc=1267.51 BIC=1275.04
Sau khi áp dụng chức năng tsoutliers, nó xác định LS ngoại lệ và phụ gia ngoại lệ và đề xuất một đơn đặt hàng ARIMA (0,0,0).
nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile
ARIMA(0,0,0) with non-zero mean
Coefficients:
intercept LS29 AO43
1097.7500 -242.2289 -399.5211
s.e. 22.6783 26.7793 120.8446
sigma^2 estimated as 14401: log likelihood=-620.65
AIC=1249.29 AICc=1249.71 BIC=1259.71
Outliers:
type ind time coefhat tstat
1 LS 29 1899 -242.2 -9.045
2 AO 43 1913 -399.5 -3.306
tsoutliers
đã được đổi tên thành tso
để tránh xung đột với chức năng cùng tên trong gói forecast
.
clang
và gcc
và không phải công trình. Tôi nghĩ rằng nó là một gói tuyệt vời nhưng cài đặt thực sự làm tan vỡ trái tim tôi.