Bagaimana menilai kekuatan prediktif seperangkat prediktor kategoris dari hasil biner? Hitung probabilitas atau regresi logistik?

10

Saya mencoba menentukan apakah probabilitas sederhana akan bekerja untuk masalah saya atau apakah akan lebih baik menggunakan (dan mempelajari) metode yang lebih canggih seperti regresi logistik.

Variabel respons dalam masalah ini adalah respons biner (0, 1). Saya memiliki sejumlah variabel prediktor yang semuanya kategorikal dan tidak berurutan. Saya mencoba menentukan kombinasi variabel prediktor mana yang menghasilkan proporsi 1 tertinggi. Apakah saya perlu regresi logistik? Bagaimana menguntungkan jika hanya menghitung proporsi dalam set sampel saya untuk setiap kombinasi dari prediktor kategoris?

Rachel
sumber
Jika Anda memiliki lebih dari 1 prediktor, mungkin sulit untuk melakukan ini tanpa semacam model regresi. Apa yang ada dalam pikiranmu? Hanya tabel kontigensi dimensi besar ( k adalah jumlah prediktor)? kk
Makro
Apakah kategori prediktor dikelompokkan menjadi lebih dari satu faktor, & jika ya, apakah itu dilintasi atau disarangkan? Juga, apakah Anda hanya tertarik untuk membuat pernyataan deskriptif? Jika data Anda kompleks, model LR mungkin lebih nyaman, & jika Anda ingin membuat kesimpulan, LR sangat disukai, saya pikir.
gung - Reinstate Monica
@ Macro - Ya, saya berpikir itu pada dasarnya akan menjadi tabel besar, dengan satu kolom yang menunjukkan # titik sampel yang sesuai dengan skenario, dan kolom lain menunjukkan proporsi 1. Saya memiliki lima prediktor kategori, masing-masing dengan 10-30 nilai yang mungkin, jadi saya tahu daftar skenario akan tinggi. Saya berpikir untuk skrip loop dalam R yang melewati masing-masing dan menampilkan hasil yang signifikan (proporsi tinggi 1's ditambah besar # poin sampel dalam skenario).
Rachel
@ung - Faktor-faktor hanya sebagian dilintasi. Tidak ada faktor yang dianggap bersarang. Saya tertarik menemukan kombinasi faktor (misalnya Negara, Pelanggan, Karyawan) yang kemungkinan akan memiliki probabilitas tinggi dari variabel respons yang sama dengan 1.
Rachel
1
@EmreA - Sayangnya, variabel kategori tidak sepenuhnya independen. Beberapa kombinasi akan lebih mungkin daripada yang lain ...
Rachel

Jawaban:

11

Regresi logistik akan, hingga ketidaktepatan numerik, memberikan kecocokan yang sama persis dengan persentase yang ditabulasi. Oleh karena itu, jika variabel independen Anda adalah objek faktorfactor1 , dll., Dan hasil dependen (0 dan 1) adalah x, maka Anda dapat memperoleh efek dengan ekspresi seperti

aggregate(x, list(factor1, <etc>), FUN=mean)

Bandingkan ini dengan

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

Sebagai contoh, mari kita buat beberapa data acak:

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

Ringkasan diperoleh dengan

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

Outputnya termasuk

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

Untuk referensi di masa mendatang, estimasi faktor pada level (1,2,0) pada baris 6 dari output adalah 0,5.

Regresi logistik memberikan koefisiennya dengan cara ini:

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

Untuk menggunakannya, kita membutuhkan fungsi logistik:

logistic <- function(x) 1 / (1 + exp(-x))

Untuk mendapatkan, misalnya, estimasi faktor pada level (1,2,0), hitung

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

(Perhatikan bagaimana semua interaksi harus dimasukkan dalam model dan semua koefisien terkait harus diterapkan untuk mendapatkan perkiraan yang benar.) Outputnya adalah

(Intercept) 
        0.5

setuju dengan hasil aggregate. (Judul "(Intercept)" di output adalah sisa input dan secara efektif tidak berarti untuk perhitungan ini.)


Informasi yang sama dalam bentuk lain muncul di keluaran daritable . Misalnya, output (panjang) dari

table(x, factor1, factor2, factor3)

termasuk panel ini:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

factor121/(21+21)=0.5x1aggregateglm


Akhirnya, kombinasi faktor-faktor yang menghasilkan proporsi tertinggi dalam dataset mudah diperoleh dari output aggregate:

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429
whuber
sumber
1
Ini adalah banyak informasi dan akan membutuhkan waktu bagi saya untuk dicerna, tetapi saya senang mendengar persentase yang ditabulasi dan regresi logistik pada dasarnya akan memberi saya hasil yang sama. Saya menjalankan fungsi agregat pada dua prediktor dan selesai segera ... hasil untuk kecocokan logistik telah berjalan selama beberapa menit dan belum selesai. Saya akan terus mengubah beberapa hal, tetapi saya mungkin berakhir hanya dengan menggunakan persentase yang ditabulasi. Terima kasih!
Rachel
(+1), Tanpa berpikir saya bertanya-tanya apakah kesalahan standar dalam konteks ini dari regresi logistik dapat dimasukkan ke dalam ringkasan plot mosaik grafis yang saya sarankan. Saya juga curiga ini bisa menjadi cara yang baik untuk dengan cepat "memfilter" hasil untuk interaksi yang menarik (ini hanya renungan saya!)
Andy W
"Regresi logistik akan, hingga ketidaktepatan numerik, memberikan kecocokan yang sama persis dengan persentase yang ditabulasi": Bukankah dia menabulasi persentase untuk setiap konfigurasi para prediktor? Dalam hal ini, regresi logistik tidak dapat menyandikan semua hubungan yang mungkin.
Neil G
@Neil Tentu bisa meng-encode semua "hubungan" (kombinasi faktor): gunakan semua kemungkinan interaksi. Lihat kode R untuk contoh. Ketika faktor-faktornya banyak, dalam praktiknya akan ada banyak kombinasi kosong, tetapi perangkat lunak yang layak tidak akan menghadapi masalah dengan itu. Bahkan perangkat lunak yang lebih baik akan menangani kombinasi tanpa variasi respons.
whuber
@Andy Saya suka balasan Anda tentang grafik - kita perlu menemukan cara untuk membuat utas di mana itu jawaban yang tepat! Mungkin pemikiran Anda tentang memasukkan perkiraan kesalahan ke dalam plot mosaik akan menjadi cara untuk mendekatinya: bagaimana Anda akan mewakili perkiraan logistik, data aktual, dan / atau kesalahan secara bersamaan di dalamnya?
whuber
6

Untuk cepat melirik proporsi tanggapan biner dalam setiap kategori dan / atau tergantung pada beberapa kategori, plot grafis dapat dari layanan. Secara khusus, untuk secara simultan memvisualisasikan proporsi yang dikondisikan pada banyak variabel independen kategoris, saya menyarankan Mosaic Plots .

Di bawah ini adalah contoh yang diambil dari posting blog, Memahami plot berdasarkan area: Mosaik plot dari grafik Statistik dan lebih banyak blog. Contoh ini memvisualisasikan proporsi penyintas di Titanic dengan warna biru, tergantung pada kelas penumpang. Seseorang dapat secara simultan menilai proporsi orang yang selamat, sambil tetap menghargai jumlah total penumpang dalam masing-masing subkelompok (informasi yang berguna pasti, terutama ketika sub-kelompok tertentu jumlahnya sedikit dan kami akan mengharapkan lebih banyak variasi acak).

Plot mosaik Titanic
(sumber: theusrus.de )

Satu kemudian dapat membuat plot mosaik berikutnya tergantung pada beberapa variabel independen kategori. Contoh berikutnya dari posting blog yang sama dalam ringkasan visual cepat menunjukkan bahwa semua penumpang anak - anak di kelas pertama dan kedua bertahan, sementara di kelas tiga anak-anak tidak memiliki tarif yang hampir sama. Hal ini juga jelas menunjukkan bahwa perempuan dewasa memiliki tingkat kelangsungan hidup yang jauh lebih tinggi dibandingkan dengan laki-laki di setiap kelas, meskipun proporsi perempuan yang selamat di antara kelas berkurang cukup dari kelas pertama ke kedua ke ketiga (dan kemudian relatif tinggi lagi untuk kru, meskipun Sekali lagi perhatikan tidak banyak anggota kru perempuan, mengingat betapa sempitnya bar).

Mosaik tergantung pada variabel ketiga
(sumber: theusrus.de )

Sungguh menakjubkan betapa banyak informasi yang ditampilkan, ini adalah proporsi dalam empat dimensi (Kelas, Dewasa / Anak, Jenis Kelamin dan Proporsi Korban)!

Saya setuju jika Anda tertarik pada prediksi atau lebih banyak penjelasan sebab-akibat pada umumnya Anda ingin beralih ke pemodelan yang lebih formal. Plot grafis dapat menjadi petunjuk visual yang sangat cepat mengenai sifat data, dan dapat memberikan wawasan lain yang sering terlewatkan ketika hanya memperkirakan model regresi (terutama ketika mempertimbangkan interaksi antara berbagai variabel kategori yang berbeda).

Andy W
sumber
+1, ini adalah poin yang saya coba sampaikan dalam komentar saya di atas mengenai apakah tujuannya adalah deskripsi sederhana atau inferensi. Nb, intinya lebih jelas & lebih baik dibuat dengan angka!
gung - Reinstate Monica
@ung terima kasih, apa artinya Nb? Saya selalu mengatakan lebih baik dengan angka juga!
Andy W
2
Bukan apa pun yang terkait dengan statistik, "nb" adalah singkatan dari nota bene , yang pada gilirannya adalah bahasa Latin untuk 'note well' (harfiah), atau 'note that' / 'notice' (lebih bahasa sehari-hari).
gung - Reinstate Monica
3

Bergantung pada kebutuhan Anda, Anda mungkin menemukan bahwa partion rekursif menyediakan metode yang mudah ditafsirkan untuk memprediksi variabel hasil. Untuk pengantar R untuk metode ini, lihat halaman model Quick-R Tree-based . Saya biasanya mendukung ctree()implementasi dalam paket partai R karena tidak perlu khawatir tentang pemangkasan, dan secara default menghasilkan grafis yang cantik.

Ini akan jatuh ke dalam kategori algoritma pemilihan fitur yang disarankan dalam jawaban sebelumnya, dan umumnya memberikan prediksi yang lebih baik atau tidak sama baiknya dengan regresi logistik.

fmark
sumber
2

205

Jika Anda memiliki lebih sedikit data, Anda ingin mempelajari lebih sedikit parameter. Anda dapat mengurangi jumlah parameter dengan mengasumsikan, misalnya, bahwa konfigurasi peramal individual memiliki efek yang konsisten pada variabel respons.

Jika Anda yakin bahwa prediktor Anda independen satu sama lain, maka regresi logistik adalah algoritma unik yang melakukan hal yang benar. (Bahkan jika mereka tidak independen, itu masih bisa dilakukan dengan cukup baik.)

Singkatnya, regresi logistik membuat asumsi tentang pengaruh independen dari prediktor, yang mengurangi jumlah parameter model, dan menghasilkan model yang mudah dipelajari.

Neil G
sumber
1

Anda harus melihat algoritma pemilihan fitur. Salah satu yang cocok untuk kasus Anda (klasifikasi biner, variabel kategori) adalah metode "minimum Redundancy Maximum Relevance" (mRMR). Anda dapat dengan cepat mencobanya secara online di http://penglab.janelia.org/proj/mRMR/

emrea
sumber
Apakah mungkin menjalankan program ini dengan lebih dari satu prediktor kategori? Di halaman unggahan sepertinya hanya kolom pertama yang bisa menjadi "kelas" data ... Mungkin saya tidak mengerti bagaimana seharusnya data diformat.
Rachel
Atau "kelas" seharusnya menjadi variabel output, dalam hal ini 0 atau 1? Jika demikian, apakah penting untuk mengubah variabel kategori menjadi variabel dummy untuk menunjukkan indikator untuk masing-masing?
Rachel
Anda dapat memiliki banyak prediktor yang Anda inginkan. Baris pertama file data Anda haruslah nama-nama fitur, dan kolom pertama haruslah kelas (variabel respons) untuk sampel. Jadi, sebuah contoh adalah: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
emrea
1

Saya bekerja di bidang penilaian kredit, di mana apa yang disajikan di sini sebagai kasus aneh adalah normanya.

Kami menggunakan regresi logistik, dan mengubah variabel kategorikal dan kontinu menjadi bobot bukti (WOEs), yang kemudian digunakan sebagai prediktor dalam regresi. Banyak waktu dihabiskan mengelompokkan variabel kategori, dan mendiskritisasi (binning / classing) variabel kontinu.

Bobot bukti adalah perhitungan sederhana. Ini adalah log odds untuk kelas, kurang log odds untuk populasi:
WOE = ln (Baik (Kelas) / Buruk (Kelas)) - ln (Baik (SEMUA) / Buruk (SEMUA)) Ini adalah metodologi transformasi standar untuk hampir semua model penilaian kredit yang dibangun menggunakan regresi logistik. Anda dapat menggunakan angka yang sama dalam pendekatan satu demi satu.

Keindahannya adalah bahwa Anda akan selalu tahu apakah koefisien yang ditugaskan untuk setiap WOE masuk akal. Koefisien negatif bertentangan dengan pola dalam data, dan biasanya hasil dari multikolinieritas; dan koefisien lebih dari 1,0 mengindikasikan kelebihan kompensasi. Sebagian besar koefisien akan keluar di suatu tempat antara nol dan satu.

Raymond Anderson
sumber
Terima kasih untuk posting yang menarik dan informatif. Saya tidak tahu bagaimana cara menjawab pertanyaan di utas ini. Apa "kasus aneh" yang Anda maksud? Apakah Anda mungkin bermaksud menggunakan ini untuk membalas pertanyaan lain di tempat lain?
whuber