Menambahkan bobot pada regresi logistik untuk data yang tidak seimbang

21

Saya ingin memodelkan regresi logistik dengan data yang tidak seimbang (9: 1). Saya ingin mencoba opsi bobot dalam glmfungsi di R, tapi saya tidak 100% yakin apa fungsinya.

Katakanlah variabel output saya c(0,0,0,0,0,0,0,0,0,1). sekarang saya ingin memberi "1" 10 kali lebih berat. jadi saya memberikan argumen bobot weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Ketika saya melakukan itu, itu akan dipertimbangkan dalam perhitungan kemungkinan maksimum. Apakah saya benar? kesalahan klasifikasi "1" hanya 10 kali lebih buruk daripada kesalahan klasifikasi "0".

ching
sumber

Jawaban:

11

Ching, Anda tidak harus membuat data Anda seimbang dalam hal 1 dan 0. Yang Anda butuhkan adalah angka 1 yang cukup untuk kemungkinan maksimum untuk bertemu. Melihat distribusi 1 (100.000) dalam dataset Anda, Anda seharusnya tidak memiliki masalah. Anda dapat melakukan percobaan sederhana di sini

  1. Contoh 10% dari 1 dan 10% dari 0 dan gunakan bobot 10 untuk keduanya
  2. Sampel 100% dari angka 1 dan 10% dari angka 0 dan gunakan bobot 10 untuk angka 0

Dalam kedua kasus, Anda akan mendapatkan perkiraan yang identik. Sekali lagi gagasan pembobotan terkait dengan pengambilan sampel. Jika Anda menggunakan seluruh kumpulan data, Anda tidak perlu membobotnya. Jika saya jadi Anda, saya hanya akan menggunakan 10% jika 1 dan 10% dari 0.

Di R, Anda akan menggunakan glm. Berikut ini contoh kode:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

Dalam dataset Anda harus ada variabel wtuntuk bobot.

Jika Anda menggunakan 10% dari 0 dan 1, wtvariabel Anda akan memiliki nilai 10.

Jika Anda menggunakan 10% dari 0 dan 100% dari 1: wtvariabel akan memiliki nilai 10 untuk pengamatan dengan y = 0 dan 1 untuk pengamatan dengan y = 1

subra
sumber
12

Pembobotan adalah prosedur yang menimbang data untuk mengkompensasi perbedaan dalam sampel dan populasi (King 2001). Sebagai contoh, dalam peristiwa langka (seperti penipuan dalam risiko kredit, kematian dalam literatur medis) kita cenderung mengambil sampel semua angka 1 (kejadian langka) dan sebagian kecil dari angka 0 (bukan kejadian). Dalam kasus seperti itu kita harus mempertimbangkan pengamatan.

Contoh: Katakanlah, dalam populasi 500.000 transaksi ada 50 transaksi penipuan. Dalam hal ini Anda akan melakukannya

  1. Cicipi seluruh 50 transaksi penipuan (100% penipuan)
  2. 10% dari transaksi yang baik (10% dari 500.000 adalah 50.000 transaksi yang baik)

Dalam hal ini Anda akan menetapkan bobot 1 untuk transaksi penipuan dan bobot 10 untuk transaksi yang baik. Ini disebut metode Weighted Maximum Likelihood. Yang penting adalah bahwa pembobotan terkait dengan proporsi pengambilan sampel

Lihat: Regresi Logistik dalam Data Peristiwa Langka (King 2001)

subra
sumber
hai subra !!! terima kasih banyak atas pendekatan Raja !! belum pernah mendengarnya! dalam kasus saya, saya punya 1 juta transaksi! (900.000 adalah "0", dan 100.000 adalah "1"). jadi haruskah saya mencicipi 10% dari "0" saya? maka saya memiliki kumpulan data yang hampir seimbang. maka saya harus menimbang "0" sepuluh kali lebih banyak daripada "1" kan? dan fungsi dalam R glm () dalam paket MASS tepat bukan? jika saya mempertimbangkan pengamatan saya, saya akan menghitung kemungkinan maksimum tertimbang? Terima kasih! sangat menghargai jawaban dan bantuan Anda
ching
Saya benar-benar berpikir banyak tentang masalah ini. bagaimana jika saya katakan: sekarang gunakan semua data saya untuk membangun model logit (dengan data tidak seimbang 9: 1). dan kemudian saya menimbang "1" saya sepuluh kali, bahkan pada kenyataannya saya tidak memiliki lebih banyak data dan BUKAN 10% dari data saya. itu seperti, saya bertindak seperti yang saya miliki ..... jadi sekarang ketika R menghitung model, ia berpikir saya hanya menggunakan 10% dari "1" saya dan menganggapnya dalam perhitungan kemungkinan. apakah itu masuk akal?
ching