正如标题所说我试图从lme4(或其他包?)对象中提取矩阵。为了明确我想要的内容,我认为最简单的方法是参考SAS文档:https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_mixed_sect022.htm
随机效应的方差 - 协方差矩阵
在SAS表示法中,此矩阵称为 G ,是随机效应参数 gamma 的方差 - 协方差矩阵。通过在PROC MIXED中使用选项“G”和输出传送系统,您可以获得 G 作为矩阵。
我知道一旦我有了伽玛的方差分量和维度,手动构造这个矩阵就相对简单了。然而,我希望有一种更简单的方式。
混合模型方程解
在SAS表示法中,这些称为 C 。 通过在PROC MIXED中使用选项“MMEQSOL”和输出传送系统,您可以请求生成混合模型方程的解,以及反转系数矩阵。我感兴趣的是后者。
提前致谢!
答案 0 :(得分:1)
不是一个非常明智的模型(见?lme4::cake
),但说明是合理的:
library(lme4)
fm1 <- lmer(angle ~ temperature +
(1|recipe)+(1|replicate), cake)
VarCorr()
方法为每个术语(在这种情况下每个术语为1x1)提供方差 - 协方差矩阵的列表,并使用自己的打印方法:
v <- VarCorr(fm1)
您可以使用bdiag()
中的Matrix
(块对角线)函数将这些组合成单个矩阵(as.matrix()
从稀疏矩阵转换为标准(密集)R矩阵对象)。
as.matrix(Matrix::bdiag(v))
## [,1] [,2]
## [1,] 39.21541 0.0000000
## [2,] 0.00000 0.4949681
遗憾的是,C矩阵并不那么容易获得。如vignette("lmer",package="lme4")
中所述,lme4
不使用Henderson方程式。 C的上部块(固定效应的方差 - 协方差矩阵)可以通过vcov()
访问,但方差的方差 - 协方差矩阵并不那么容易:参见例如here