我正在使用
marginaleffects
来计算使用 brms
拟合的贝叶斯 Logit 模型的边际治疗效果:
fit <- brm(y ~ (treat|state) + treat + age + sex + race, family = "bernoulli", data = dat)
mfx <- avg_slopes(fit, variable = "treat", by = "state")
avg_slopes
函数返回一个汇总表,包括每个状态的治疗效果的估计值和 95% CI。
我想对每个边际效应的链进行一些诊断。至少,我想计算每种治疗效果的效果。如果我可以通过链提取与每个边际效应相对应的抽奖,我知道如何做到这一点 - 那么有没有办法做到这一点?我知道有
posterior_draws
函数,但是这是从后验中采样的,因此对于提取链或计算 rhats 的目的没有帮助。
考虑使用
posterior_draws()
输出 rvar
对象,可以
然后由posterior
包处理:
library(brms)
library(marginaleffects)
library(posterior)
mod <- brm(mpg ~ wt * hp, data = mtcars)
slo <- avg_slopes(mod)
dra <- posterior_draws(slo, shape = "rvar")
sapply(dra$rvar, posterior::rhat)
hp.main_marginaleffect.dY/dX wt.main_marginaleffect.dY/dX
1.001199 1.000394
sapply(dra$rvar, posterior::ess_basic)
hp.main_marginaleffect.dY/dX wt.main_marginaleffect.dY/dX
4119.939 3711.978
sapply(dra$rvar, posterior::mcse_mean)
hp.main_marginaleffect.dY/dX wt.main_marginaleffect.dY/dX
0.000121686 0.009075347