Atualização : Como agora sei que meu problema se chama separação quase completa , atualizei a pergunta para refletir isso (graças a Aaron).
Eu tenho um conjunto de dados de um experimento no qual 29 participantes humanos (fator code
) trabalharam em um conjunto de ensaios e response
foi 1 ou 0. Além disso, manipulamos os materiais para termos três fatores cruzados p.validity
(válido versus inválido), type
(afirmação versus negação) e counterexamples
(poucos versus muitos):
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 ...
No geral, há apenas um pequeno número de 0s:
mean(d.binom$response)
## [1] 0.9504
Uma hipótese é que existe um efeito de validity
, no entanto, análises preliminares sugerem que pode haver um efeito de counterexamples
. Como tenho dados dependentes (cada participante trabalhou em todos os ensaios), gostaria de usar um GLMM nos dados. Infelizmente, counterexamples
quase que completamente separe os dados (pelo menos para um nível):
with(d.binom, table(response, counterexamples))
## counterexamples
## response few many
## 0 1 22
## 1 231 210
Isso também se reflete no 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]
## Fixed effects:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 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
Os erros padrão para os parâmetros são simplesmente insanos. Como meu objetivo final é avaliar se certos efeitos são significativos ou não, os erros padrão não são totalmente sem importância.
- Como posso lidar com a quase completa separação? O que eu quero é obter estimativas a partir das quais eu possa julgar se um determinado efeito é significativo ou não (por exemplo, usando
PRmodcomp
from packagepkrtest
, mas essa é outra etapa não descrita aqui).
Abordagens usando outros pacotes também são boas.