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")
binomial
generalized-linear-model
Matt Albrecht
fuente
fuente
cbind(accuracy, 16-accuracy)
), pero me preocupa si está matemáticamente justificado.Respuestas:
Interesante pregunta. Una posibilidad que se me ocurre es incluir un parámetro adicional.p ∈ [ 0 , 1 ] para controlar el límite superior de la función 'enlace'.
Dejar{Xj,yj,nortej} , j = 1 , . . . , n ser observaciones independientes, donde yj∼ Binomial {norteyo, p F(XTjβ) } , p ∈ [ 0 , 1 ] , Xj= ( 1 ,Xj 1, . . . ,Xj k)T es un vector de variables explicativas, β= (β0 0, . . . ,βk) es un vector de coeficientes de regresión y F- 1 Es la función de enlace. Entonces la función de probabilidad viene dada por
El siguiente paso es elegir un enlace, decir la distribución logística y encontrar el MLE correspondiente de( β, p ) .
Considere el siguiente ejemplo de juguete simulado usando un modelo de dosis-respuesta con(β0 0,β1, p ) = ( 0.5 , 0.5 , 0.25 ) y n = 31
Uno de los resultados que obtuve es(β^0 0,β^1,pags^) = ( 0.4526650 , 0.4589112 , 0.2395564 ) . Por lo tanto, parece ser exacto. Por supuesto, sería necesaria una exploración más detallada de este modelo porque incluir parámetros en un modelo de regresión binaria puede ser complicado y los problemas de identificación o existencia del MLE pueden saltar a la etapa 1 2 .
Editar
Dada la edición (que cambia el problema significativamente), el método que propuse anteriormente se puede modificar para ajustar los datos que ha proporcionado. Considera el modelo
dóndeF es el CDF logístico, μ es un parámetro de ubicación, σ es un parámetro de escala, y el parámetro pags controla la altura de la curva de manera similar al modelo anterior. Este modelo puede ajustarse utilizando mínimos cuadrados no lineales . El siguiente código R muestra cómo hacer esto para sus datos.
fuente
Usaría el máximo del vector X como el número total posible de éxitos. (Esta es una estimación sesgada del verdadero número máximo de éxitos, pero debería funcionar bastante bien si tiene suficientes datos).
Esto crea una trama que se ve así:
fuente
Tenga en cuenta que la regresión binomial se basa en tener una respuesta binaria para cada caso individual. cada respuesta individual debe poder tomar uno de dos valores. Si hay algún límite en la proporción, entonces también debe haber algunos casos que solo podrían tomar un valor.
Parece que no está tratando con datos binarios sino con datos sobre un rango finito. Si este es el caso, entonces la regresión beta suena más apropiada. Podemos escribir la distribución beta como:
Luego estableceg(μi)=xTiβ igual que cualquier función de enlace que mapea el intervalo [L,U] en los reales. Hay un paquete R que puede usarse para adaptarse a estos modelos, aunque creo que necesita conocer los límites. Si lo hace, redefina la nueva variableyi=di−LU−L .
fuente