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),这个差距会变小。
但关键问题是这些行中的每一行都是从后部独立抽取的结果。
当 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),这个差距会变小。
但关键问题是这些行中的每一行都是从后部独立抽取的结果。