Grafik Kurva Probabilitas untuk Model Logit Dengan Banyak Prediktor


12

Saya memiliki fungsi probabilitas berikut:

Prob=11+ez

dimana

z=B0+B1X1++BnXn.

Model saya terlihat seperti

Pr(Y=1)=11+exp([3.92+0.014×(bid)])

Ini divisualisasikan melalui kurva probabilitas yang terlihat seperti yang di bawah ini.

masukkan deskripsi gambar di sini

Saya sedang mempertimbangkan menambahkan beberapa variabel ke persamaan regresi asli saya. Katakanlah saya menambahkan jenis kelamin (kategorikal: F dan M) dan usia (kategorikal: <25 dan> 26) ke dalam model, saya berakhir dengan:

Pr(Y=1)=11+exp([3.92+0.014×(bid)+0.25×(gender)+0.15×(age)])

Di RI dapat menghasilkan kurva probabilitas yang sama yang akan memberi tahu saya probabilitas Y = 1 saat menghitung ketiga prediktor. Di mana saya tersesat adalah saya ingin menemukan probabilitas untuk setiap kemungkinan permutasi dari variasi ini.

Jadi ketika tawaran = 1, jenis kelamin = M, dan usia adalah> = 26, berapakah probabilitas bahwa Y = 1? Demikian pula, ketika tawaran = 2, jenis kelamin = F, dan usia adalah> = 26, berapakah probabilitas bahwa Y = 1?

Saya ingin menghasilkan kurva probabilitas yang akan memungkinkan saya untuk memvisualisasikan ini.

Adakah yang bisa membantu? Saya mungkin benar-benar salah paham informasi seperti apa yang dapat diperoleh dari model logit, tapi tolong beri tahu saya jika saya juga salah paham teori.


Apakah Anda ingin kode melakukan ini dalam R, atau hanya untuk memahami masalah secara konseptual?
gung - Reinstate Monica

Jika saya harus memilih, saya akan mengatakan masalah secara konseptual. Saya pikir kode R saya bisa mengatur untuk mencari tahu sendiri.
ATMathew

2
Jika Anda merasa nyaman menyelesaikan masalah yang sama dengan regresi biasa (kuadrat terkecil), maka mengapa tidak hanya menyatakan respons sebagai peluang log (yang hanya ) dan gunakan teknik yang Anda ketahui? B0+B1X1++BnXn
Whuber

1
Tentu, lihat paket @FrankHarrell rms (dokumentasi luas dapat ditemukan di situs web RMS ). Mulai dengan Predict()dan plot.Predict()fungsi untuk merasakan apa yang bisa dilakukan (ini termasuk merencanakan sebagai fungsi , dengan ditetapkan pada nilai default, atau nilai tetap pilihan Anda). Pr(Y=1|x2,,xp)x1x2,,xp
chl

Jawaban:


24

Untungnya bagi Anda, Anda hanya memiliki satu kovariat terus menerus. Dengan demikian, Anda bisa membuat empat plot (yaitu, 2 SEX x 2 AGE), masing-masing dengan hubungan antara BID dan . Sebagai alternatif, Anda dapat membuat satu plot dengan empat garis berbeda di atasnya (Anda bisa menggunakan gaya garis, bobot, atau warna yang berbeda untuk membedakannya). Anda bisa mendapatkan garis prediksi ini dengan menyelesaikan persamaan regresi di masing-masing dari empat kombinasi untuk rentang nilai BID. p(Y=1)

Situasi yang lebih rumit adalah di mana Anda memiliki lebih dari satu kovariat terus menerus. Dalam kasus seperti ini, sering kali ada kovariat tertentu yang 'primer' dalam arti tertentu. Kovariat itu dapat digunakan untuk sumbu X. Kemudian Anda memecahkan beberapa nilai yang telah ditentukan sebelumnya dari kovariat lainnya, biasanya rata-rata dan +/- 1SD. Pilihan lain termasuk berbagai jenis plot 3D, copot, atau plot interaktif.

Jawaban saya untuk pertanyaan yang berbeda di sini memiliki informasi tentang berbagai plot untuk mengeksplorasi data dalam lebih dari 2 dimensi. Kasing Anda pada dasarnya analog, kecuali bahwa Anda tertarik untuk menyajikan nilai prediksi model, bukan nilai mentah.

Memperbarui:

Saya telah menulis beberapa kode contoh sederhana dalam R untuk membuat plot ini. Izinkan saya mencatat beberapa hal: Karena 'tindakan' terjadi lebih awal, saya hanya menjalankan BID hingga 700 (tapi jangan ragu untuk memperpanjangnya hingga 2000). Dalam contoh ini, saya menggunakan fungsi yang Anda tentukan dan mengambil kategori pertama (yaitu, wanita dan muda) sebagai kategori referensi (yang merupakan default dalam R). Seperti @whuber catat dalam komentarnya, Model LR linear dalam odds log, sehingga Anda dapat menggunakan blok pertama dari nilai yang diprediksi dan plot seperti yang Anda lakukan dengan regresi OLS jika Anda memilih. Logit adalah fungsi tautan, yang memungkinkan Anda untuk menghubungkan model ke probabilitas; blok kedua mengubah peluang log menjadi probabilitas melalui kebalikan dari fungsi logit, yaitu, dengan secara eksponensial (berubah menjadi odds) dan kemudian membagi peluang tersebut dengan peluang 1+. (Saya membahas sifat fungsi tautan dan jenis model ini di sini , jika Anda ingin info lebih lanjut.)

BID = seq(from=0, to=700, by=10)

logOdds.F.young = -3.92 + .014*BID
logOdds.M.young = -3.92 + .014*BID + .25*1
logOdds.F.old   = -3.92 + .014*BID         + .15*1
logOdds.M.old   = -3.92 + .014*BID + .25*1 + .15*1

pY.F.young = exp(logOdds.F.young)/(1+ exp(logOdds.F.young))
pY.M.young = exp(logOdds.M.young)/(1+ exp(logOdds.M.young))
pY.F.old   = exp(logOdds.F.old)  /(1+ exp(logOdds.F.old))
pY.M.old   = exp(logOdds.M.old)  /(1+ exp(logOdds.M.old))

windows()
  par(mfrow=c(2,2))
  plot(x=BID, y=pY.F.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young women")
  plot(x=BID, y=pY.M.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young men")
  plot(x=BID, y=pY.F.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old women")
  plot(x=BID, y=pY.M.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old men")

Yang menghasilkan plot berikut:
masukkan deskripsi gambar di sini
Fungsi-fungsi ini cukup mirip sehingga pendekatan plot empat-paralel yang saya uraikan pada awalnya tidak terlalu berbeda. Kode berikut mengimplementasikan pendekatan 'alternatif' saya:

windows()
  plot(x=BID, y=pY.F.young, type="l", col="red", lwd=1, 
       ylab="Pr(Y=1)", main="predicted probabilities")
  lines(x=BID, y=pY.M.young, col="blue", lwd=1)
  lines(x=BID, y=pY.F.old,   col="red",  lwd=2, lty="dotted")
  lines(x=BID, y=pY.M.old,   col="blue", lwd=2, lty="dotted")
  legend("bottomright", legend=c("young women", "young men", 
         "old women", "old men"), lty=c("solid", "solid", "dotted",
         "dotted"), lwd=c(1,1,2,2), col=c("red", "blue", "red", "blue"))

memproduksi pada gilirannya, plot ini:
masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.