Bagaimana regresi logistik menggunakan distribusi binomial?

19

Saya mencoba memahami bagaimana regresi logistik menggunakan distribusi binomial.

Katakanlah saya sedang mempelajari keberhasilan sarang pada burung. Peluang keberhasilan sarang adalah 0,6. Menggunakan distribusi binomial, saya dapat menghitung probabilitas r keberhasilan yang diberikan n percobaan (jumlah sarang dipelajari).

Tetapi bagaimana distribusi binomial digunakan dalam konteks pemodelan? Katakanlah saya ingin tahu bagaimana suhu harian mempengaruhi keberhasilan sarang dan saya menggunakan regresi logistik untuk mengeksplorasi pertanyaan ini.

Dalam konteks yang telah saya jelaskan, bagaimana regresi logistik menggunakan distribusi binomial?

Saya mencari jawaban yang intuitif, karena itu jawaban tanpa persamaan! Saya pikir persamaan hanya berguna setelah pemahaman telah dicapai pada tingkat intuitif.

luciano
sumber
kemungkinan rangkap dari Bantuan Menerjemahkan R GLM Command ke Notasi Matematika
Sycorax mengatakan Reinstate Monica
2
Itu utas referensi yang bagus, @ user777, tapi saya pikir itu mungkin tidak berfungsi sebagai duplikat jika OP secara khusus meminta penjelasan tanpa persamaan. Namun, pertanyaan yang bagus adalah apakah peran distribusi binomial dapat dijelaskan dengan baik tanpa persamaan. Tentu saja LR dapat diberikan penjelasan intuitif, tetapi peran binomial w / i LR secara inheren agak matematis.
gung - Reinstate Monica
@gung Meminta maaf kepada luciano. Melihat "distribusi binomial" menimpa "tidak ada persamaan" ketika saya mempertimbangkan kemungkinan jawaban. Jelas itu tidak konsisten dengan permintaan OP.
Sycorax berkata Reinstate Monica
Saya merasa saya sudah memahami gagasan menggunakan skala peluang log untuk regresi kemudian mengubah dari skala logit ke skala 0-1. Tapi saya terus membaca hal-hal di sepanjang baris 'kesalahan didistribusikan secara biner'. Bagaimana kesalahan didistribusikan secara biner?
luciano
5
Apa pun buku yang Anda baca, buanglah.
Scortchi

Jawaban:

7

Misalkan Anda mengamati beberapa sarang pada suhu harian rata-rata yang berbeda . Bagaimana probabilitas π ( t ) dari keberhasilan sarang tergantung pada suhu t ? (Jika sarang independen, jumlah sarang yang berhasil pada suhu t kemudian didistribusikan secara binerial dengan n sama dengan jumlah sarang yang diamati dan probabilitas keberhasilan π ( t ) .)tπ(t)ttnπ(t)

Regresi logistik adalah salah satu pendekatan (menggunakan fungsi logistik) untuk menentukan probabilitas keberhasilan sebagai fungsi suhu melalui peregangan dan pergeseran kurva logistik, dengan jumlah peregangan dan pergeseran yang diperlukan untuk diperkirakan dari data.

kuda betina
sumber
15

Tanpa persamaan? Astaga. Ayo lihat:

Model regresi logistik secara harfiah adalah model untuk parameter p dari distribusi binomial; dengan prediktor berkelanjutan, setiap titik dapat memiliki distribusinya sendiri. (Dalam kasus di mana pengamatan 0-1, kami menangani kasus khusus Bernoulli; ini adalah situasi yang umum.)

The n diberikan, tidak dimodelkan. Jadi hasilnya adalah, dengan model yang menghubungkan pi dan ni diketahui , kita dapat memodelkan data binomial dalam hal prediktor yang menggambarkan mean (dan varians) melalui modelnya untuk p . Model ini mungkin cocok melalui estimasi kemungkinan maksimum, tetapi karena bentuk khusus (keluarga eksponensial), ML relatif "baik".

Karena tautan logistik adalah kanonik untuk keluarga binomial, itu bahkan lebih baik, karena statistik yang cukup adalah bentuk yang sangat sederhana - ini membuatnya nyaman untuk berurusan dengan sampel besar, atau bahkan untuk mengembangkan algoritma 'online'.

Tentu saja, p , sebagai probabilitas, terletak di antara 0 dan 1. Ini, tentu saja, berarti bahwa ketika kita menulis model untuk itu dalam hal beberapa variabel lain, model itu tidak boleh menerobos batas-batas itu, sehingga variabel independen mendapat cukup besar atau kecil, hubungan harus membungkuk untuk tetap berada di dalam batas.

Dengan regresi logistik, kurva itu (fungsi tautan) adalah fungsi logistik. Fungsi lain dimungkinkan, dan banyak paket mengimplementasikan beberapa (R memiliki tiga yang sesuai dibangun ke dalam glmfungsinya jika saya ingat benar).


Tidak ada simbol kesetaraan yang dirusak dalam pembuatan pos ini.

Glen_b -Reinstate Monica
sumber
2

Model Anda menganggap keberhasilan sebuah sarang dapat dilihat sebagai pertaruhan: Tuhan membalikkan koin yang dimuat dengan sisi berlabel "sukses" dan "gagal." Hasil flip untuk satu sarang tidak tergantung pada hasil flip untuk sarang lainnya.

Burung-burung memang memiliki sesuatu untuk mereka, meskipun: koin mungkin sangat mendukung kesuksesan pada beberapa suhu dibandingkan dengan yang lain. Jadi, ketika Anda memiliki kesempatan untuk mengamati sarang pada suhu tertentu, jumlah keberhasilan sama dengan jumlah keberhasilan membalik dari koin yang sama - satu untuk suhu itu. Distribusi Binomial yang sesuai menggambarkan peluang keberhasilan. Artinya, ia menetapkan probabilitas nol keberhasilan, satu, dua, ... dan seterusnya melalui jumlah sarang.

Satu perkiraan yang masuk akal dari hubungan antara suhu dan bagaimana Tuhan memuat koin diberikan oleh proporsi keberhasilan yang diamati pada suhu itu. Ini adalah taksiran Maximum Likelihood (MLE).

71033/7.3/73

5,10,15,200,3,2,32,7,5,3

Baris atas gambar menunjukkan MLE pada masing-masing dari empat suhu yang diamati. Kurva merah di panel "Fit" melacak bagaimana koin dimuat, tergantung pada suhu. Dengan konstruksi, jejak ini melewati masing-masing titik data. (Apa yang dilakukannya pada suhu menengah tidak diketahui; Saya telah dengan kasar menghubungkan nilai-nilai untuk menekankan titik ini.)

Model "jenuh" ini tidak terlalu berguna, justru karena itu tidak memberi kita dasar untuk memperkirakan bagaimana Allah akan memuat koin pada suhu menengah. Untuk melakukan itu, kita perlu mengira ada semacam kurva "tren" yang menghubungkan muatan koin dengan suhu.

Figure

Baris bawah gambar ini cocok dengan tren seperti itu. Tren terbatas pada apa yang dapat dilakukannya: ketika diplot dalam koordinat yang sesuai ("peluang log"), seperti yang ditunjukkan pada panel "Logit Response" di sebelah kiri, tren ini hanya dapat mengikuti garis lurus. Setiap garis lurus seperti itu menentukan pemuatan koin di semua suhu, seperti yang ditunjukkan oleh garis lengkung yang sesuai di panel "Fit". Pemuatan itu, pada gilirannya, menentukan distribusi Binomial di semua suhu. Baris bawah memplot distribusi tersebut untuk suhu di mana sarang diamati. (Garis hitam putus-putus menandai nilai yang diharapkan dari distribusi, membantu mengidentifikasinya dengan tepat. Anda tidak melihat garis-garis di baris atas gambar karena bertepatan dengan segmen merah.)

Sekarang tradeoff harus dibuat: garis mungkin melewati dekat ke beberapa titik data, hanya untuk membelok jauh dari yang lain. Ini menyebabkan distribusi Binomial yang sesuai untuk menetapkan probabilitas yang lebih rendah untuk sebagian besar nilai yang diamati daripada sebelumnya. Anda dapat melihat ini dengan jelas pada 10 derajat dan 15 derajat: probabilitas nilai yang diamati bukan probabilitas tertinggi yang mungkin, juga tidak mendekati nilai yang ditetapkan di baris atas.

Regresi logistik menggeser dan menggoyangkan garis yang mungkin di sekitar (dalam sistem koordinat yang digunakan oleh panel "Logit Response"), mengubah ketinggiannya menjadi probabilitas Binomial (panel "Fit"), menilai peluang yang ditetapkan untuk pengamatan (empat panel kanan) ), dan memilih garis yang memberikan kombinasi terbaik dari peluang tersebut.

Apa yang "terbaik"? Sederhananya, probabilitas gabungan dari semua data adalah sebesar mungkin. Dengan cara ini, tidak ada probabilitas tunggal (segmen merah) yang dibiarkan benar-benar kecil, tetapi biasanya sebagian besar probabilitas tidak akan setinggi mereka dalam model jenuh.

Berikut adalah satu iterasi dari pencarian regresi logistik di mana garis diputar ke bawah:

Figure 2

Pertama, perhatikan apa yang tetap sama: titik abu-abu di sebar "Fit" diperbaiki karena mereka mewakili data. Demikian juga, rentang nilai dan posisi horizontal dari segmen merah di empat plot Binomial juga tetap, karena mereka juga mewakili data. Namun, baris baru ini memuat koin dengan cara yang sangat berbeda. Dengan begitu,1015derajat tetapi pekerjaan yang mengerikan pas data lainnya. (Pada 5 dan 20 derajat probabilitas Binomial yang ditugaskan untuk data sangat kecil sehingga Anda bahkan tidak dapat melihat segmen merah.) Secara keseluruhan, ini jauh lebih buruk daripada yang ditunjukkan pada gambar pertama.


Saya harap diskusi ini telah membantu Anda mengembangkan citra mental probabilitas Binomial yang berubah karena garis bervariasi, sambil menjaga data tetap sama. Garis yang sesuai dengan upaya regresi logistik mencoba membuat garis merah itu secara keseluruhan setinggi mungkin. Dengan demikian, hubungan antara regresi logistik dan keluarga distribusi Binomial sangat dalam dan intim.


Lampiran: R kode untuk menghasilkan angka

#
# Create example data.
#
X <- data.frame(temperature=c(5,10,15,20),
                nests=c(2,7,5,3),
                successes=c(0,3,2,3))
#
# A function to plot a Binomial(n,p) distribution and highlight the value `k0`.
#
plot.binom <- function(n, p, k0, highlight="#f02020", ...) {
  plot(0:n, dbinom(0:n, n, p), type="h", yaxt="n",
       xlab="Trials", ylab="Probability", ...)
  abline(v = p*n, lty=3, lwd=2)
  if(!missing(k0)) lines(rep(k0,2), c(0, dbinom(k0,n,p)), lwd=2, col=highlight)
}
#
# A function to convert from probability to log odds.
#
logit <- function(p) log(p) - log(1-p)
#
# Fit a saturated model, then the intended model.
#
# Ordinarily the formula for the saturated model would be in the form
# `... ~ factor(temperature)`, but the following method makes it possible to  
# plot the predicted values in a visually effective way.
#
fit.0 <- glm(cbind(successes, nests-successes) ~ factor(round(temperature/5)), 
             data=X, family=binomial)
summary(fit.0)

fit <- glm(cbind(successes, nests-successes) ~ temperature, 
           data=X, family=binomial)
summary(fit)
#
# Plot both fits, one per row.
#
lfits <- list(fit.0, fit)
par.old <- par(mfrow=c(length(lfits), nrow(X)+2))
for (fit in lfits) {
  #
  # Construct arrays of plotting points.
  #
  X$p.hat <- predict(fit, type="response")
  Y <- data.frame(temperature = seq(min(X$temperature), max(X$temperature), 
                                    length.out=101))
  Y$p.hat <- predict(fit, type="response", newdata=Y)  # Probability
  Y$lambda.hat <- predict(fit, type="link", newdata=Y) # Log odds
  #
  # Plot the fit in terms of log odds.
  #
  with(Y, plot(temperature, lambda.hat, type="n", 
               yaxt="n", bty="n", main="Logit Response",
               ylab=expression(hat(lambda))))
  if (isTRUE(diff(range(Y$lambda.hat)) < 6)) {
    # Draw gridlines and y-axis labels
    p <- c( .10, .25, .5, .75, .9)
    q <- logit(p)
    suppressWarnings(rug(q, side=2))
    abline(h=q, col="#d0d0d0")
    mtext(signif(p, 2), at=q, side=2, cex=0.6)
  }
  with(Y, lines(temperature, lambda.hat, lwd=2, col="#f02020"))
  #
  # Plot the data and the fit in terms of probability.
  #
  with(X, plot(temperature, successes/nests, ylim=0:1,
               cex=sqrt(nests), pch=21, bg="Gray",
               main="Fit"))
  with(Y, lines(temperature, p.hat, col="#f02020", lwd=2))
  #
  # Plot the Binomial distributions associated with each row of the data.
  #
  apply(X, 1, function(x) plot.binom(x[2], x[4], x[3], bty="n", lwd=2, col="Gray",
                                     main=paste(x[1], "Degrees")))
}
par(mfrow=par.old)
whuber
sumber
apakah ada kode r yang diungkapkan? terimakasih banyak.
Maximilian
1
@ Maximilian saya menambahkan kode.
Whuber