Если я подгоняю модель случайных перехватов к R * lme4::glmer()
, я могу извлечь результирующий вектор перехватов и вычислить среднее значение и дисперсию этих перехватов. Однако результат вычисления этих чисел вручную, похоже, не совпадает с результатом использования summary()
на объекте модели. Что происходит?
Вот точный рабочий пример, на который я смотрю, показывающий несогласие:
set.seed(5)
# Load packages
library(fabricatr)
library(lme4)
##############################################################
# Make some fake data with 10 clusters, 50 observations each
# and the outcomes are correlated in clusters.
##############################################################
clusters <- rep(1:10, 50)
y <- fabricatr::draw_binary_icc(prob = 0.2, clusters = clusters, ICC = 0.5)
x1 <- rnorm(n = 500)
x2 <- rnorm(n = 500)
x3 <- rnorm(n = 500)
dat <- data.frame(clusters, y, x1, x2, x3)
##############################################################
# Fit binary logistic hierarchical regression model with
# random intercepts, interaction
##############################################################
m1 <- lme4::glmer(formula = y ~ x1*x2 + x3 + (1|clusters),
data = dat, family = binomial(link = "logit"),
nAGQ = 10)
##############################################################
# Show manual vs. summary() intercept means and variance
##############################################################
# Variance of random intercepts is 4.28, mean (Intercept) is -1.80
summary(m1)
# But manually the variance is 3.89 and mean is -1.70
intercepts <- coef(m1)$clusters["(Intercept)"]$`(Intercept)`
mean(intercepts)
var(intercepts)