Estoy tratando de usar lme4::glmer()
para ajustar un GLMM binomial con una variable dependiente que no es binaria, sino una variable continua entre cero y uno. Se puede pensar en esta variable como una probabilidad; de hecho es probabilidad como la reportada por los sujetos humanos (en un experimento que ayudo a analizar). El glmer()
produce un modelo que está claramente fuera de lugar, y muy lejos del que tengo con glm()
así que algo va mal. ¿Por qué? ¿Qué puedo hacer?
Más detalles
Aparentemente es posible utilizar la regresión logística no sólo para la DV binaria sino también para la DV continua entre cero y uno. De hecho, cuando corro
glm(reportedProbability ~ a + b + c, myData, family="binomial")
Recibo un mensaje de advertencia
Warning message:
In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!
pero un ajuste muy razonable (todos los factores son categóricos, por lo que puedo comprobar fácilmente si las predicciones de los modelos se acercan a los medios de los sujetos, y así es).
Sin embargo, lo que realmente quiero usar es
glmer(reportedProbability ~ a + b + c + (1 | subject), myData, family="binomial")
Me da la misma advertencia, devuelve un modelo, pero este modelo está claramente muy fuera de lugar; las estimaciones de los efectos fijos están muy lejos de la glm()
y de los medios de la materia. (Y necesito incluir glmerControl(optimizer="bobyqa")
en el glmer
llamada, de lo contrario no converge en absoluto.)
1 votos
¿Qué tal si transformamos primero las probabilidades? ¿Puedes conseguir algo que se acerque más a una distribución normal con, digamos, una transformación logit? ¿O el arcsin-sqrt? Esa sería mi preferencia en lugar de utilizar glmer. O en su solución hack, también podría tratar de añadir un efecto aleatorio para cada observación para tener en cuenta la subdispersión debido a su elección de pesos.
1 votos
Gracias. Sí, puedo logit el DV y luego utilizar el modelo mixto gaussiano (lmer), pero esto también es una especie de hack, y he leído que no es recomendable. Probaré con un efecto aleatorio para cada observación. Por el momento, estoy probando el modelo mixto beta; lme4 no puede manejarlo, pero glmmadmb sí. Cuando ejecuto
glmmadmb(reportedProbability ~ a + b + c + (1 | subject), myData, family="beta")
obtengo un ajuste correcto e intervalos de confianza razonables, pero un fallo de convergencia aviso :-/ Intento averiguar cómo aumentar el número de iteraciones. Beta podría funcionar para mí porque no tengo DV=0 o DV=1 casos.0 votos
No sé para glmer pero para glm esto puede ayudar: stats.stackexchange.com/questions/164120/ :
1 votos
@Aaron: He intentado añadir
+ (1 | rowid)
a mi llamada glmer y esto produce estimaciones estables e intervalos de confianza estables, independientemente de mi elección de peso (probé 100 y 500). También he probado a ejecutar lmer en logit(reportedProbability) y obtengo casi exactamente lo mismo. Así que ambas soluciones parecen funcionar bien. Beta MM con glmmadmb también da resultados muy cercanos, pero por alguna razón no converge completamente y tarda una eternidad en ejecutarse. Considera la posibilidad de publicar una respuesta enumerando estas opciones y explicando un poco las diferencias y los pros y los contras. (Los intervalos de confianza que menciono son todos Wald).0 votos
@fcop Gracias. El problema es que no tengo los números de éxitos/fracasos para cada caso; mi variable de respuesta no es una fracción o una proporción. Es sólo una probabilidad (confianza) reportada por el sujeto humano, por ejemplo, una persona puede reportar 0.9 confianza en su elección, y yo quiero servir de modelo.
1 votos
¿Y están absolutamente seguros de su valor, como 0,9, o también tienen algún ''margen de error al respecto''? ¿Se puede suponer que la confianza comunicada por diferentes sujetos es igual de precisa?
0 votos
@fcop (1) Bueno, probablemente dirían que no están "absolutamente seguros", pero en el experimento se les pide que hagan una elección binaria y que informen de su confianza (como un número); no se registró nada más, esos son los datos que tengo. (2) Sería mejor no hacer esta suposición; estoy añadiendo un intercepto aleatorio
(1 | subject)
que consiste básicamente en permitir que diferentes sujetos tengan poca confianza o demasiada. No sé cómo permitir que la varianza para diferentes sujetos sea diferente, así que asumo que es la misma.0 votos
Tal vez, suponiendo que la varianza sea la misma y que p(1−p)/n es la fórmula para la varianza, puede encontrar algo para n y luego usarlo para obtener el número de aciertos. Si utiliza ponderaciones, deben sumar el número de observaciones; de lo contrario, es "como si" aumentara el tamaño de la muestra, de ahí el impacto en los errores estándar.
0 votos
¿Así que toman una decisión y usted quiere modelar su confianza en la decisión tomada? ¿No quieres modelar la elección utilizando su confianza como peso?
0 votos
@fcop Yo también estoy modelando sus elecciones (por separado), pero en esta pregunta me preocupa modelar las confidencias.
0 votos
@usr11852: No está equilibrado con respecto a los niveles de los factores A, B y C, si te refieres a eso. Algunas combinaciones de factores tienen muchas más pruebas que otras combinaciones de factores. La separación completa no es un problema. Interesante idea sobre
logistf
pero no admite efectos aleatorios (?), por lo que no puede ayudarme plenamente en cualquier caso.0 votos
@amoeba: Lo mencioné principalmente porque experimentaste problemas con el glm para empezar.