Effects
gói cung cấp một cách rất nhanh chóng và thuận tiện để vẽ các kết quả mô hình hiệu ứng hỗn hợp tuyến tính thu được thông qua lme4
gói . Các effect
khoảng thời gian chức năng tính toán của niềm tin (TCTD) rất nhanh chóng, nhưng làm thế nào đáng tin cậy là những khoảng tin cậy?
Ví dụ:
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()
Theo các TCTD được tính toán bằng cách sử dụng effects
gói, lô "E" không trùng với lô "A".
Nếu tôi thử sử dụng confint.merMod
chức năng tương tự và phương thức mặc định:
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()
Tôi thấy rằng tất cả các TCTD chồng chéo. Tôi cũng nhận được cảnh báo chỉ ra rằng chức năng không thể tính được các TCTD đáng tin cậy. Ví dụ này và bộ dữ liệu thực tế của tôi khiến tôi nghi ngờ rằng effects
gói đó có các phím tắt trong tính toán CI mà có thể không hoàn toàn được các nhà thống kê chấp thuận. Làm thế nào đáng tin cậy là các TCTD được trả về bởi effect
hàm từ effects
gói cho lmer
các đối tượng?
Tôi đã thử những gì: Nhìn vào mã nguồn, tôi nhận thấy rằng effect
hàm phụ thuộc vào Effect.merMod
hàm, từ đó chuyển hướng đến Effect.mer
hàm, trông giống như sau:
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
Hàm dường như tính toán Ma trận phương sai-Covariate từ lmer
đối tượng:
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Đến lượt nó, có lẽ được sử dụng trong Effect.default
chức năng để tính toán các TCTD (tôi có thể đã hiểu nhầm phần này):
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
...
Tôi không biết đủ về các LMM để đánh giá liệu đây có phải là một cách tiếp cận đúng hay không, nhưng xem xét các cuộc thảo luận xung quanh việc tính toán khoảng tin cậy cho các LMM, cách tiếp cận này có vẻ đơn giản đáng ngờ.