Hồi quy logistic nhị thức có các tiệm cận trên và dưới lần lượt là 1 và 0. Tuy nhiên, dữ liệu chính xác (giống như một ví dụ) có thể có các tiệm cận trên và dưới khác nhau rất nhiều so với 1 và / hoặc 0. Tôi có thể thấy ba giải pháp tiềm năng cho vấn đề này:
- Đừng lo lắng về điều đó nếu bạn đang có được sự phù hợp tốt trong lĩnh vực quan tâm. Nếu bạn không có được sự phù hợp tốt thì:
- Chuyển đổi dữ liệu sao cho số phản hồi đúng tối thiểu và tối đa trong mẫu cho tỷ lệ 0 và 1 (thay vì nói 0 và 0,15).
hoặc là - Sử dụng hồi quy phi tuyến tính để bạn có thể chỉ định các tiệm cận hoặc yêu cầu bộ chỉnh lưu làm điều đó cho bạn.
Dường như với tôi, tùy chọn 1 & 2 sẽ được ưu tiên hơn tùy chọn 3 phần lớn vì lý do đơn giản, trong trường hợp đó tùy chọn 3 có lẽ là lựa chọn tốt hơn vì nó có thể mang lại nhiều thông tin hơn?
chỉnh sửa
Đây là một ví dụ. Tổng độ chính xác có thể có cho độ chính xác là 100, nhưng độ chính xác tối đa trong trường hợp này là ~ 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))
Tùy chọn 2 (theo nhận xét và để làm rõ ý nghĩa của tôi) sau đó sẽ là mô hình
glmx2<-glm(cbind(accuracy, 16-accuracy) ~ x, family=binomial)
Tùy chọn 3 (để hoàn thiện) sẽ giống như:
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)
), nhưng tôi lo lắng về việc liệu nó có hợp lý về mặt toán học hay không.