Regresi logistik binomial memiliki asimtot atas dan bawah masing-masing 1 dan 0. Namun, data akurasi (hanya sebagai contoh) mungkin memiliki asimtot atas dan bawah yang sangat berbeda dengan 1 dan / atau 0. Saya dapat melihat tiga solusi potensial untuk ini:
- Jangan khawatir tentang hal itu jika Anda mendapatkan pasangan yang cocok dalam bidang yang diminati. Jika Anda tidak mendapatkan kecocokan yang baik maka:
- Transformasikan data sehingga jumlah minimum dan maksimum dari respons yang benar dalam sampel memberikan proporsi 0 dan 1 (bukannya katakan 0 dan 0,15).
atau - Gunakan regresi non-linier sehingga Anda dapat menentukan asymptotes atau meminta penggantinya untuk Anda.
Tampaknya bagi saya bahwa opsi 1 & 2 akan lebih disukai daripada opsi 3 sebagian besar untuk alasan kesederhanaan, dalam hal mana opsi 3 mungkin merupakan opsi yang lebih baik karena dapat menghasilkan lebih banyak informasi?
sunting
Ini contohnya. Total yang mungkin benar untuk akurasi adalah 100, tetapi akurasi maksimum dalam hal ini adalah ~ 15.
accuracy <- c(0,0,0,0,0,1,3,5,9,13,14,15,14,15,16,15,14,14,15)
x<-1:length(accuracy)
glmx<-glm(cbind(accuracy, 100-accuracy) ~ x, family=binomial)
ndf<- data.frame(x=x)
ndf$fit<-predict(glmx, newdata=ndf, type="response")
plot(accuracy/100 ~ x)
with(ndf, lines(fit ~ x))
Opsi 2 (sesuai komentar dan untuk memperjelas makna saya) kemudian akan menjadi model
glmx2<-glm(cbind(accuracy, 16-accuracy) ~ x, family=binomial)
Opsi 3 (untuk kelengkapan) akan menjadi sesuatu yang mirip dengan:
fitnls<-nls(accuracy ~ upAsym + (y0 - upAsym)/(1 + (x/midPoint)^slope),
start = list("upAsym" = max(accuracy), "y0" = 0, "midPoint" = 10, "slope" = 5),
lower = list("upAsym" = 0, "y0" = 0, "midPoint" = 1, "slope" = 0),
upper = list("upAsym" = 100, "y0" = 0, "midPoint" = 19, hillslope = Inf),
control = nls.control(warnOnly = TRUE, maxiter=1000),
algorithm = "port")
sumber
cbind(accuracy, 16-accuracy)
), tapi saya khawatir tentang apakah itu dibenarkan secara matematis.Jawaban:
Pertanyaan menarik. Kemungkinan yang muncul di benak saya adalah memasukkan parameter tambahan untuk mengontrol batas atas fungsi 'tautan'.p ∈ [ 0 , 1 ]
Biarkan , menjadi pengamatan independen, di mana , , adalah vektor dari variabel penjelas, adalah vektor koefisien regresi dan adalah fungsi tautan. Kemudian fungsi kemungkinan diberikan oleh{xj,yj,nj} j = 1 , . . . , n yj∼ Binomial {nsaya, P F(xTjβ) } p ∈ [ 0 , 1 ] xj= ( 1 ,xj 1, . . . ,xj k)T β= (β0, . . . ,βk) F- 1
Langkah selanjutnya adalah memilih tautan, ucapkan distribusi logistik, dan temukan MLE yang sesuai .( β, p )
Pertimbangkan contoh mainan simulasi berikut menggunakan model dosis-respons dengan dan(β0,β1, p ) = ( 0,5 , 0,5 , 0,25 ) n = 31
Salah satu hasil yang saya dapatkan adalah . Karena itu tampaknya akurat. Tentu saja, eksplorasi yang lebih rinci dari model ini akan diperlukan karena memasukkan parameter dalam model regresi biner bisa rumit dan masalah pengidentifikasian atau keberadaan MLE dapat melompat pada tahap 1 2 .(β^0,β^1,hal^) = ( 0.4526650 , 0.4589112 , 0.2395564 )
Edit
Diberikan hasil edit (yang mengubah masalah secara signifikan), metode yang saya usulkan sebelumnya dapat dimodifikasi agar sesuai dengan data yang Anda berikan. Pertimbangkan modelnya
di mana adalah CDF logistik, adalah parameter lokasi, adalah parameter skala, dan parameter mengontrol ketinggian kurva sama seperti pada model sebelumnya. Model ini dapat dipasang menggunakan Nonlinear Least Squares . Kode R berikut menunjukkan cara melakukan ini untuk data Anda.F μ σ hal
sumber
Saya akan menggunakan maksimum vektor X sebagai jumlah total kemungkinan keberhasilan. (Ini adalah perkiraan bias dari jumlah keberhasilan sebenarnya yang sebenarnya, tetapi ini akan bekerja dengan cukup baik jika Anda memiliki cukup data).
Ini menciptakan plot yang terlihat seperti:
sumber
Perhatikan bahwa regresi binomial didasarkan pada memiliki respons biner untuk setiap kasus individu. setiap respons individu harus mampu mengambil satu dari dua nilai. Jika ada beberapa batasan proporsi maka pasti ada beberapa kasus yang hanya bisa mengambil satu nilai.
Sepertinya Anda tidak berurusan dengan data biner tetapi dengan data pada rentang yang terbatas. jika ini masalahnya, maka regresi beta terdengar lebih tepat. Kami dapat menulis distribusi beta sebagai:
Anda kemudian mengatur sama dengan fungsi tautan apa pun yang memetakan interval ke dalam real. Ada paket R yang dapat digunakan agar sesuai dengan model ini, meskipun saya pikir Anda perlu tahu batas-batasnya. Jika ya, maka definisikan ulang variabel baru .g(μsaya) =xTsayaβ [ L , U] ysaya=dsaya- LU- L
sumber