忽略R中lme4的系数时进行预测

  • 本文关键字:lme4 忽略 r predict lme4
  • 更新时间 :
  • 英文 :


我有一个具有mod <- lmer(value ~ time + study + (1|participant))形式因子的模型,其中我对研究系数并不真正感兴趣,但由于各种原因,我希望将其保持固定。但我想在不受研究系数影响的情况下从mod进行预测。我已经对学习因子进行了求和编码,所以我真的只需要一种方法来去除学习系数。

根据系数手动计算预测似乎有点麻烦。我想一个替代方案是用零替换研究系数(替换R中的lmer系数(

有更好的主意吗?

一个最小的例子:

library("lme4")
df <- data.frame(
participant = as.factor(c(1,1,1,2,2,2,3,3,3,4,4,4)),
time = as.factor(c(1,2,3,1,2,3,1,2,3,1,2,3)),
study = as.factor(c("A", "A", "A", "B", "B", "B", "A","A", "A", "C", "C", "C")),
value = c(1,2,3,3,4,1,3,5,3,1,7,2)
)
contrasts(df$study) = contr.sum(length(unique(df$study)))
mod <- lmer(value ~ time + study + (1|participant), data = df)
predict(mod, newdata = data.frame(time = as.factor(c(1,2,3))), re.form=NA)

这对我来说没有多大意义。如果你想忽略study的影响,你只需将其排除在用于预测的模型之外。如果你想把它包括在你的模型中,你需要把它包含在预测中。

假设您只想使用time进行预测。您可以通过为想要预测的time的每个值复制整个study列并对结果取平均值来提供study的加权平均值:

mod <- lmer(value ~ time + study + (1|participant), data = df)
pred_df <- data.frame(time = as.factor(rep(c(1,2,3), each = nrow(df))),
study = rep(df$study, 3))
preds <- predict(mod, newdata = pred_df, re.form = NA)
tapply(preds, pred_df$time, mean)
#>    1    2    3 
#> 2.00 4.50 2.25

不过,请注意,这相当于将study完全排除在模型之外:

mod <- lmer(value ~ time + (1|participant), data = df)
predict(mod, newdata = data.frame(time = as.factor(c(1,2,3))), re.form = NA)
#>    1    2    3 
#> 2.00 4.50 2.25

相关内容

  • 没有找到相关文章

最新更新