如何从lmerMod对象中提取原始公式(固定效应和随机效应)?

7
假设我们提出了以下线性混合模型(LMM),我们通常称之为fit
library(lme4)

fit <- lmer(Reaction ~ Days + (1 | Subject), data = sleepstudy)

假设我们还想从fit中提取原始公式(即固定效应和随机效应部分),并将其传递给另一个称为fit2的LMM。显然,将terms(fit)传递给lmer()formula参数是行不通的。
> fit2 <- lmer(terms(fit), data = sleepstudy)
Error: No random effects terms specified in formula

问题

有没有一种方法可以从fit中提取固定效应和随机效应部分,然后将其传递给lmer()


你是否试图从 fit 中提取原始公式,即 Reaction ~ Days + (1 | Subject) - neilfws
@neilfws 是的,那就是我的意思! - Dion Groothof
2
fit@call$formula 也可以实现。 - neilfws
1个回答

6

lme4 这样的软件包通常会实现 formula 方法,其唯一目的是从模型对象中提取公式,以便您无需过多考虑对象内部细节。

lme4 中,类 "merMod" 有一个名为 lme4:::formula.merModformula 方法。虽然类 "lmerMod" 没有该方法,但由于 "lmerMod" 是类 "merMod" 的直接子类——您可以使用 showClass("lmerMod") 来检查——因此,在执行 formula(<lmerMod>) 时调用 "merMod" 的方法。

因此:

formula(fit)
## Reaction ~ Days + (1 | Subject)
formula(fit, fixed.only = TRUE)
## Reaction ~ Days
formula(fit, random.only = TRUE)
## Reaction ~ (1 | Subject)
## <environment: 0x11b3944e0>

最后一个调用返回的公式环境不正确。我已在GitHub上创建了问题

lme4 实现了一系列 "merMod" 类的提取方法。例如,还有一个 model.matrix 方法,您可以使用它来提取固定效应和随机效应模型矩阵。这些方法中大多数都记录在 ?lme4::`merMod-class` 中,因此您可以在未来将其作为参考。

要获取可用方法的完整列表,请查看

methods(class = "merMod")
methods(class = "lmerMod")

加载lme4后。

如果有一个可以投票多次的选项,那么我会为这个很棒的答案大量地利用它! - Dion Groothof

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接