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")
cbind(accuracy, 16-accuracy)
), tapi saya khawatir tentang apakah itu dibenarkan secara matematis.