merTools::predictInterval 中组件的含义

Meaning of components in merTools::predictInterval

which 选项设置为 which = 'all' 时,我并不完全清楚 merTools::predictInterval 函数对每个组件的准确预测。例如,

library(lme4)
library(merTools)
fm1 <- lmer(Reaction ~ Days + (1 | Subject), sleepstudy)
pred <- predictInterval(fm1, which = 'all')
pred[pred$obs == 1,]

returns

      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

我在这里解释错了什么?

关键是predictInterval是通过后验分布来模拟预测区间。它呈现组件的方式是独立抽取随机、固定和组合效果的结果。因此,虽然从逻辑上讲它们应该相加,但由于测量误差和效应本身的方差,在有限数量的模拟中,这些分布的均值或中位数不会排列成组合效应的总和。

您可以将 n.sims 增加到一个非常大的数字(~5000、10,000),这个差距会变小。

但关键问题是这些行中的每一行都是从后部独立抽取的结果。