ANOVA en datos binomiales

32

Estoy analizando un conjunto de datos experimentales. Los datos consisten en un vector emparejado de tipo de tratamiento y un resultado binomial:

Treatment    Outcome
A            1
B            0
C            0
D            1
A            0
...

En la columna de resultados, 1 denota un éxito y 0 denota un fracaso. Me gustaría saber si el tratamiento varía significativamente el resultado. Hay 4 tratamientos diferentes con cada experimento repetido una gran cantidad de veces (2000 para cada tratamiento).

Mi pregunta es, ¿puedo analizar el resultado binario usando ANOVA? ¿O debería usar una prueba de chi-cuadrado para verificar los datos binomiales? Parece que chi-cuadrado supone que la proporción se dividiría en partes iguales, lo cual no es el caso. Otra idea sería resumir los datos usando la proporción de éxitos versus fracasos para cada tratamiento y luego usar una prueba de proporción.

Tengo curiosidad por escuchar sus recomendaciones para las pruebas que tienen sentido para este tipo de experimentos binomiales de éxito / fracaso.

tonto
fuente

Respuestas:

18

No a ANOVA, que supone una variable de resultado normalmente distribuida (entre otras cosas). Hay que considerar las transformaciones de la "vieja escuela", pero preferiría la regresión logística (equivalente a un chi cuadrado cuando solo hay una variable independiente, como en su caso). La ventaja de usar la regresión logística sobre una prueba de chi cuadrado es que puede usar fácilmente un contraste lineal para comparar niveles específicos del tratamiento si encuentra un resultado significativo en la prueba general (tipo 3). Por ejemplo, A versus B, B versus C, etc.

Actualización agregada para mayor claridad:

Tomando datos a la mano (el conjunto de datos post doc de Allison ) y utilizando las variables cits de la siguiente manera, este fue mi punto:

postdocData$citsBin <- ifelse(postdocData$cits>2, 3, postdocData$cits)
postdocData$citsBin <- as.factor(postdocData$citsBin)
ordered(postdocData$citsBin, levels=c("0", "1", "2", "3"))
contrasts(postdocData$citsBin) <- contr.treatment(4, base=4) # set 4th level as reference
contrasts(postdocData$citsBin)
     #   1 2 3
     # 0 1 0 0
     # 1 0 1 0
     # 2 0 0 1
     # 3 0 0 0

# fit the univariate logistic regression model
model.1 <- glm(pdoc~citsBin, data=postdocData, family=binomial(link="logit"))

library(car) # John Fox package
car::Anova(model.1, test="LR", type="III") # type 3 analysis (SAS verbiage)
     # Response: pdoc
     #          LR Chisq Df Pr(>Chisq)
     # citsBin   1.7977  3     0.6154

chisq.test(table(postdocData$citsBin, postdocData$pdoc)) 
     # X-squared = 1.7957, df = 3, p-value = 0.6159

# then can test differences in levels, such as: contrast cits=0 minus cits=1 = 0
# Ho: Beta_1 - Beta_2 = 0
cVec <- c(0,1,-1,0)
car::linearHypothesis(model.1, cVec, verbose=TRUE) 
B_Miner
fuente
1
@ usuario2040. No entiendo cómo harías la prueba "tipo 3". ¿Es algo relacionado con SAS? (lo siento, mi conocimiento de SAS es muy limitado). Hubiera hecho una regresión logística como sugeriste pero con 2 variables ficticias. Además, dado que entiendo correctamente, si realiza una regresión logística, la prueba de si algunos o todos los coeficientes son 0 se realiza por desviación (o razón de probabilidad) y ES asintóticamente Chi-Sq (no necesariamente con df = 1)
suncoolsu
1
@suncoolsu: Sí, prácticamente hablando, deberías llegar a la misma conclusión. No debería haber dicho "equivalente" (trabajo con big data para que terminen igual). Agregué un código en la respuesta para ayudar a aclarar.
B_Miner
8

Tal vez algunos lo consideren anticuado, pero si solo desea probar la hipótesis nula de que todos los grupos tienen la misma probabilidad de éxito, entonces puede definir como número de éxitos en el grupo , como número de ensayos en el grupo , el estimado la probabilidad en el grupo será , y luego usará la transformación estabilizadora de varianza para el binomio, que es Tal enfoque fue (a veces ) lo suficientemente bueno para Fisher, ¡así que puede ser útil también hoy!Xkknkkkp^k=Xk/nk

g(p)=arcsinp

Sin embargo, algunos autores modernos son bastante escépticos sobre la transformación del arcoseno, ver por ejemplo http://www.mun.ca/biology/dschneider/b7932/B7932Final10Dec2010.pdf Pero a estos autores les preocupan problemas como la predicción, donde muestran El arcoseno puede provocar problemas. Si solo le preocupan las pruebas de hipótesis, debería estar bien. Un enfoque más moderno podría usar la regresión logística.

kjetil b halvorsen
fuente
44
(+1) ... si todos los grupos tienen el mismo no. observaciones
Scortchi - Restablece a Monica
1
O uno puede usar pesos basados ​​en el número de observaciones.
kjetil b halvorsen 19/11/2015
3

Me gustaría diferir de lo que piensas sobre la prueba Chi-Sq. Es aplicable incluso si los datos no son binomiales. Se basa en la normalidad asintótica de mle (en la mayoría de los casos).

Haría una regresión logística como esta:

logπ^1π^=β0+β1×D1+β2×D2

dónde

D1 y son variables ficticias. D2D1=D2=0A,D1=1,D2=0B,D1=1D2=1C

Ho:β0=β1=β2=0

Es el equivalente ANOVA si hay una relación o no.

Ho:β0=0

Es la prueba es A tiene algún efecto.

Ho:β1β0=0

Es la prueba es B tiene algún efecto.

Ho:β2(β0+β12)=0

Es la prueba es C tiene algún efecto.

Ahora puede hacer más contrastes para encontrar lo que le interesa. Todavía es una prueba de chi-sq, pero con diferentes grados de libertad (3, 1, 1 y 1, respectivamente)

suncoolsu
fuente
Todavía necesito pensar en el contraste. Lo corregiré cada vez que tenga tiempo. Perdón por eso
suncoolsu
-3

Creo que tiene razón en que ANOVA no debe usarse para analizar la variable dependiente binomial. Muchas personas usan esto para comparar las medias de la variable de respuesta binaria (0 1), pero no se debe usar porque esto viola gravemente el supuesto de normalidad y varianza igual. Las pruebas de Chi-cuadrado o la regresión logística son las mejores para estas situaciones.

sachin01663
fuente
Igual que tu respuesta aquí .
Scortchi - Restablece a Monica