在第一层,我认为你们都忽略了人口价值的收缩;“混合效应模型中的每个受试者的斜率和截距比受试者内最小二乘估计值更接近总体估计值。 ” [参考。1]。以下链接可能也会有所帮助(对于我的混合模型,要查看哪些正确的描述?),请参阅 Mike Lawrence 的回答)。
此外,我认为您在玩具示例中有点不走运,因为您有一个完美平衡的设计,导致您在没有缺失值的情况下获得完全相同的估计。
现在尝试以下具有相同过程且没有缺失值的代码:
cat <- as.factor(sample(1:5, n*k, replace=T) ) #This should be a bit unbalanced.
cat_i <- 1:k # intercept per kategorie
x <- rep(1:n, k)
sigma <- 0.2
alpha <- 0.001
y <- cat_i[cat] + alpha * x + rnorm(n*k, 0, sigma)
m1 <- lm(y ~ x)
m3 <- lme(y ~ x, random = ~ 1|cat, na.action = na.omit)
round(digits= 7,fixef(m3)) == round(digits=7, coef(m1)) #Not this time lad.
#(Intercept) x
# FALSE FALSE
现在在哪里,因为您的设计不是完全平衡的,所以您没有相同的系数估计值。
实际上,如果您以一种愚蠢的方式使用您的缺失值模式(例如:),y[ c(1:10, 100 + 1:10, 200 + 1:10, 300 + 1:10, 400 +1:10)] <- NA
那么您的设计仍然是完美平衡的,您将再次获得相同的系数。
require(nlme)
set.seed(128)
n <- 100
k <- 5
cat <- as.factor(rep(1:k, each = n))
cat_i <- 1:k # intercept per kategorie
x <- rep(1:n, k)
sigma <- 0.2
alpha <- 0.001
y <- cat_i[cat] + alpha * x + rnorm(n*k, 0, sigma)
plot(x, y)
# simulate missing data in a perfectly balanced way
y[ c(1:10, 100 + 1:10, 200 + 1:10, 300 + 1:10, 400 +1:10)] <- NA
m1 <- lm(y ~ x)
m3 <- lme(y ~ x, random = ~ 1|cat, na.action = na.omit)
round(digits=7,fixef(m3)) == round(digits=7, coef(m1)) #Look what happend now...
#(Intercept) x
# TRUE TRUE
您对原始实验的完美设计略有误导。当您将 NA 插入不平衡的距离时,您改变了个体受试者可以相互借用多少“强度”的模式。
简而言之,您看到的差异是由于收缩效应造成的,更具体地说,是因为您用非完美平衡的缺失值扭曲了原始的完美平衡设计。
参考 1:Douglas Bates lme4:使用 R 进行混合效果建模,第 71-72 页