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

时间:2018-04-22 15:56:18

标签: r regression lme4 mixed-models

Add(string s) { Add((object)s);}

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

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)

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

修改

我做到了:

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变量放在上面的公式中。

1 个答案:

答案 0 :(得分:1)

基于描述

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)

注意:在这里,我们假设最后一列是&#39;主题&#39;

检查输出

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