Effects
El paquete proporciona una manera muy rápida y conveniente de graficar los resultados del modelo de efectos mixtos lineales obtenidos a través delme4
paquete . La effect
función calcula los intervalos de confianza (IC) muy rápidamente, pero ¿qué tan confiables son estos intervalos de confianza?
Por ejemplo:
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()
Según los CI calculados usando el effects
paquete, el lote "E" no se superpone con el lote "A".
Si intento lo mismo usando la confint.merMod
función y el método predeterminado:
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()
Veo que todos los CI se superponen. También recibo advertencias que indican que la función no pudo calcular los CI confiables. Este ejemplo, y mi conjunto de datos real, me hace sospechar que el effects
paquete toma atajos en el cálculo de CI que podrían no estar completamente aprobados por los estadísticos. ¿Cuán confiables son los CI devueltos por effect
función del effects
paquete para lmer
objetos?
¿Qué he intentado? Al mirar el código fuente, noté que la effect
función se basa en la Effect.merMod
función, que a su vez se dirige a la Effect.mer
función, que se ve así:
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 función parece calcular la matriz de varianza-covariable a partir del lmer
objeto:
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Esto, a su vez, probablemente se usa en la Effect.default
función para calcular los IC (podría haber entendido mal esta parte):
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
...
No sé lo suficiente sobre LMM para juzgar si este es un enfoque correcto, pero teniendo en cuenta la discusión sobre el cálculo del intervalo de confianza para LMM, este enfoque parece sospechosamente simple.
Respuestas:
Todos los resultados son esencialmente los mismos ( para este ejemplo en particular ). Algunas diferencias teóricas son:
lsmeans
,effects
,confint(.,method="Wald")
; a excepción delsmeans
, estos métodos ignoran los efectos de tamaño finito ("grados de libertad"), pero en este caso apenas hace ninguna diferencia (df=40
es prácticamente indistinguible de infinitodf
)Creo que todos estos enfoques son razonables. (algunos son más aproximados que otros), pero en este caso apenas hace ninguna diferencia cuál usa. Si le preocupa, pruebe varios métodos contrastantes en sus datos, o en datos simulados que se parecen a los suyos, y vea qué sucede ...
(PD: no pondría demasiado peso en el hecho de que los intervalos de confianza
A
yE
no se superponen. Tendría que hacer un procedimiento de comparación por pares adecuado para hacer inferencias confiables sobre las diferencias entre este par de estimaciones en particular . ..)IC 95%:
Código de comparación:
fuente
effects
paquete y la superposición de CI en este caso?multcomp
paquete, pero requiere al menos un un poco de cuidado)Parece que lo que ha hecho en el segundo método es haber calculado intervalos de confianza para los coeficientes de regresión, luego los ha transformado para obtener CI para las predicciones. Esto ignora las covarianzas entre los coeficientes de regresión.
Intente ajustar el modelo sin una intercepción, de modo que los
batch
efectos realmente sean las predicciones, yconfint
le devuelvan los intervalos que necesita.Anexo 1
Hice exactamente lo que sugerí anteriormente:
Estos intervalos parecen coincidir con los resultados de
effects
.Anexo 2
Otra alternativa es el paquete lsmeans . Obtiene grados de libertad y una matriz de covarianza ajustada del paquete pbkrtest .
Estos están aún más en línea con los± 1.96 × se . Así que ahora creo que esos no son muy confiables.
effect
resultados: los errores estándar son idénticos, peroeffect
usan df diferentes. Losconfint
resultados en el Anexo 1 son aún más estrechos que los asintóticos basados en el usoLos resultados de
effect
ylsmeans
son similares, pero con una situación de factores múltiples desequilibrados,lsmeans
por defecto promedios sobre factores no utilizados con pesos iguales, mientras que loseffect
pesos por las frecuencias observadas (disponibles como una opción enlsmeans
).fuente
effects
se puede confiar en los CI del paquete para loslmer
objetos. Estoy considerando usar los resultados en una publicación y quiero estar seguro de que los IC se calculan utilizando un método aprobado para LMM..sig01
y.sigma
producidos porconfint
, son esos intervalos de confianza para la varianza ? o intervalo de confianza de la desviación estándar ?lmer
obtener una respuesta definitiva. Sin embargo, las personas generalmente usan anotaciones comosigma
para referirse a desviaciones estándar y /sigma.square
osigma^2
para referirse a variaciones.