复合对称情况下(0 + factor | group)和(1 | group)+(1 | group:factor)随机效应规格的等价关系


13

道格拉斯·贝茨(Douglas Bates)指出,以下模型是等效的:“如果向量值随机效应的方差-协方差矩阵具有一种特殊形式,称为复合对称”(本演示文稿中的幻灯片91):

m1 <- lmer(y ~ factor + (0 + factor|group), data)
m2 <- lmer(y ~ factor + (1|group) + (1|group:factor), data)

具体而言,贝茨使用以下示例:

library(lme4)
data("Machines", package = "MEMSS")

m1a <- lmer(score ~ Machine + (0 + Machine|Worker), Machines)
m2a <- lmer(score ~ Machine + (1|Worker) + (1|Worker:Machine), Machines)

具有相应的输出:

print(m1a, corr = FALSE)

Linear mixed model fit by REML ['lmerMod']
Formula: score ~ Machine + (0 + Machine | Worker)
   Data: Machines
REML criterion at convergence: 208.3112
Random effects:
 Groups   Name     Std.Dev. Corr     
 Worker   MachineA 4.0793            
          MachineB 8.6253   0.80     
          MachineC 4.3895   0.62 0.77
 Residual          0.9616            
Number of obs: 54, groups:  Worker, 6
Fixed Effects:
(Intercept)     MachineB     MachineC  
     52.356        7.967       13.917  

print(m2a, corr = FALSE)

Linear mixed model fit by REML ['lmerMod']
Formula: score ~ Machine + (1 | Worker) + (1 | Worker:Machine)
   Data: Machines
REML criterion at convergence: 215.6876
Random effects:
 Groups         Name        Std.Dev.
 Worker:Machine (Intercept) 3.7295  
 Worker         (Intercept) 4.7811  
 Residual                   0.9616  
Number of obs: 54, groups:  Worker:Machine, 18; Worker, 6
Fixed Effects:
(Intercept)     MachineB     MachineC  
     52.356        7.967       13.917

谁能以直观的方式解释模型之间的差异以及如何m1简化m2(给定复合对称性)?


6
+1,恕我直言,这绝对是话题。投票重新开放。
变形虫说莫妮卡(Monica)恢复

2
@Peter Flom为什么将这个问题视为题外话?
statmerkur

3
可能不清楚您是在问模型而不是lme4语法。如果您向不熟悉的人解释这些问题,将会有所帮助-并扩大潜在的答复者的范围lme4
Scortchi-恢复莫妮卡

看起来是关于编码的。
彼得·弗洛姆

1
如果有用的话,这里有两个很好的帖子,介绍了lme4语法的作用以及在混合模型的上下文中什么是复合对称性(请参见有关两个问题的公认答案)。stats.stackexchange.com/questions/13166/rs-lmer-cheat-sheetstats.stackexchange.com/questions/15102/...
雅各布索科拉尔

Answers:


11

在此示例中,三个机器(A,B,C)和六个工人的每种组合都有三个观测值。我将使用表示n维恒等矩阵,使用1 n表示n维矢量为1。假设y是观察的向量,我将假设它是由工人排序的,然后是机器然后进行复制。设μ为对应的期望值(例如,固定效应),设γ为与期望值的组特定偏差的向量(例如,随机效应)。以γ为条件,可以写出y的模型:Inn1nnyμγγy

yN(μ+γ,σy2I54)

σy2

γ

yN(μ,σy2I54+Σ)

ΣγΣ

m1

γ=Zθ

Z=I1813θT=[θ1,A,θ1,B,θ1,Cθ6,A,θ6,B,θ6,C]

θN(0,I6Λ)

ΛΛσθτ

Λ=[σθ2+τ2τ2τ2τ2σθ2+τ2τ2τ2τ2σθ2+τ2]

Λ

Σ=Z(I6Λ)ZTσθ2+τ2+σy2i,ju,v

cov(yi,u,yj,v)={0if ijτ2if i=j,uvσθ2+τ2if i=j,u=v

对于您而言m2,随机效应分解为:

γ=Zω+Xη

X=I619ωT=[ω1,A,ω1,B,ω1,C,,ω6,A,ω6,B,ω6,C]ηT=[η1,,η6]

ηN(0,ση2I6)
ωN(0,σω2I18)
ση2,σω2

m2Σ=σω2ZZT+ση2XXTσω2+ση2+σy2i,ju,v

cov(yi,u,yj,v)={0if ijση2if i=j,uvσω2+ση2if i=j,u=v

σθ2σω2τ2ση2 m1

简洁不是我的强项:这仅仅是一个漫长而复杂的说法,每个模型都具有两个用于随机效应的方差参数,并且只是同一“边际”模型的两种不同编写方式。

在代码中...

sigma_theta <- 1.8
tau         <- 0.5
sigma_eta   <- tau
sigma_omega <- sigma_theta
Z <- kronecker(diag(18), rep(1,3))
rownames(Z) <- paste(paste0("worker", rep(1:6, each=9)), 
                     rep(paste0("machine", rep(1:3, each=3)),6))
X <- kronecker(diag(6), rep(1,9))
rownames(X) <- rownames(Z)
Lambda <- diag(3)*sigma_theta^2 + tau^2

# marginal covariance for m1:
Z%*%kronecker(diag(6), Lambda)%*%t(Z)
# for m2:
X%*%t(X)*sigma_eta^2 + Z%*%t(Z)*sigma_omega^2

1
很好的答案!但是我认为“机器嵌套在工人中”一词可能会引起误解,因为同一台三台机器出现在一个以上(实际上每个工人)级别上。
statmerkur

@statmerkur谢谢,我试图澄清这一行。让我知道您是否还有其他建议。
Nate Pope

1
XX=I619

1
@ S.Catterall是的,这是一个错字-感谢您抓住它!我已经确定了答案。
Nate Pope

2
@statmerkur您可以阐明您的意思吗?这里没有连续的协变量,因此不确定“坡度”是什么意思。我对模型的看法是,机器之间的响应平均值(固定效果)存在系统差异。然后是每个工人的随机偏差(随机拦截/工人);然后是每个机器工人组合的随机偏差;最后是每个观察值的随机偏差。每个工人的随机偏差的方差,从给定的工作人员更相关的观察将是更大的,等
内特教皇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.