Hàm chi phí để xác nhận các mô hình hồi quy Poisson


11

Đối với dữ liệu đếm mà tôi đã thu thập, tôi sử dụng hồi quy Poisson để xây dựng các mô hình. Tôi làm điều này bằng cách sử dụng glmhàm trong R, nơi tôi sử dụng family = "poisson". Để đánh giá các mô hình có thể (tôi có một số dự đoán) tôi sử dụng AIC. Càng xa càng tốt. Bây giờ tôi muốn thực hiện xác nhận chéo. Tôi đã thành công trong việc này bằng cách sử dụng cv.glmchức năng từ bootgói. Từ tài liệu của cv.glmtôi thấy rằng, ví dụ như đối với dữ liệu nhị thức, bạn cần sử dụng hàm chi phí cụ thể để có được một lỗi dự đoán có ý nghĩa. Tuy nhiên, tôi không biết chức năng chi phí nào phù hợp family = poissonvà một tìm kiếm Google mở rộng không mang lại bất kỳ kết quả cụ thể nào. Câu hỏi của tôi là bất cứ ai cũng có một chút ánh sáng để làm sáng tỏ chức năng chi phí nào phù hợp cv.glmtrong trường hợp của poisson glm.


1
Hàm cv.glmnettrong gói glmnetsử dụng type.measure="deviance"cho họ Poisson.
rcs

Nghiêm túc, tài liệu cho thấy rằng nó có ý nghĩa để sử dụng một hàm chi phí cụ thể cho dữ liệu nhị phân.
Corone

@corone của không phải là dữ liệu liên tục, cũng không phải dữ liệu nhị phân. Vì vậy, tôi đã tìm kiếm một hàm chi phí phù hợp cho dữ liệu đếm.
Paul Hiemstra

1
Tôi không nghĩ rằng sự chênh lệch của dữ liệu tạo ra sự khác biệt lớn ở đây, trừ khi số lượng của bạn rất nhỏ. Vấn đề là về việc phân phối dữ liệu. Đối với dữ liệu nhị phân, dự đoán là xác suất liên tục trong khoảng từ 0 đến 1, nhưng phản hồi luôn là 0 hoặc 1. Trong ví dụ của họ, chi phí buộc phải "đúng" hoặc "sai" và đếm số quyền và sai. Bạn có đặc biệt lo lắng về sự liên tục? Tôi sẽ thêm một PS vào câu trả lời của tôi để giải quyết sự liên tục
Corone

Câu trả lời:


12

Giả sử không có gì đặc biệt trong trường hợp cụ thể của bạn, tôi nghĩ rằng có một lý lẽ tốt cho việc sử dụng mặc định (Lỗi bình phương trung bình) hoặc sử dụng giá trị trung bình của lỗi của các bản ghi hoặc thậm chí là lỗi chi bình phương.

Mục đích của hàm chi phí là thể hiện mức độ "khó chịu" của bạn với những dự đoán sai, cụ thể là "sai" nào làm phiền bạn nhất. Điều này đặc biệt quan trọng đối với các phản ứng nhị phân, nhưng có thể quan trọng trong mọi tình huống.

Lỗi bình phương trung bình (của phản hồi)

C=1ni(YiY^i)2

Sử dụng MSE, bạn cũng nhạy cảm như nhau đối với các lỗi từ bên trên và bên dưới và nhạy cảm như nhau đối với các dự đoán lớn và nhỏ. Đây là một điều khá chuẩn để làm, và vì vậy tôi không nghĩ sẽ bị cau mày trong hầu hết các tình huống.

Lỗi bình phương trung bình (của phản hồi nhật ký)

C=1ni(lnYilnY^i)2

Bởi vì bạn đang làm việc với dữ liệu đếm, có thể lập luận rằng bạn không đối xứng cũng như không phân biệt kích thước. Việc tính ra 10 lần cho một dự đoán là 10 rất khác với dự đoán là 1000. Đây là một hàm chi phí có phần "chính tắc", bởi vì bạn đã khớp các chi phí với chức năng liên kết. Điều này đảm bảo rằng chi phí phù hợp với phân phối phương sai được giả định trong mô hình.

Lỗi bình phương

C=1ni(YiY^i)2Y^i

Cách thứ ba sẽ là sử dụng lỗi chi bình phương. Điều này có thể đặc biệt hấp dẫn nếu bạn so sánh GLM của mình với các mô hình dựa trên số đếm khác - đặc biệt nếu có các yếu tố trong GLM của bạn. Tương tự như các phản hồi nhật ký lỗi, điều này sẽ mở rộng theo kích thước, nhưng nó đối xứng xung quanh số lượng dự đoán. Bây giờ bạn đang đánh giá mức độ phù hợp dựa trên sai số phần trăm.


Về sự bất mãn

Câu hỏi trích dẫn ví dụ tài liệu nơi họ có biến phản ứng nhị phân, vì vậy sử dụng hàm chi phí khác. Vấn đề của phản hồi nhị phân là GLM sẽ dự báo một số thực từ 0 đến 1, mặc dù phản hồi luôn chính xác là 0 hoặc 1. Hoàn toàn hợp lệ khi nói rằng số đó càng gần với phản hồi chính xác thì càng tốt dự báo, nhưng mọi người thường không muốn điều này. Lý do là người ta thường phải hành động như là 0 hoặc 1, và do đó sẽ lấy bất kỳ giá trị nào dưới 0,5 như dự báo cho 0. Trong trường hợp đó, thật đơn giản để đếm số lượng dự báo "sai". Lập luận ở đây là đối với một câu hỏi Đúng / Sai, bạn chỉ có thể đúng hoặc sai - không có sự phân loại sai.

Trong trường hợp của bạn, bạn có dữ liệu đếm. Ở đây, thông thường hơn nhiều để chấp nhận các dự đoán không hỗ trợ giống như phản hồi. Một dự đoán 2,4 trẻ em mỗi gia đình, hoặc 9,7 cái chết mỗi năm. Thông thường, người ta sẽ không cố gắng làm bất cứ điều gì về điều này bởi vì nó không phải là "đúng" hay "sai", gần như bạn có thể nhận được. Nếu bạn thực sự phải có một dự đoán là một số nguyên, có lẽ vì bạn có tỷ lệ đếm rất rất thấp, nên không có lý do gì bạn không thể làm tròn dự đoán trước và đếm "toàn bộ số" hoặc lỗi. Trong trường hợp này, ba biểu thức trên vẫn áp dụng, nhưng bạn chỉ cần lọt vào vòng đầu tiên.Y^


Thay vì làm việc với lỗi bình phương trung bình của lỗi bình phương trung bình của phản hồi chuyển đổi nhật ký, có thể tốt hơn cho GLM sử dụng lỗi bình phương trung bình có trọng số bằng cách sử dụng trọng số 1 / phương sai (được đưa ra bởi khe trọng số $ của đầu ra gl của R, cho poisson = 1 / E (Y)). Công việc này tôi tin cho bất kỳ loại GLM nào.
Tom Wenseleers
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.