我正在使用lme4
拟合一个线性混合效应模型:
library(lme4)
data(Orthodont)
dent <- Orthodont
d.test <- lmer(distance ~ age + (1|Subject), data=dent)
如果我们通常说
Y = X * B + Z * d + e
是线性混合效应模型的形式,那么我试图从模型结果中得到Var(Y) = Z * Var(d) * Z^t + Var(e)
。以下公式是否是正确的实现方法?k <- table(dent$Subject)[1]
vars <- VarCorr(d.test)
v <- as.data.frame(vars)
sigma <- attr(vars, "sc")
s.tech <- diag(v$vcov[1], nrow=k)
icc <- v$vcov[1]/sum(v$vcov)
s.tech[upper.tri(s.tech)] <- icc
s.tech[lower.tri(s.tech)] <- icc
sI <- diag(sigma^2, nrow=length(dent$age))
var.b <- kronecker(diag(1, nrow=length(dent$age)/k), s.tech)
var.y <- sI + var.b
我认为这是一个简单的问题,但我找不到任何可以完成这个任务的代码,所以我想问一下我的操作是否正确。
x
对象(在sI <- diag(sigma^2, nrow=nrow(x))
中)。无论如何,您可以使用vcov
方法获取任何merMod
对象(即lmer
生成的对象)的方差-协方差矩阵。在您的情况下:vcov(d.test)
。但是这只提供了固定效应的矩阵。 - Oriol Mirosavcov
/VarCorr
不是我正在寻找的答案 - 它们为固定和随机效应提供方差/协方差。我试图获取数据Y
的方差/协方差。 - learner