Effectspackage fournit un moyen très rapide et pratique pour tracer les résultats de modèle à effets mixtes linéaires obtenus par lme4package . leeffect fonction calcule très rapidement les intervalles de confiance (IC), mais dans quelle mesure ces intervalles de confiance sont-ils fiables?
Par exemple:
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()

Selon les CI calculés avec le effectspackage, le lot "E" ne chevauche pas le lot "A".
Si j'essaie la même chose en utilisant confint.merModfunction et la méthode par défaut:
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()

Je constate que tous les IC se chevauchent. Je reçois également des avertissements indiquant que la fonction n'a pas pu calculer les CI dignes de confiance. Cet exemple, ainsi que mon ensemble de données actuel, me fait penser que le effectspackage prend des raccourcis dans le calcul de CI qui pourraient ne pas être entièrement approuvés par les statisticiens. Quelle est la fiabilité des CI renvoyés par la effectfonction deeffects package pour lmerobjets ?
Qu'ai-je essayé: En regardant dans le code source, j'ai remarqué que la effectfonction s'appuie sur la Effect.merModfonction, qui à son tour dirige à la Effect.merfonction, qui ressemble à ceci:
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.glmLa fonction semble calculer la matrice variance-covariable à partir de l' lmerobjet:
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Ceci, à son tour, est probablement utilisé en Effect.defaultfonction pour calculer les CI (j'ai peut-être mal compris cette partie):
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
...
Je ne connais pas suffisamment les LMM pour pouvoir juger s’il s’agit d’une bonne approche, mais compte tenu de la discussion sur le calcul de l’intervalle de confiance des LMM, cette approche semble étrangement simple.
