Update : Da ich jetzt weiß, dass mein Problem als quasi vollständige Trennung bezeichnet wird, habe ich die Frage aktualisiert, um dies widerzuspiegeln (danke an Aaron).
Ich habe einen Datensatz aus einem Experiment, bei dem 29 menschliche Teilnehmer (Faktor code
) an einer Reihe von Versuchen gearbeitet haben und der response
entweder 1 oder 0 war. Außerdem haben wir die Materialien so manipuliert, dass wir drei gekreuzte Faktoren hatten p.validity
(gültig gegen ungültig). type
(Bestätigung versus Verleugnung) und counterexamples
(wenige gegen viele):
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 ...
Insgesamt gibt es nur eine kleine Anzahl von Nullen:
mean(d.binom$response)
## [1] 0.9504
Eine Hypothese ist, dass es einen Effekt von gibt validity
, jedoch deutet eine vorläufige Analyse darauf hin, dass es einen Effekt von geben könnte counterexamples
. Da ich abhängige Daten habe (jeder Teilnehmer hat an allen Studien gearbeitet), möchte ich ein GLMM für die Daten verwenden. Leider counterexamples
trennen Sie die Daten quasi vollständig (zumindest für eine Ebene):
with(d.binom, table(response, counterexamples))
## counterexamples
## response few many
## 0 1 22
## 1 231 210
Dies spiegelt sich auch im Modell wider:
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
Die Standardfehler für die Parameter sind einfach verrückt. Da mein letztes Ziel darin besteht, zu beurteilen, ob bestimmte Effekte signifikant sind oder nicht, sind Standardfehler nicht völlig unwichtig.
- Wie kann ich mit der quasi vollständigen Trennung umgehen? Ich möchte Schätzungen erhalten, anhand derer ich beurteilen kann, ob ein bestimmter Effekt signifikant ist oder nicht (z. B. Verwendung
PRmodcomp
aus dem Paketpkrtest
, aber dies ist ein weiterer Schritt, der hier nicht beschrieben wird).
Ansätze mit anderen Paketen sind ebenfalls in Ordnung.