Regresi logistik berbobot kasus

9

Saya sedang melihat beberapa masalah regresi logistik. ("reguler" dan "bersyarat").

Idealnya, saya ingin memberi bobot pada masing-masing kasus masukan sehingga GLM akan lebih fokus pada memprediksi kasing yang lebih tinggi dengan benar dengan mengorbankan kemungkinan kesalahan klasifikasi pada kasing yang lebih rendah.

Tentunya ini sudah dilakukan sebelumnya. Adakah yang bisa mengarahkan saya ke beberapa literatur yang relevan (Atau mungkin menyarankan fungsi kemungkinan dimodifikasi.)

Terima kasih!

Nuh
sumber
1
Anda mengasumsikan bahwa klasifikasi adalah tujuannya, dan bukan prediksi. Untuk estimasi probabilitas yang optimal, Anda tidak perlu menimbang ulang apa pun. "False negative" dan "false positive" hanya terjadi dengan pilihan yang dipaksakan, dan biasanya tidak ada yang memaksakan pilihan biner murni.
Frank Harrell
@ Frank Anda membuat poin yang bagus. Pada akhirnya, tujuan dari proyek ini adalah untuk memprediksi hasil dari acara selanjutnya. (Jadi, saya kira itu bisa dianggap sebagai pembelajaran mesin rasa dengan data pelatihan.) Beberapa hasil lebih "penting" daripada yang lain, jadi saya sedang mencari cara untuk menimbang mereka sesuai. Saran Nick untuk fungsi kemungkinan masuk akal dan harus cukup sepele untuk diterapkan dalam kode.
Noah
1
Kedengarannya seperti Anda membutuhkan model probabilitas tepat tanpa perlu bobot.
Frank Harrell
1
Baik; pasang fungsi biaya dan gunakan probabilitas yang diprediksi dan Anda memiliki keputusan yang optimal.
Frank Harrell
1
Dengan model probabilitas yang terkalibrasi dengan baik tidak ada "kesalahan", hanya ada keacakan yang tidak dapat diprediksi. Keputusan yang optimal adalah fungsi dari probabilitas yang diprediksi dan fungsi biaya untuk membuat berbagai keputusan untuk bertindak.
Frank Harrell

Jawaban:

3

glmmemegang parameter weightstepat untuk tujuan ini. Anda memberinya vektor angka pada skala apa pun, yang memiliki jumlah bobot yang sama dengan yang Anda amati.

Saya baru sekarang menyadari bahwa Anda mungkin tidak berbicara R. Jika tidak, Anda mungkin mau.

Nick Sabbe
sumber
Saya sangat akrab dengan R, namun saya ingin memahami matematika di balik fungsi kemungkinan. Saya mungkin kode ini dalam C ++ atau bahasa lain. (Hanya mempercayai "blackbox" dari fungsi glm tidak selalu merupakan solusi terbaik)
Noah
Ah. Bagus untukmu. Sejauh yang saya tahu, bobot hanya digunakan untuk melipatgandakan kemungkinan log-per-observasi dengan. Jadi, jika Anda telah menulis versi yang tidak berbobot, menambahkan bobot harus menjadi doddle. Perhatikan juga bahwa Anda selalu dapat melihat kode sumber untuk glm(mungkin) menemukan implementasi C.
Nick Sabbe
2
@Nick, saya juga berada di bawah kesalahpahaman bahwa ini adalah fungsi dari argumen bobot di GLM - tidak. Ini sebenarnya digunakan ketika hasil binomial tidak homogen dalam arti bahwa mereka didasarkan pada jumlah percobaan yang berbeda. Sebagai contoh, jika pengamatan pertama adalah Binomial ( ) dan yang kedua adalah Binomial ( ), bobotnya adalah . Sekali lagi, argumen bobot dalam glm () BUKAN mengambil sampel bobot. Untuk melakukan ini di R, Anda perlu memperluas set data sesuai dengan bobot dan menyesuaikan model dengan set data yang diperluas (SEs mungkin salah dalam hal ini). 7 , .5 3 , 73,.57,.53,7
Makro
3
Berikut ini adalah diskusi tentang argumen 'bobot' di papan pesan: r.789695.n4.nabble.com/Weights-in-binomial-glm-td1991249.html
Makro
@ Macro: thx! Sangat rapi. Salah satu hal yang bisa memukul saya di gigi jika saya menggunakannya sebelum komentar Anda :-)
Nick Sabbe
1

Jika Anda memiliki akses ke SAS, ini sangat mudah dilakukan menggunakan PROC GENMOD. Selama setiap pengamatan memiliki variabel bobot, penggunaan pernyataan bobot akan memungkinkan Anda melakukan jenis analisis yang Anda cari. Saya sebagian besar menggunakannya menggunakan bobot Inverse-Probability-of-Treatment, tapi saya tidak melihat alasan mengapa Anda tidak dapat menetapkan bobot pada data Anda untuk menekankan jenis kasus tertentu, selama Anda memastikan N Anda tetap konstan. Anda juga ingin memastikan untuk memasukkan semacam variabel ID, karena secara teknis kasus-kasus yang kelebihan berat badan adalah pengamatan berulang. Kode contoh, dengan ID observasi 'id' dan variabel bobot '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;
Fomite
sumber