Hàm ETS (), làm thế nào để tránh dự báo không phù hợp với dữ liệu lịch sử?


16

Tôi đang làm việc trên một alogorithm trong R để tự động hóa tính toán dự báo hàng tháng. Tôi đang sử dụng, trong số những người khác, hàm ets () từ gói dự báo để tính toán dự báo. Nó đang làm việc rất tốt.

Thật không may, đối với một số chuỗi thời gian cụ thể, kết quả tôi nhận được là kỳ lạ.

Xin vui lòng, tìm bên dưới mã tôi đang sử dụng:

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

Xin vui lòng, bạn sẽ tìm thấy bên dưới bộ dữ liệu lịch sử liên quan:

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

Ở đây, trên biểu đồ, bạn sẽ thấy dữ liệu lịch sử (màu đen), giá trị được trang bị (màu xanh lá cây) và dự báo (màu xanh). Dự báo chắc chắn không phù hợp với giá trị được trang bị.

Bạn có bất cứ ý tưởng nào về cách "ràng buộc" forecat để "phù hợp" với doanh số lịch sử không? nhập mô tả hình ảnh ở đây


Đây là một trong những dự báo kỳ lạ nhất mà tôi đã sử dụng ets. Giá trị trung bình / mức của dữ liệu lịch sử là khoảng 20 và giá trị trung bình / mức của dự báo là khoảng 50. Không chắc tại sao điều này sẽ xảy ra? bạn có thể chạy một cơ bản etsvà xem nếu bạn nhận được kết quả tương tự?
dự báo

Cảm ơn bạn rất nhiều vì thời gian và câu trả lời của bạn! Tôi đồng ý với bạn một thực tế là điểm cuối cùng có thể được coi là "ngoại lệ" (21 so với 7 hoặc 6 hoặc 5 năm trước) Nó có thể được phát hiện bằng cách sử dụng khoảng tin cậy dựa trên dữ liệu trong quá khứ và phải được làm sạch trước khi xác định dự báo thống kê. Nhưng nếu chúng ta cho rằng đó là bán hàng "bình thường", có cách nào để tránh hành vi này bằng cách ràng buộc dự báo, hoặc ít nhất được cảnh báo rằng dự báo lớn hơn gấp đôi so với lịch sử? Giới hạn alpha, beta và gamma không liên quan trong trường hợp đó. Một lần nữa, cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn về điểm này!
MehdiK

Tôi đã bình chọn câu trả lời của bạn, bây giờ tôi giả sử bạn có thể để lại nhận xét. Trong tương lai, vui lòng để lại bình luận ngay bên dưới câu trả lời để những người trả lời sẽ chú ý đến nó. Cảm ơn
forecaster

ETS và tất cả các mô hình chuỗi thời gian đơn biến cho rằng hành vi trong quá khứ dự đoán hành vi trong tương lai. Nếu có bất kỳ điểm dữ liệu bất thường nào thì bạn cần cho người mẫu biết rằng có sự bất thường. Mô hình sẽ không biết giá trị là bình thường, bạn cần chỉ định trong mô hình có giá trị ngoại lệ.
dự báo

Câu trả lời:


10

Như @forecaster đã chỉ ra, điều này được gây ra bởi các ngoại lệ ở cuối của bộ truyện. Bạn có thể thấy vấn đề rõ ràng nếu bạn vẽ thành phần mức ước tính trên đầu trang:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

Lưu ý sự gia tăng cấp độ ở cuối bộ truyện.

Một cách để làm cho mô hình mạnh hơn đối với các ngoại lệ là giảm không gian tham số để các tham số làm mịn phải lấy các giá trị nhỏ hơn:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

nhập mô tả hình ảnh ở đây


dự báo :: auto.arima tương đương với đề xuất thứ hai của bạn để xử lý các ngoại lệ là gì?
Cân bằng Brash

1
Với các mô hình ARIMA, bạn có thể xử lý các ngoại lệ với các biến giả được đặt thành 1 tại thời điểm có vấn đề. Chỉ cần sử dụng đối số xreg trong auto.arima hoặc Arima.
Rob Hyndman

6

Đây là trường hợp sách giáo khoa về việc có các ngoại lệ ở cuối bộ và hậu quả không lường trước được của nó. Vấn đề với dữ liệu của bạn là hai điểm cuối cùng là ngoại lệ , bạn có thể muốn xác định và xử lý các ngoại lệ trước khi bạn chạy các thuật toán dự báo. Tôi sẽ cập nhật câu trả lời và phân tích của tôi sau hôm nay về một số chiến lược để xác định các ngoại lệ. Dưới đây là cập nhật nhanh chóng.

Khi tôi chạy lại với hai điểm dữ liệu cuối cùng bị xóa, tôi nhận được một dự báo hợp lý. Vui lòng xem bên dưới:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

nhập mô tả hình ảnh ở đây


5

@ dự ánbạn đúng rằng giá trị cuối cùng là một ngoại lệ NHƯNG 38 (giá trị áp chót) không phải là một ngoại lệ khi bạn tính đến các xu hướng và hoạt động theo mùa. Đây là một thời điểm xác định / giảng dạy để thử nghiệm / đánh giá các phương pháp mạnh mẽ thay thế. Nếu bạn không xác định và điều chỉnh sự bất thường thì phương sai sẽ bị thổi phồng khiến các vật phẩm khác không được tìm thấy. Giai đoạn 32 cũng là một ngoại lệ. Thời kỳ 3,32 và 1 cũng là ngoại lệ. Có một xu hướng có ý nghĩa thống kê trong chuỗi cho 17 giá trị đầu tiên nhưng giảm dần sau đó bắt đầu từ giai đoạn 18. Vì vậy, thực sự có hai xu hướng trong dữ liệu. Bài học rút ra ở đây là các cách tiếp cận đơn giản cho rằng không có xu hướng hoặc một hình thức cụ thể nào của xu hướng và / hoặc ngầm giả định một dạng cụ thể của quá trình hồi quy tự động cần phải được đặt câu hỏi nghiêm túc. Đi về phía trước một dự báo tốt nên phải xem xét sự tiếp tục có thể của hoạt động đặc biệt được tìm thấy ở điểm cuối cùng (giai đoạn 39). Không thể trích xuất điều này từ dữ liệu.

Đây là một mô hình có thể hữu ích:

nhập mô tả hình ảnh ở đâySố liệu thống kê của mô hình cuối cùng ở đây nhập mô tả hình ảnh ở đâyBiểu đồ thực tế / phù hợp và dự báo rất thú vị vì nó làm nổi bật hoạt động đặc biệt.nhập mô tả hình ảnh ở đây


+1 câu trả lời của bạn luôn mang tính giáo dục và khai sáng. Tôi hiểu xung và thời gian, là hiệu ứng cố định hoàn toàn mô hình xác định?
dự báo

@forecaster Có các hiệu ứng cố định / xung theo mùa hoàn toàn là do quản lý ... giống như các xung / mức dịch chuyển và xu hướng thời gian địa phương. Hơn nữa, tháng 8 (8) không đáng kể và không nằm trong danh sách cuối cùng.
IrishStat
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.