在拟合混合效果模型(或任何其他模型)时,使用新数据或新模型参数预测“反事实”拟合值通常很有用。在我的情况下,我想用新的随机效应预测拟合值。
lme4
包允许用户插入新参数来代替beta
类的theta
,sigma
和merMod
个广告位。这将允许人们在反事实固定效应系数下预测拟合值。我如何对随机效应估计做同样的事情?
我的第一个想法是直接修改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
答案 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
会根据sleepstudy
,Subject
组件及其组合的随机组件细分的fixed
数据显示观察3的预测值。
您可以通过将combined
效果与fixed
的一些反事实值相加来重新计算Subject
效果。 R中的函数不直接支持这一点,但您可以执行一些数据操作:
counter_fact <- predInt2[predInt2$effect == "fixed", ]
counter_fact$est <- counter_fact$fit + 20
head(counter_fact)
现在你有一个估计值,如果随机分量是常数,所有观察结果都是20。