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.
quelle
Antworten:
Ich fürchte, Ihr Titel enthält einen Tippfehler: Sie sollten nicht versuchen, gemischte Modelle, geschweige denn nichtlineare gemischte Modelle, mit nur 30 Clustern anzupassen. Nur wenn Sie glauben, dass Sie eine Normalverteilung an 30 Punkte anpassen können, die durch Messfehler, Nichtlinearitäten und nahezu vollständige Trennung (auch als perfekte Vorhersage bezeichnet) behindert werden.
Was ich hier tun würde, ist, dies als regelmäßige logistische Regression mit Firths Korrektur auszuführen :
Die Korrektur von Firth besteht darin, die Wahrscheinlichkeit zu erhöhen und ist eine Form der Schrumpfung. In Bayes'schen Begriffen sind die resultierenden Schätzungen die hinteren Modi des Modells mit einem Jeffreys-Prior. In häufigem Sinne ist die Strafe die Determinante der Informationsmatrix, die einer einzelnen Beobachtung entspricht, und verschwindet daher asymptotisch.
quelle
*lmer
??? gut angenähert wird. : - \Sie können einen Bayes'schen Maximum- a-posteriori- Ansatz mit einem schwachen Prior vor den festen Effekten verwenden, um ungefähr den gleichen Effekt zu erzielen. Insbesondere das blme-Paket für R (das ein dünner Wrapper um das
lme4
Paket ist) tut dies, wenn Sie Prioritäten für die festen Effekte wie im Beispiel hier angeben (Suche nach "vollständige Trennung"):ttt
Das verknüpfte Beispiel zeigt, dass Sie es auch mit dem
MCMCglmm
Paket tun können , wenn Sie vollbayesisch werden möchten ...quelle