Actualización: Dado que ahora sé que mi problema se llama separación cuasi completa, actualicé la pregunta para reflejar esto (gracias a Aaron).
Tengo un conjunto de datos de un experimento en el que 29 participantes humanos (factor code
) trabajaron en un conjunto de pruebas y la response
fue 1 ó 0. Además, manipulamos los materiales de manera que teníamos tres factores cruzados, p.validity
(válido versus inválido), type
(afirmación versus negación) y counterexamples
(pocos versus muchos):
d.binom <- read.table("http://pastebin.com/raw.php?i=0yDpEri8")
str(d.binom)
## 'data.frame': 464 obs. of 5 variables:
## $ code : Factor w/ 29 levels "A04C","A14G",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ response : int 1 1 1 1 0 1 1 1 1 1 ...
## $ counterexamples: Factor w/ 2 levels "few","many": 2 2 1 1 2 2 2 2 1 1 ...
## $ type : Factor w/ 2 levels "affirmation",..: 1 2 1 2 1 2 1 2 1 2 ...
## $ p.validity : Factor w/ 2 levels "invalid","valid": 1 1 2 2 1 1 2 2 1 1 ...
En general, hay solo un pequeño número de 0s:
mean(d.binom$response)
## [1] 0.9504
Una hipótesis es que existe un efecto de validity
, sin embargo, el análisis preliminar sugiere que podría haber un efecto de counterexamples
. Dado que tengo datos dependientes (cada participante trabajó en todas las pruebas), me gustaría usar un GLMM en los datos. Desafortunadamente, counterexamples
separa cuasi-completamente los datos (al menos para un nivel):
with(d.binom, table(response, counterexamples))
## counterexamples
## response few many
## 0 1 22
## 1 231 210
Esto también se refleja en el modelo:
require(lme4)
options(contrasts=c('contr.sum', 'contr.poly'))
m2 <- glmer(response ~ type * p.validity * counterexamples + (1|code),
data = d.binom, family = binomial)
summary(m2)
## [output truncated]
## Efectos fijos:
## Estimado Error estándar Valor z Pr(>|z|)
## (Intercepto) 9.42 831.02 0.01 0.99
## type1 -1.97 831.02 0.00 1.00
## p.validity1 1.78 831.02 0.00 1.00
## counterexamples1 7.02 831.02 0.01 0.99
## type1:p.validity1 1.97 831.02 0.00 1.00
## type1:counterexamples1 -2.16 831.02 0.00 1.00
## p.validity1:counterexamples1 2.35 831.02 0.00 1.00
## type1:p.validity1:counterexamples1 2.16 831.02 0.00 1.00
Los errores estándar de los parámetros son simplemente insensatos. Dado que mi objetivo final es evaluar si ciertos efectos son significativos, los errores estándar no son totalmente irrelevantes.
- ¿Cómo puedo lidiar con la separación cuasi completa? Lo que quiero es obtener estimaciones a partir de las cuales pueda juzgar si un cierto efecto es significativo o no (por ejemplo, usando
PRmodcomp
del paquetepkrtest
, pero este es otro paso no descrito aquí).
Enfoques utilizando otros paquetes también son válidos.