Effects
Paket için çok hızlı ve kolay bir yol sağlar karışık etki modeli sonuçlar doğrusal çizilmesi ile elde edilen lme4
bir paket . effect
Fonksiyon hesaplar güven aralığı (GA) çok hızlı bir şekilde, ama nasıl güvenilir bunlar güven aralıkları nelerdir?
Örneğin:
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()
effects
Paket kullanılarak hesaplanan CI'lere göre , "E" grubu, "A" grubu ile örtüşmemektedir.
Aynı confint.merMod
işlevi ve varsayılan yöntemi kullanarak denersem:
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()
Bütün CI'lerin çakıştığını görüyorum. Ayrıca, işlevin güvenilir CI'leri hesaplayamadığına dair uyarılar da alıyorum. Bu örnek ve gerçek veri setim, effects
paketin CI hesaplamasında tamamen istatistikçiler tarafından onaylanmayan kısayollar aldığından şüphelenmemi sağlıyor . CI'ler effect
işlev tarafından effects
paketten alınan lmer
nesneler için ne kadar güvenilirdir ?
Neyi denedim: Kaynak koduna baktığımda, effect
fonksiyonun Effect.merMod
fonksiyona bağlı olduğunu, bunun da Effect.mer
fonksiyona yöneldiğini ve bunun gibi göründüğünü fark ettim :
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
fonksiyon lmer
nesneden Variance-Covariate Matrix değerini hesaplıyor gibi görünüyor :
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Bu, sırayla, muhtemelen Effect.default
CI'leri hesaplamak için kullanılır (bu bölümü yanlış anlamış olabilirim):
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
...
Bunun doğru bir yaklaşım olup olmadığına karar vermek için LMM'ler hakkında yeterince bilgim yok, ancak LMM'ler için güven aralığı hesaplama konusundaki tartışmaları göz önüne alındığında, bu yaklaşım şüphesiz basit görünüyor.