¿Cómo aplicar el binomio GLMM (glmer) a porcentajes en lugar de conteos sí-no?

21

Tengo un experimento de medidas repetidas donde la variable dependiente es un porcentaje, y tengo múltiples factores como variables independientes. Me gustaría usar glmerel paquete R lme4para tratarlo como un problema de regresión logística (especificando family=binomial) ya que parece acomodar esta configuración directamente.

Mis datos se ven así:

 > head(data.xvsy)
   foldnum      featureset noisered pooldur dpoolmode       auc
 1       0         mfcc-ms      nr0       1      mean 0.6760438
 2       1         mfcc-ms      nr0       1      mean 0.6739482
 3       0    melspec-maxp    nr075       1       max 0.8141421
 4       1    melspec-maxp    nr075       1       max 0.7822994
 5       0 chrmpeak-tpor1d    nr075       1       max 0.6547476
 6       1 chrmpeak-tpor1d    nr075       1       max 0.6699825

y aquí está el comando R que esperaba que fuera apropiado:

 glmer(auc~1+featureset*noisered*pooldur*dpoolmode+(1|foldnum), data.xvsy, family=binomial)

El problema con esto es que el comando se queja de que mi variable dependiente no es un número entero:

In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!

y el análisis de estos datos (piloto) da respuestas extrañas como resultado.

Entiendo por qué la binomialfamilia espera números enteros (sí-no cuenta), pero parece que debería estar bien regresar los datos de porcentaje directamente. ¿Como hacer esto?

Dan Stowell
fuente
1
No me parece bien, ya que 5 de cada 10 no es la misma información que 500 de cada 1000. Exprese la respuesta como un recuento del no. "éxitos" y un recuento del no. "fracasos".
Scortchi - Restablece a Monica
@Scortchi gracias, creo que puede que tengas razón. Estaba pensando en parte en la naturaleza continua de mis porcentajes (derivados de decisiones probabilísticas) similares a esta pregunta: stats.stackexchange.com/questions/77376/… pero creo que puedo expresar mis datos a través de una conversión significativa a conteos enteros.
Dan Stowell

Respuestas:

22

Para utilizar un vector de proporciones como la variable de respuesta con glmer(., family = binomial), debe establecer el número de ensayos que condujeron a cada proporción utilizando el weightsargumento. Por ejemplo, usando los cbppdatos del lme4paquete:

glmer(incidence / size ~ period + (1 | herd), weights = size,
   family = binomial, data = cbpp)

Si no conoce el número total de ensayos, entonces un modelo binomial no es apropiado, como se indica en el mensaje de error.

Steve Walker
fuente
No puedo decir si usar pesas para esto funciona o no. Pero ciertamente puede ingresar los datos como una matriz de dos columnas (éxitos / fracasos) en el lado izquierdo de la fórmula.
ndoogan
Pero @ndoogan, la pregunta original era sobre proporciones, no éxitos / fracasos. Y el código anterior funciona, como lo tomé de la cbpppágina de ayuda.
Steve Walker
Lo suficientemente justo. Sin embargo, tenía la intención de referirme a éxitos / fracasos ( no pretende ser una división) de donde provienen las proporciones para un modelo binomial.
ndoogan
+1, pero los lectores pueden querer ver la respuesta de @BenBolker aquí stats.stackexchange.com/questions/189115 sobre posibles formas de lidiar con la sobredispersión.
ameba dice Reinstate Monica
9

Si su respuesta es una proporción, porcentaje o algo similar que solo puede tomar valores en , normalmente usaría la regresión beta, no la binomial.(0,1)

M. Berk
fuente
2
Un modelo binomial es un modelo de proporciones. Sin embargo, solo es apropiado cuando se conoce el número de ensayos. Si todo lo que tiene es un porcentaje sin indicación del número de ensayos, entonces creo que tiene razón en que la regresión beta es apropiada.
ndoogan
(0,1)
Gracias, este es un buen punto. Estoy aceptando la otra respuesta porque responde la pregunta tal como está escrita, pero el punto sobre la regresión beta está bien hecho, así que lo he votado.
Dan Stowell