Trường hợp hồi quy logistic có trọng số


9

Tôi đang xem xét một vài vấn đề hồi quy logistic. ("Thường xuyên" và "có điều kiện").

Lý tưởng nhất là tôi muốn tính trọng số của từng trường hợp đầu vào để glm sẽ tập trung nhiều hơn vào việc dự đoán các trường hợp có trọng số cao hơn một cách chính xác với chi phí có thể phân loại sai các trường hợp có trọng số thấp hơn.

Chắc chắn điều này đã được thực hiện trước đây. Bất cứ ai cũng có thể chỉ cho tôi một số tài liệu liên quan (Hoặc có thể đề xuất một chức năng khả năng đã sửa đổi.)

Cảm ơn!


1
Bạn đang cho rằng phân loại là mục tiêu, trái ngược với dự đoán. Để ước tính tối ưu xác suất bạn không cần phải cân lại bất cứ điều gì. "Âm tính giả" và "dương tính giả" chỉ xảy ra với các lựa chọn bắt buộc và thường không ai buộc phải lựa chọn nhị phân thuần túy.
Frank Harrell

@Frank Bạn làm cho một điểm tốt. Cuối cùng, mục tiêu của dự án này là dự đoán kết quả của các sự kiện tiếp theo. (Vì vậy, tôi đoán nó có thể được coi là một sở thích học máy với dữ liệu đào tạo.) Một số kết quả "quan trọng" hơn những thứ khác, vì vậy tôi đang tìm cách để cân chúng phù hợp. Đề xuất của Nick cho hàm khả năng có ý nghĩa và nên khá đơn giản để thực hiện trong mã.

1
Âm thanh như bạn cần chính xác một mô hình xác suất không cần trọng lượng.
Frank Mitchell

1
Đúng; cắm vào hàm chi phí và sử dụng xác suất dự đoán và bạn có một quyết định tối ưu.
Frank Harrell

1
Với một mô hình xác suất được hiệu chỉnh tốt, không có "lỗi", chỉ có sự ngẫu nhiên không thể dự đoán được. Các quyết định tối ưu là một chức năng của xác suất dự đoán và hàm chi phí để đưa ra các quyết định khác nhau để hành động.
Frank Harrell

Câu trả lời:


3

glmgiữ một tham số weightschính xác cho mục đích này. Bạn cung cấp cho nó một vectơ số trên bất kỳ thang đo nào, có cùng số lượng trọng lượng như bạn có các quan sát.

Bây giờ tôi chỉ nhận ra rằng bạn có thể không nói chuyện R. Nếu không, bạn có thể muốn.


Tôi rất quen thuộc với R, tuy nhiên tôi muốn hiểu toán học đằng sau hàm khả năng. Tôi có thể viết mã này bằng C ++ hoặc một số ngôn ngữ khác. (Chỉ cần tin tưởng vào "hộp đen" của chức năng glm không phải lúc nào cũng là giải pháp tốt nhất)

Ah. Tốt cho bạn Chà, theo như tôi biết, các trọng số chỉ đơn giản được sử dụng để nhân hệ số loglik per per quan sát với. Vì vậy, nếu bạn đã viết một phiên bản không có trọng số, việc thêm trọng lượng sẽ là một cách né tránh. Cũng lưu ý rằng bạn luôn có thể xem mã nguồn glmđể (có thể) tìm thấy triển khai C.
Nick Sabbe

2
@Nick, tôi cũng đã hiểu sai rằng đây là chức năng của đối số trọng số trong glm - không phải vậy. Nó thực sự được sử dụng khi kết quả nhị thức không đồng nhất theo nghĩa là chúng dựa trên số lượng thử nghiệm khác nhau. Ví dụ: nếu quan sát đầu tiên là Binomial ( ) và lần thứ hai là Binomial ( ), trọng lượng của chúng sẽ là . Một lần nữa, đối số trọng số trong glm () KHÔNG lấy mẫu trọng số. Để thực hiện điều này trong R, bạn sẽ cần mở rộng tập dữ liệu theo các trọng số và điều chỉnh mô hình phù hợp với tập dữ liệu mở rộng (tuy nhiên SE có thể sai trong trường hợp này). 7 , .5 3 , 73,.57,.53,7
Macro

3
Dưới đây là một cuộc thảo luận về đối số 'trọng số' trên bảng tin: r.789695.n4.nabble.com/ Weights
Macro

@Macro: thx! Rât gọn gang. Một trong những điều có thể khiến tôi đau răng nếu tôi sử dụng nó trước nhận xét của bạn :-)
Nick Sabbe

1

Nếu bạn có quyền truy cập vào SAS, điều này rất dễ thực hiện bằng PROC GENMOD. Miễn là mỗi quan sát có một biến trọng số, việc sử dụng câu lệnh trọng số sẽ cho phép bạn thực hiện loại phân tích mà bạn đang tìm kiếm. Tôi hầu như đã sử dụng nó bằng cách sử dụng các trọng số điều trị ngược, nhưng tôi không hiểu lý do tại sao bạn không thể gán trọng số cho dữ liệu của mình để nhấn mạnh một số trường hợp nhất định, miễn là bạn đảm bảo N của bạn không đổi. Bạn cũng sẽ muốn đảm bảo bao gồm một số loại biến ID, vì về mặt kỹ thuật, các trường hợp tăng cân là các quan sát lặp đi lặp lại. Mã ví dụ, với ID quan sát là 'id' và biến trọng số là 'wt':

proc genmod data=work.dataset descending;
    class id;
    model exposure = outcome covariate / dist=bin link=logit;
    weight wt;
    repeated subject=id/type=ind;
run;
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.