Effects
package fournit un moyen très rapide et pratique pour tracer les résultats de modèle à effets mixtes linéaires obtenus par lme4
package . 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 effects
package, le lot "E" ne chevauche pas le lot "A".
Si j'essaie la même chose en utilisant confint.merMod
function 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 effects
package 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 effect
fonction deeffects
package pour lmer
objets ?
Qu'ai-je essayé: En regardant dans le code source, j'ai remarqué que la effect
fonction s'appuie sur la Effect.merMod
fonction, qui à son tour dirige à la Effect.mer
fonction, 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.glm
La fonction semble calculer la matrice variance-covariable à partir de l' lmer
objet:
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Ceci, à son tour, est probablement utilisé en Effect.default
fonction 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.
Réponses:
Tous les résultats sont essentiellement les mêmes ( pour cet exemple particulier ). Quelques différences théoriques sont:
lsmeans
,effects
,confint(.,method="Wald")
; À l'exception delsmeans
, ces méthodes ignorent les effets de taille finie ("degrés de liberté"), mais dans ce cas, cela ne fait presque aucune différence (df=40
pratiquement impossible à distinguer de l'infinidf
)Je pense que toutes ces approches sont raisonnables (certaines sont plus approximatives que d’autres), mais dans ce cas, cela ne fait guère de différence que vous utilisez. Si cela vous intéresse, essayez plusieurs méthodes contrastées sur vos données, ou sur des données simulées qui ressemblent aux vôtres, et voyez ce qui se passe ...
(PS: Je ne mettrais pas trop de poids sur le fait que les intervalles de confiance
A
etE
ne se chevauchent pas , vous auriez à faire une procédure de comparaison par paire appropriée pour tirer des conclusions fiables sur les différences entre ce. Particulier deux estimations. ..)IC à 95%:
Code de comparaison:
la source
effects
chevauchement de package et de CI dans ce cas?multcomp
paquet, mais cela nécessite au moins une un peu d'attention)Il semble que ce que vous avez fait dans la seconde méthode consiste à calculer des intervalles de confiance pour les coefficients de régression, puis à les transformer pour obtenir des CI pour les prévisions. Cela ignore les covariances entre les coefficients de régression.
Essayez d’ajuster le modèle sans interception, de sorte que les
batch
effets correspondent bien aux prévisions etconfint
renvoient les intervalles dont vous avez besoin.Addendum 1
J'ai fait exactement ce que j'ai suggéré ci-dessus:
Ces intervalles semblent correspondre aux résultats de
effects
.Addendum 2
Une autre alternative est le paquetage lsmeans . Il obtient des degrés de liberté et une matrice de covariance ajustée à partir du paquet pbkrtest .
Celles-ci sont encore plus en ligne avec les± 1,96 × se . Alors maintenant, je pense que ceux-ci ne sont pas très fiables.
effect
résultats: les erreurs-types sont identiques, maiseffect
utilise df différent. Lesconfint
résultats de l'addendum 1 sont encore plus étroits que ceux asymptotiques basés sur l'utilisation deLes résultats de
effect
etlsmeans
sont similaires, mais avec une situation multifactorielle non équilibrée, leslsmeans
moyennes par défaut sur les facteurs inutilisés ayant une pondération égale, alors que laeffect
pondération est fonction des fréquences observées (disponible en option danslsmeans
).la source
effects
package peuvent être approuvés pour leslmer
objets. J'envisage d'utiliser les résultats dans une publication et je veux m'assurer que les CI sont calculés à l'aide d'une méthode approuvée pour les LMM..sig01
et.sigma
produit parconfint
, est-ce que ces intervalles de confiance sont pour la variance ? ou intervalle de confiance de l' écart type ?lmer
pour une réponse définitive. Cependant, les gens utilisent généralement des notations commesigma
se référer à des écarts-types et /sigma.square
ousigma^2
à des variances.