我有一个模型,比如:
mymod = lmer(y ~ x1 + x2 + (x1 | id) , data = mydata)
我知道我可以使用getME
从拟合的对象中获得模型矩阵,但有没有一种方法可以在不首先拟合模型的情况下获得固定效果的模型矩阵:
您可以使用lme4包中的lformula
函数来执行此操作。这会重新转换一个对象,该对象持有该矩阵的转置Zt
:
library(lme4)
# create some toy data
dt <- expand.grid(x1 = 1:4, x2 = 5:6, id = LETTERS[1:20], reps = 1:2)
# this is the model in the OP:
myFormula = "y ~ x1 + x2 + (x1 | id)"
# for lFormula to work we need y in the data frame
# so just put a vector of 1s since that will not affect the random effects model matrix:
dt$y <- 1
然后:
foo <- lFormula(eval(myFormula), dt)
Z <- t(as.matrix(foo$reTrms$Zt))
其中Z
是您请求的随机效果的模型矩阵。
尝试getME(lmer(y ~ x1 + x2 + (x1 | id) , data = mydata))
。