brms 模型的边际效应诊断

问题描述 投票:0回答:1

我正在使用

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 的目的没有帮助。

rstan brms r-marginaleffects
1个回答
0
投票

考虑使用

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 
© www.soinside.com 2019 - 2024. All rights reserved.