在使用lme()运行随机截距/斜率模型之后,我一直试图提取估计的受试者内部协方差矩阵。我无法确定getVarCov()函数的错误。请参见下面的示例。
my.lme <- lme(ham.d ~ week,
data = riesby, random = ~ week | id,
na.action=na.exclude,
method="ML")
getVarCov(my.lme,type="marginal")
Error in cond.var + Z %*% D %*% t(Z) : non-conformable arrays
看起来如何存储随机效果的设计矩阵,或者它们的协方差矩阵可能存在问题。
我可以通过提取随机效应的协方差矩阵和随机误差的方差,以及指定随机效应的设计矩阵来手动计算它:
z <- matrix(c(1,1,1,1,1,1,0,1,2,3,4,5),byrow=F,nrow=6)
sigma.v <- getVarCov(my.lme)
z%*%sigma.v%*%t(z) + (my.lme$sigma)^2*diag(6)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 24.845840 11.20833 9.787477 8.366625 6.945774 5.524922
[2,] 11.208328 24.08309 12.524539 13.182645 13.840751 14.498856
[3,] 9.787477 12.52454 27.478263 17.998665 20.735727 23.472790
[4,] 8.366625 13.18264 17.998665 35.031345 27.630704 32.446724
[5,] 6.945774 13.84075 20.735727 27.630704 46.742341 41.420658
[6,] 5.524922 14.49886 23.472790 32.446724 41.420658 62.611252
任何建议将不胜感激。谢谢!