当merTools::predictInterval
选项设置为which
时,我并不完全清楚which = 'all'
函数对每个组件的确切预测。例如,
library(lme4)
library(merTools)
fm1 <- lmer(Reaction ~ Days + (1 | Subject), sleepstudy)
pred <- predictInterval(fm1, which = 'all')
pred[pred$obs == 1,]
返回
effect fit upr lwr obs
1 combined 293.6893 335.0569 249.310016 1
181 Subject 40.6980 82.8388 -4.490277 1
361 fixed 251.2517 292.0853 212.230277 1
我认为固定效果的适合度和随机效果主体的拟合将加起来适合组合效果。但是,我得到了:
> sum(pred[pred$obs == 1 & pred$effect %in% c('fixed','Subject'),]$fit)
[1] 291.9497
我在这里错误地解释了什么?
答案 0 :(得分:0)
关键是predictInterval
通过从后验分布中抽取来模拟预测区间。它呈现组件的方式是随机,固定和组合效果的独立绘制的结果。因此,从逻辑上讲,它们应该加上测量误差和效果本身的方差,并且通过有限数量的模拟,这些分布的均值或中位数不会与总和效果相加。
您可以将n.sims
增加到一个非常大的数字(~5000,10,000),这个差距会更小。
但关键问题是这些行中的每一行都是后验独立抽取的结果。