Как получить коэффициенты и их доверительные интервалы в моделях смешанных эффектов?
В моделях lm
и glm
я использую функции coef
и confint
для достижения цели:
m = lm(resp ~ 0 + var1 + var1:var2) # var1 categorical, var2 continuous
coef(m)
confint(m)
Теперь я добавил случайный эффект к модели - использовал модели смешанных эффектов, используя функцию lmer
из пакета lme4. Но тогда функции coef
и confint
больше не работают для меня!
> mix1 = lmer(resp ~ 0 + var1 + var1:var2 + (1|var3))
# var1, var3 categorical, var2 continuous
> coef(mix1)
Error in coef(mix1) : unable to align random and fixed effects
> confint(mix1)
Error: $ operator not defined for this S4 class
Я пытался использовать Google и использовать документы, но без результата. Пожалуйста, укажите мне в правильном направлении.
EDIT: Я также думал, что этот вопрос больше подходит для https://stats.stackexchange.com/, но я считаю его более техническим, чем статистическим, поэтому я сделал вывод, что он лучше всего подходит (SO)... как вы думаете?
Ответы
Ответ 1
Есть два новых пакета: lmerTest и lsmeans, который может вычислять доверительные пределы 95% для вывода lmer
и glmer
. Может быть, вы можете посмотреть на них? И coefplot2, я думаю, что может это сделать (хотя, как Бен указывает ниже, не так сложным образом, из стандартных ошибок по статистике Wald, в отличие от приближений Kenward-Roger и/или Satterthwaite df, используемых в lmerTest
и lsmeans
)... Просто стыдно, что в пакете lsmeans
по-прежнему нет встроенных объектов построения шрифтов (так как есть в пакете effects()
, который также возвращает 95% доверительные пределы для объектов lmer
и glmer
, но делает это, обновляя модель без каких-либо случайных факторов, что, очевидно, неверно).
Ответ 2
Я предлагаю вам использовать добрую старую lme (в пакете nlme). Он имеет уверенность, и если вам нужно согласовать контрасты, существует ряд вариантов (оцениваемых в gmodels, контраст в контрастах, glht в multcomp).
Почему p-значения и confint отсутствуют в lmer: см. http://finzi.psych.upenn.edu/R/Rhelp02a/archive/76742.html.
Ответ 3
Предполагая нормальное приближение для фиксированных эффектов (что и было сделано), мы можем получить доверительные интервалы 95% на
оценка + 1.96 * стандартная ошибка.
Применительно к компонентам дисперсии/случайным эффектам не применяется следующее.
library("lme4")
mylm <- lmer(Reaction ~ Days + (Days|Subject), data =sleepstudy)
# standard error of coefficient
days_se <- sqrt(diag(vcov(mylm)))[2]
# estimated coefficient
days_coef <- fixef(mylm)[2]
upperCI <- days_coef + 1.96*days_se
lowerCI <- days_coef - 1.96*days_se
Ответ 4
Не уверен, когда он был добавлен, но теперь confint() реализован в lme4.
Например, следующий пример работает:
library(lme4)
m = lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
confint(m)
Ответ 5
Чтобы найти коэффициент, вы можете просто использовать итоговую функцию lme4
m = lm(resp ~ 0 + var1 + var1:var2) # var1 categorical, var2 continuous
m_summary <- summary(m)
иметь все коэффициенты:
m_summary$coefficient
Если вам нужен доверительный интервал, умножьте стандартную ошибку на 1.96:
CI <- m_summary$coefficient[,"Std. Error"]*1.96
print(CI)