gpt4 book ai didi

r - 如何从 lme4 获得随机效应(BLUPs/条件模式)的协方差矩阵

转载 作者:行者123 更新时间:2023-12-04 13:59:22 24 4
gpt4 key购买 nike

所以,我在 R 中拟合了一个带有两个随机截距的线性混合模型:

Y = X beta  + Z b + e_i, 

哪里 b ~ MVN (0, Sigma) ; XZ分别是固定和随机效应模型矩阵, betab是固定效果参数和随机效果 BLUP/条件模式。

我想了解 b 的底层协方差矩阵,这在 lme4 中似乎不是一件小事包裹。您只能通过 VarCorr 获得方差,不是实际的相关矩阵。

根据 one of the package vignettes (第 2 页),您可以计算 beta 的协方差: e_i * lambda * t(lambda) .以及您可以从 lme4 的输出中提取的所有组件.

我想知道这是要走的路吗?或者您有其他建议吗?

最佳答案

来自 ?ranef :

If ‘condVar’ is ‘TRUE’ each of the data frames has an attribute called ‘"postVar"’ which is a three-dimensional array with symmetric faces; each face contains the variance-covariance matrix for a particular level of the grouping factor. (The name of this attribute is a historical artifact, and may be changed to ‘condVar’ at some point in the future.)



设置示例:
library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
rr <- ranef(fm1,condVar=TRUE)

获取 b之间的方差-协方差矩阵截距值
pv <- attr(rr[[1]],"postVar")
str(pv)
##num [1:2, 1:2, 1:18] 145.71 -21.44 -21.44 5.31 145.71 ...

所以这是一个 2x2x18 的数组;每个切片是特定主题的条件截距和斜率之间的方差-协方差矩阵(根据定义,每个主题的截距和斜率与所有其他主题的截距和斜率无关)。

将其转换为方差-协方差矩阵(参见 getMethod("image",sig="dgTMatrix") ...)
library(Matrix)
vc <- bdiag( ## make a block-diagonal matrix
lapply(
## split 3d array into a list of sub-matrices
split(pv,slice.index(pv,3)),
## ... put them back into 2x2 matrices
matrix,2))
image(vc,sub="",xlab="",ylab="",useRaster=TRUE)

enter image description here

关于r - 如何从 lme4 获得随机效应(BLUPs/条件模式)的协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com