我正在尝试在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]
,则其长度与其他变量相同。
任何建议怎么办?
答案 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)