在lmer
函数内lme4
的R
存在是构建随机效应,模型矩阵的呼叫,作为解释在这里,7页- 9。
计算需要两个矩阵和 KhatriRao和/或Kronecker积。
矩阵是一个的:“分组因子索引的指标矩阵”,但是它似乎是带有伪编码的稀疏矩阵,用于选择对应于较高层次级别的哪个单元(例如,重复测量的主题)在“任何观察。所述矩阵似乎作为在较低层级测量的选择器,以便两个“选择器”的组合将产生一矩阵,通过下面的例子中的纸张所示的形式的:
(f<-gl(3,2))
[1] 1 1 2 2 3 3
Levels: 1 2 3
(Ji<-t(as(f,Class="sparseMatrix")))
6 x 3 sparse Matrix of class "dgCMatrix"
1 2 3
[1,] 1 . .
[2,] 1 . .
[3,] . 1 .
[4,] . 1 .
[5,] . . 1
[6,] . . 1
(Xi<-cbind(1,rep.int(c(-1,1),3L)))
[,1] [,2]
[1,] 1 -1
[2,] 1 1
[3,] 1 -1
[4,] 1 1
[5,] 1 -1
[6,] 1 1
转置这些矩阵中的每一个,并执行Khatri-Rao乘法:
但是是它的转置:
(Zi<-t(KhatriRao(t(Ji),t(Xi))))
6 x 6 sparse Matrix of class "dgCMatrix"
[1,] 1 -1 . . . .
[2,] 1 1 . . . .
[3,] . . 1 -1 . .
[4,] . . 1 1 . .
[5,] . . . . 1 -1
[6,] . . . . 1 1
事实证明,作者利用数据库sleepstudy
中lme4
,但真的不细说设计矩阵,也适用于这个特定的研究。因此,我试图了解上面复制的论文中的组合代码将如何转化为更有意义的sleepstudy
示例。
为了视觉上的简化,我将数据集简化为三个主题:“ 309”,“ 330”和“ 371”:
require(lme4)
sleepstudy <- sleepstudy[sleepstudy$Subject %in% c(309, 330, 371), ]
rownames(sleepstudy) <- NULL
如果单独考虑简单的OLS回归,则每个人将表现出截然不同的截距和斜率,这表明需要具有与主题相对应的具有更高层次或单元级别的混合效应模型:
par(bg = 'peachpuff')
plot(1,type="n", xlim=c(0, 12), ylim=c(200, 360),
xlab='Days', ylab='Reaction')
for (i in sleepstudy$Subject){
fit<-lm(Reaction ~ Days, sleepstudy[sleepstudy$Subject==i,])
lines(predict(fit), col=i, lwd=3)
text(x=11, y=predict(fit, data.frame(Days=9)), cex=0.6,labels=i)
}
混合效果回归调用为:
fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)
从函数中提取的矩阵得出以下结果:
parsedFormula<-lFormula(formula= Reaction~Days+(Days|Subject),data= sleepstudy)
parsedFormula$reTrms
$Ztlist
$Ztlist$`Days | Subject`
6 x 12 sparse Matrix of class "dgCMatrix"
309 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . . . . .
309 0 1 2 3 4 5 6 7 8 9 . . . . . . . . . . . . . . . . . . . .
330 . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . .
330 . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 . . . . . . . . . .
371 . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1
371 . . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9
这似乎是正确的,但如果是,它后面的线性代数是什么?我了解的行1
是个人喜欢的选择。例如,主题309
是基线+ 9个观察值,因此得到4 1
等等。第二部分显然是实际测量值:0
用于基线,1
睡眠剥夺的第一天等。
但是,什么是实际 和矩阵和相应的或,取其相关吗?X 我ž 我 = (Ĵ Ť我 * X Ť我)⊤ Ž 我 = (Ĵ Ť我 ⊗ X Ť我)⊤
这是可能的
问题在于它不是lmer
函数所要求的转置,并且仍然不清楚创建的规则是什么。