在第一个层面上,我认为,所有被您忽略的收缩向人口值; “ 与混合对象最小二乘估计相比,混合影响模型的每个对象的斜率和截距更接近总体估计。 ” 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页
m3
它是0.0011713”m2
。