Effects
Пакет предоставляет очень быстрый и удобный способ для построения результатов линейной модели смешанного эффекта, полученных с помощью lme4
пакета . В effect
функции вычисляет доверительные интервалы (ДИ) очень быстро, но , как заслуживающие доверия этих доверительные интервалы?
Например:
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
пакета, партия "Е" не перекрывается с партией "А".
Если я попробую то же самое, используя confint.merMod
функцию и метод по умолчанию:
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()
Я вижу, что все CI перекрываются. Я также получаю предупреждения, указывающие на то, что функции не удалось рассчитать достоверные CI. Этот пример и мой фактический набор данных заставляют меня подозревать, что effects
пакет использует ярлыки в расчете CI, которые не могут быть полностью утверждены статистиками. Насколько достоверны CI, возвращаемые effect
функцией из effects
пакета для lmer
объектов?
Что я пробовал: изучая исходный код, я заметил, что effect
функция опирается на Effect.merMod
функцию, которая, в свою очередь, указывает на Effect.mer
функцию, которая выглядит следующим образом:
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
Кажется, функция вычисляет матрицу дисперсии-ковариации из lmer
объекта:
effects:::mer.to.glm
function (mod)
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}
Это, в свою очередь, вероятно, используется в Effect.default
функции для расчета КИ (возможно, я неправильно понял эту часть):
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
...
Я не знаю достаточно о LMM, чтобы судить, является ли это правильным подходом, но, учитывая дискуссию о расчете доверительного интервала для LMM, этот подход кажется подозрительно простым.
Ответы:
Все результаты по сути одинаковы ( для данного конкретного примера ). Некоторые теоретические различия:
lsmeans
,effects
,confint(.,method="Wald")
; за исключением тогоlsmeans
, что эти методы игнорируют эффекты конечного размера («степени свободы»), но в этом случае они практически не имеют никакого значения (df=40
практически неотличимы от бесконечногоdf
)Я думаю, что все эти подходы разумны (некоторые из них более приблизительны, чем другие), но в этом случае едва ли имеет значение, какой вы используете. Если вы обеспокоены, попробуйте несколько контрастных методов на ваших данных или на смоделированных данных, которые похожи на ваши собственные, и посмотрите, что происходит ...
(PS: Я бы не слишком большой вес на том , что доверительные интервалы
A
иE
не перекрывают друг друга Вы должны были бы сделать надлежащую процедуру сравнения парное сделать достоверные выводы о различиях между этим. Определенной пары оценок. ..)95% ДИ:
Код сравнения:
источник
effects
пакет и CI перекрываются в этом случае?multcomp
пакете, но для этого требуется как минимум немного заботы)Похоже, что вы сделали во втором методе, чтобы вычислить доверительные интервалы для коэффициентов регрессии, а затем преобразовать их, чтобы получить CI для предсказаний. Это игнорирует ковариации между коэффициентами регрессии.
Попробуйте подобрать модель без перехвата, чтобы
batch
эффекты фактически были предсказаниями иconfint
возвращали нужные вам интервалы.Приложение 1
Я сделал именно то, что я предложил выше:
Эти интервалы, похоже, соответствуют результатам из
effects
.Приложение 2
Другой альтернативой является пакет lsmeans . Он получает степени свободы и скорректированную ковариационную матрицу из пакета pbkrtest .
Они даже больше соответствуют± 1,96 × с , Так что теперь я думаю, что они не очень заслуживают доверия.
effect
результатам: стандартные ошибки идентичны, ноeffect
используют разные значения df.confint
Результаты в Приложении 1 даже уже, чем асимптотические, основанные на использованииРезультаты
effect
иlsmeans
аналогичны, но с несбалансированной многофакторной ситуацией,lsmeans
по умолчанию усредняются по неиспользованным факторам с равными весами, тогда какeffect
весы по наблюдаемым частотам (доступны в качестве опции вlsmeans
).источник
effects
можно ли доверять элементам конфигурации из пакета дляlmer
объектов. Я рассматриваю возможность использования результатов в публикации и хочу убедиться, что CI рассчитываются с использованием утвержденного метода для LMM..sig01
и.sigma
производныеconfint
, являются ли эти доверительные интервалы для дисперсии ? или доверительный интервал стандартного отклонения ?lmer
окончательного ответа. Тем не менее, люди обычно используют обозначения любятsigma
для обозначения стандартных отклонений, иsigma.square
илиsigma^2
для обозначения отклонений.