Effects
paket menyediakan cara yang sangat cepat dan mudah untuk memplot hasil model efek campuran linier yang diperoleh melalui lme4
paket . The effect
interval fungsi menghitung kepercayaan (CI) sangat cepat, tapi bagaimana dapat dipercaya adalah interval keyakinan ini?
Sebagai contoh:
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()
Menurut CI yang dihitung menggunakan effects
paket, batch "E" tidak tumpang tindih dengan batch "A".
Jika saya mencoba confint.merMod
fungsi menggunakan yang sama dan metode default:
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()
Saya melihat bahwa semua CI tumpang tindih. Saya juga mendapatkan peringatan yang menunjukkan bahwa fungsi gagal menghitung CI yang dapat dipercaya. Contoh ini, dan set data aktual saya, membuat saya curiga bahwa effects
paket mengambil pintasan dalam perhitungan CI yang mungkin tidak sepenuhnya disetujui oleh ahli statistik. Seberapa tepercaya CI yang dikembalikan dengan effect
fungsi dari effects
paket untuk lmer
objek?
Apa yang saya coba: Melihat ke kode sumber, saya perhatikan bahwa effect
fungsi bergantung pada Effect.merMod
fungsi, yang pada gilirannya mengarahkan ke Effect.mer
fungsi, yang terlihat seperti ini:
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
fungsi tampaknya menghitung Variance-Covariate Matrix dari lmer
objek:
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Ini, pada gilirannya, mungkin digunakan dalam Effect.default
fungsi untuk menghitung CI (saya mungkin salah paham bagian ini):
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
...
Saya tidak cukup tahu tentang LMM untuk menilai apakah ini merupakan pendekatan yang tepat, tetapi mempertimbangkan diskusi tentang perhitungan interval kepercayaan untuk LMM, pendekatan ini tampak sederhana dan mencurigakan.