La regresión logística binomial tiene asíntotas superior e inferior de 1 y 0 respectivamente. Sin embargo, los datos de precisión (solo como ejemplo) pueden tener asíntotas superiores e inferiores muy diferentes a 1 y / o 0. Puedo ver tres posibles soluciones a esto:
- No se preocupe si obtiene buenos ajustes dentro del área de interés. Si no está obteniendo buenos ajustes, entonces:
- Transforme los datos de modo que el número mínimo y máximo de respuestas correctas en la muestra den proporciones de 0 y 1 (en lugar de decir 0 y 0.15).
o - Utilice la regresión no lineal para que pueda especificar las asíntotas o que el instalador lo haga por usted.
Me parece que las opciones 1 y 2 serían preferibles a la opción 3 en gran medida por razones de simplicidad, en cuyo caso la opción 3 es quizás la mejor opción porque puede proporcionar más información.
editar
Aquí hay un ejemplo. La precisión total posible para la precisión es 100, pero la precisión máxima en este caso es ~ 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))
La opción 2 (según los comentarios y para aclarar mi significado) sería el modelo
glmx2<-glm(cbind(accuracy, 16-accuracy) ~ x, family=binomial)
La opción 3 (para completar) sería algo similar a:
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)
), pero me preocupa si está matemáticamente justificado.