在 lme4 中指定公式的不同方法

Different ways for specifying formula in lme4

library(lme4)

data("sleepstudy")

sleepstudy$x2 <- runif(length(sleepstudy$Reaction))
sleepstudy$x3 <- runif(length(sleepstudy$Reaction))

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

我想知道如何以不同的方式指定上述公式。作为上下文,我的数据框由 1 个因变量、20 个自变量和 1 个用作随机效应的分组变量组成。我做了一些预处理,基本上减少了自变量的数量。但是,我确实知道这 20 个变量中的哪些会被提前保留。那么有什么方法可以指定上面的内容,例如:

mdl <- lmer(sleepstudy[,"the first column"]  ~ sleepstudy[, "all the other columns in the df"] + (1|"the last column"), data = sleepstudy)

我唯一知道的是第一列是因变量,最后一列是随机变量,中间的所有列都是预测变量

编辑

我已经这样做了:

as.formula(paste("y~", paste(pred.names, collapse="+")))

pred.names 是我要使用的最终变量列表的名称。在上面的公式中,随机效应 gorup 变量放在哪里。

根据描述

sleepstudy <- sleepstudy[c(1:2, 4:5, 3)]
out <- lmer(formula(paste(names(sleepstudy)[1], '~', 
  paste(names(sleepstudy)[2:(ncol(sleepstudy)-1)], collapse=' + '), 
  '+ (1|', names(sleepstudy)[ncol(sleepstudy)], ')')), data = sleepstudy)

注意:这里,我们假设最后一列是'Subject'

检查输出

mdl <- lmer(Reaction  ~ Days + x2 + x3 + (1|Subject), data = sleepstudy)
all.equal(out, mdl)
#[1] TRUE