预测新的随机效应

时间:2016-03-11 18:24:47

标签: r predict lme4

在拟合混合效果模型(或任何其他模型)时,使用新数据或新模型参数预测“反事实”拟合值通常很有用。在我的情况下,我想用新的随机效应预测拟合值。

lme4包允许用户插入新参数来代替beta类的thetasigmamerMod个广告位。这将允许人们在反事实固定效应系数下预测拟合值。我如何对随机效应估计做同样的事情?

我的第一个想法是直接修改u对象的merMod插槽,但这似乎没有做任何事情。我该怎么办?

示例代码:

library(lme4)

# use sleepstudy example
fm1 <- lmer(Reaction ~ Days + (1 | Subject), sleepstudy)

# estimate predictions
fm1Predictions <- predict(fm1)

# estimate predictions with new fixed effects (arbitrarily set to 10)
cfPredictions <- predict(fm1, newparams=list('theta'=10)) # different than fm1Predictions

# estimate predictions with new random effects
fm2 <- fm1
fm2@u <- rep(10,length(fm2@u))
fm2Predictions <- predict(fm2) # same as fm1Predictions

1 个答案:

答案 0 :(得分:1)

这不是最优雅的解决方案,但它可能同时起作用。

使用merTools,您可以从data.frame中的多级模型返回预测值的组成部分。

library(merTools)
fm1 <- lmer(Reaction ~ Days + (1 | Subject), sleepstudy)
predInt2 <- predictInterval(fm1, which = "all", seed = 8231,
                        include.resid.var = TRUE)

指定which = "all"表示除了完整的预测值外,还会返回预测值的组成部分。

predInt2[predInt2$obs == 3,]

返回:

      effect       fit       upr         lwr obs
3   combined 313.16116 353.33704 268.5411738   3
183  Subject  40.02862  83.56716  -0.8552207   3
363    fixed 272.02953 313.85544 230.8799770   3

data.frame会根据sleepstudySubject组件及其组合的随机组件细分的fixed数据显示观察3的预测值。

您可以通过将combined效果与fixed的一些反事实值相加来重新计算Subject效果。 R中的函数不直接支持这一点,但您可以执行一些数据操作:

counter_fact <- predInt2[predInt2$effect == "fixed", ]
counter_fact$est <- counter_fact$fit + 20
head(counter_fact)

现在你有一个估计值,如果随机分量是常数,所有观察结果都是20。