如何从R的glmmTMB对象提取随机线性预测器协方差矩阵
从glmmTMB对象获取随机线性预测器的协方差矩阵(含方差)
方法1:借助内部函数快速构建
提取核心矩阵
- 获取Z矩阵:
Z <- getME(fit, "Z") - 生成随机效应的协方差矩阵D(对应lme4中
L %*% t(L)的结果):D <- glmmTMB::mkD(fit),该函数会直接输出块对角结构的完整D矩阵
示例代码:
library(glmmTMB) # fit为已拟合的glmmTMB模型对象 Z <- getME(fit, "Z") D <- glmmTMB::mkD(fit)- 获取Z矩阵:
计算随机线性预测器的协方差矩阵
rand_cov_matrix <- Z %*% D %*% t(Z)提取对角线(即随机线性预测器的方差)
rand_var <- diag(rand_cov_matrix)
方法2:手动拼接协方差矩阵(稳定性更强)
如果不想依赖内部函数,可基于VarCorr的输出手动构建D矩阵:
提取各随机效应组的协方差信息
vc <- VarCorr(fit) cov_list <- lapply(vc, function(x) as.matrix(x))拼接成块对角矩阵D
library(Matrix) D <- bdiag(cov_list)后续步骤同方法1,用
Z %*% D %*% t(Z)计算协方差矩阵,再提取对角线方差
内容的提问来源于stack exchange,提问作者KOE
相关产品推荐
相关产品推荐

