所以,我在R:
中拟合了一个带有两个随机截距的线性混合模型string app = @"path\to\your\target\app";
string prms = "your parameters";
System.Diagnostics.Process.Start(app, prms);
其中Y = X beta + Z b + e_i,
; b ~ MVN (0, Sigma)
和X
分别是固定和随机效应模型矩阵,Z
和beta
是固定效应参数和随机效果BLUP /条件模式。
我想了解b
的基础协方差矩阵,这在b
包中似乎不是一件小事。您只能通过lme4
获得差异,而不能获得实际的相关矩阵。
根据one of the package vignettes(第2页),您可以计算beta:VarCorr
的协方差。您可以从e_i * lambda * t(lambda)
的输出中提取所有这些组件。
我想知道这是不是要走了?或者您还有其他建议吗?
答案 0 :(得分:4)
来自?ranef
:
如果'condVar'为'TRUE',则每个数据帧都有一个属性 称为'" postVar"',这是一个对称的三维数组 面对;每个面包含a的方差 - 协方差矩阵 特定级别的分组因子。 (此属性的名称 是一个历史文物,可能会更改为'condVar' 指出未来。)
设置示例:
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)