LMER中的动态协变量在emmeans中不起作用

时间:2019-05-10 14:36:00

标签: r variables dynamic lme4 emmeans

我正在尝试在lmer模型中使用动态协变量(取自用户输入)。效果很好,但是应用emmeans不再起作用。

示例:

fit1 = lmer(get(uservar) ~ Intervention + period + sequence + age + (1|ID),
            data = mydata, REML=T)

emmeans(fit1, list(pairwise ~ Intervention), adjust = "tukey")

运行正常。

lmer(get(uservar) ~ Intervention + period + sequence + get(covariable) + (1|ID),
     data = mydata, REML=T)

从用户输入弹出框中获取"age"的协变量也是有效的。

但是:

emmeans(fit1, list(pairwise ~ Intervention), adjust = "tukey")

不再运行。就是说:

  

变量具有不同的长度(针对“协变量”)

但这不是事实。如果我选中mydata[,covariable],则其长度与其他变量相同。

任何建议怎么办?

2 个答案:

答案 0 :(得分:1)

emmeans()必须能够为预测变量重建数据,以获取诸如协变量均值和因子水平之类的信息。如果将用户指定的数据保存在数据框中并使用该数据框拟合模型,则它将起作用。但是请记住,如果您随后更改了该数据框(例如,使用另一个用户输入),即使您不调整模型,它也会更改emmeans()结果,因为它无法知道数据已更改。

答案 1 :(得分:0)

我找到了一个非常简单的解决方案:

fixed.part <- "get(usevar) ~ Intervention + Periode + Sequenz +  (1|ID)"
random.part <- covariable

fit1 <- lmer(formula(paste(fixed.part, random.part, sep = " + ")), 
 data =testdat_long_cc, REML=TRUE)
emmeans(fit1)