Effects
package bietet eine sehr schnelle und bequeme Möglichkeit , lineare Mischeffekt-Modellergebnisse zu zeichnen, die mit lme4
package erhalten wurden . Die effect
Funktion berechnet Konfidenzintervalle (CIs) sehr schnell, aber wie vertrauenswürdig sind diese Konfidenzintervalle?
Beispielsweise:
library(lme4)
library(effects)
library(ggplot)
data(Pastes)
fm1 <- lmer(strength ~ batch + (1 | cask), Pastes)
effs <- as.data.frame(effect(c("batch"), fm1))
ggplot(effs, aes(x = batch, y = fit, ymin = lower, ymax = upper)) +
geom_rect(xmax = Inf, xmin = -Inf, ymin = effs[effs$batch == "A", "lower"],
ymax = effs[effs$batch == "A", "upper"], alpha = 0.5, fill = "grey") +
geom_errorbar(width = 0.2) + geom_point() + theme_bw()
Gemäß den mit effects
package berechneten CIs überschneidet sich Charge "E" nicht mit Charge "A".
Wenn ich dasselbe mit der confint.merMod
Funktion und der Standardmethode versuche :
a <- fixef(fm1)
b <- confint(fm1)
# Computing profile confidence intervals ...
# There were 26 warnings (use warnings() to see them)
b <- data.frame(b)
b <- b[-1:-2,]
b1 <- b[[1]]
b2 <- b[[2]]
dt <- data.frame(fit = c(a[1], a[1] + a[2:length(a)]),
lower = c(b1[1], b1[1] + b1[2:length(b1)]),
upper = c(b2[1], b2[1] + b2[2:length(b2)]) )
dt$batch <- LETTERS[1:nrow(dt)]
ggplot(dt, aes(x = batch, y = fit, ymin = lower, ymax = upper)) +
geom_rect(xmax = Inf, xmin = -Inf, ymin = dt[dt$batch == "A", "lower"],
ymax = dt[dt$batch == "A", "upper"], alpha = 0.5, fill = "grey") +
geom_errorbar(width = 0.2) + geom_point() + theme_bw()
Ich sehe, dass sich alle CIs überschneiden. Ich erhalte auch Warnungen, die darauf hinweisen, dass die Funktion keine vertrauenswürdigen CIs berechnen konnte. Dieses Beispiel und mein tatsächlicher Datensatz lassen vermuten, dass das effects
Paket Verknüpfungen in der CI-Berechnung enthält, die möglicherweise nicht vollständig von den Statistikern genehmigt wurden. Wie vertrauenswürdig sind die von der effect
Funktion zurückgegebenen CIs aus dem effects
Paket für lmer
Objekte?
Was habe ich versucht: Beim Blick in den Quellcode ist mir aufgefallen, dass die effect
Funktion von der Funktion abhängt Effect.merMod
, die wiederum zur Effect.mer
Funktion führt, die so aussieht:
effects:::Effect.mer
function (focal.predictors, mod, ...)
{
result <- Effect(focal.predictors, mer.to.glm(mod), ...)
result$formula <- as.formula(formula(mod))
result
}
<environment: namespace:effects>
mer.to.glm
Die Funktion scheint die Varianz-Covariate-Matrix aus dem lmer
Objekt zu berechnen :
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Dies wiederum wird wahrscheinlich in der Effect.default
Funktion zur Berechnung von CIs verwendet (ich habe diesen Teil möglicherweise falsch verstanden):
effects:::Effect.default
...
z <- qnorm(1 - (1 - confidence.level)/2)
V <- vcov.(mod)
eff.vcov <- mod.matrix %*% V %*% t(mod.matrix)
rownames(eff.vcov) <- colnames(eff.vcov) <- NULL
var <- diag(eff.vcov)
result$vcov <- eff.vcov
result$se <- sqrt(var)
result$lower <- effect - z * result$se
result$upper <- effect + z * result$se
...
Ich weiß nicht genug über LMMs, um beurteilen zu können, ob dies ein richtiger Ansatz ist, aber angesichts der Diskussion um die Konfidenzintervallberechnung für LMMs erscheint dieser Ansatz verdächtig einfach.
Antworten:
Alle Ergebnisse sind im Wesentlichen gleich ( für dieses spezielle Beispiel ). Einige theoretische Unterschiede sind:
lsmeans
,effects
,confint(.,method="Wald")
; abgesehenlsmeans
davon ignorieren diese Methoden Effekte endlicher Größe ("Freiheitsgrade"), aber in diesem Fall macht es kaum einen Unterschied (df=40
ist praktisch nicht von unendlich zu unterscheidendf
)Ich denke, all diese Ansätze sind vernünftig (einige sind näherungsweise als andere), aber in diesem Fall macht es kaum einen Unterschied, welchen Sie verwenden. Wenn Sie Bedenken haben, probieren Sie verschiedene Kontrastmethoden für Ihre Daten oder für simulierte Daten aus, die Ihren eigenen ähneln, und sehen Sie, was passiert ...
(PS: Ich würde nicht zu viel Gewicht auf die Tatsache legen, dass sich die Konfidenzintervalle von
A
undE
nicht überlappen. Sie müssten ein korrektes paarweises Vergleichsverfahren durchführen, um verlässliche Rückschlüsse auf die Unterschiede zwischen diesem bestimmten Schätzungspaar zu ziehen. ..)95% CIs:
Vergleichscode:
quelle
effects
in diesem Fall Paket- und CI-Überlappung verwenden?multcomp
Paket enthaltenen Methoden erfolgen, erfordert jedoch mindestens a wenig Pflege)Es sieht so aus, als hätten Sie bei der zweiten Methode Konfidenzintervalle für die Regressionskoeffizienten berechnet und diese dann transformiert, um CIs für die Vorhersagen zu erhalten. Dies ignoriert die Kovarianzen zwischen den Regressionskoeffizienten.
Versuchen Sie, das Modell ohne Schnittpunkt anzupassen, damit die
batch
Auswirkungen tatsächlich die Vorhersagen sind undconfint
die Intervalle zurückgeben, die Sie benötigen.Anhang 1
Ich habe genau das gemacht, was ich oben vorgeschlagen habe:
Diese Intervalle scheinen mit den Ergebnissen von zu übereinstimmen
effects
.Anhang 2
Eine weitere Alternative ist das lsmeans- Paket. Es erhält Freiheitsgrade und eine angepasste Kovarianzmatrix aus dem Paket pbkrtest .
Diese stimmen noch mehr mit den±1.96×se
effect
Ergebnissen überein: Die Standardfehler sind identisch,effect
verwenden jedoch unterschiedliche df. Dieconfint
Ergebnisse in Anhang 1 sind noch enger als die asymptotischen, basierend auf der Verwendung von . Also jetzt denke ich, dass diese nicht sehr vertrauenswürdig sind.Ergebnisse aus
effect
undlsmeans
sind ähnlich, jedoch mit einer nicht ausgeglichenen Multi-Faktor-Situation.lsmeans
Standardmäßig werden nicht verwendete Faktoren mit gleicher Gewichtung gemittelt, wohingegeneffect
die beobachteten Häufigkeiten gewichtet werden (optional in verfügbarlsmeans
).quelle
effects
Paket fürlmer
Objekte vertrauenswürdig sind. Ich erwäge, die Ergebnisse in einer Publikation zu verwenden, und möchte sichergehen, dass CIs mit einer für LMMs zugelassenen Methode berechnet werden..sig01
und deren.sigma
Ergebnisconfint
, das Konfidenzintervall für die Varianz ? oder Konfidenzintervall der Standardabweichung ?lmer
um eine endgültige Antwort zu erhalten. In der Regel wird jedoch gernsigma
auf Standardabweichungensigma.square
odersigma^2
auf Abweichungen Bezug genommen.