
Savage-Dickey、桥接还是BIC近似bayestestR四种贝叶斯因子计算方法深度解析【免费下载链接】bayestestR:ghost: Utilities for analyzing Bayesian models and posterior distributions项目地址: https://gitcode.com/gh_mirrors/ba/bayestestR在贝叶斯统计中贝叶斯因子Bayes Factor是量化数据支持哪个假设的核心指标。R 语言开源包bayestestR是分析贝叶斯模型与后验分布的常用工具它把四类主流贝叶斯因子计算方法整合进统一的bayesfactor()函数Savage-Dickey 密度比、ROPE 区间法、桥接采样Bridge Sampling与 BIC 近似。本文将用通俗的语言带你逐一拆解这四种方法的原理、适用场景与源码位置帮你做出正确的选型。什么是贝叶斯因子一分钟搞懂按贝叶斯定理观察数据后两个假设的后验概率之比 似然比 × 先验概率之比。中间的似然比就是贝叶斯因子BFBF 数据在假设1下出现的可能性 ÷ 数据在假设0下出现的可能性BF 1数据更支持假设1备择假设BF 1数据更支持假设0零假设BF 1数据对两个假设无偏向bayestestR 的入口函数 bayesfactor() 会根据你的输入自动分派到四种计算方法——这正是它智能的地方# 输入向量 → Savage-Dickey输入多个模型 → 模型比较 bayesfactor(posterior, prior prior) # 单参数 bayesfactor(model1, model2, model3) # 模型比较方法一Savage-Dickey 密度比 —— 单参数点零假设检验适用问题某个参数是否显著不为 0这是最常用的贝叶斯因子计算方式。原理非常直观在零假设值默认null 0处读取先验密度的高度在同一位置读取后验密度的高度两者相除就得到贝叶斯因子如果数据让后验分布避开了零值零值处的后验密度就会低于先验密度BF 就会大于 1说明数据支持参数不为 0。 通俗理解就像比较赌局开始前和开奖后零值这个位置被压中的概率变化了多少倍。该方法的实现位于 bayesfactor_parameters()依赖logspline包对 MCMC 样本做密度估计。它还支持单侧检验direction left/right和分裂假设方便你做有方向性的预测。方法二ROPE 区间法 —— 检验效应是否小到可忽略适用问题这个效应是否在实践可忽略的范围内当零假设是一个区间而非单点时比如相关系数在 -0.1 到 0.1 之间即视为无效应Savage-Dickey 不再适用。此时 bayestestR 采用Morey Rouder2011的区间零假设方法比较参数落在 ROPE 区间内外的先验概率比值与后验概率比值其变化量即为贝叶斯因子。配合 rope_range() 可以为常见效应量自动设定默认 ROPE 范围例如bayesfactor_rope(model) # 自动使用建议的 ROPE 范围做贝叶斯因子检验这种方法与p_rope()、rope()函数家族一脉相承是效应存在性分析Existence 而非 Significance的核心工具。方法三桥接采样 —— brms / rstanarm 模型的精确比较适用问题模型 A 和模型 B哪个更好地解释了我的数据当你用brms或rstanarm拟合了两个或多个贝叶斯模型最严谨的比较方式是计算各自的边缘似然marginal likelihood再取比值。直接积分高维参数空间是困难的bridgesampling包用桥接采样技术巧妙地绕过了这个计算瓶颈。bayestestR 在 bayesfactor_models() 中检测到brmsfit/stanreg对象时会自动走这条路径。使用前有两个注意事项模型类型拟合时必须设置brms::brm()save_pars save_pars(all TRUE)rstanarm::stan_glm()等指定diagnostic_file⚠️ 另外BF 估计对样本量敏感建议比常规后验推断多抽10 倍的 MCMC 迭代官方手册页 bayesfactor_models.Rd 有完整示例。方法四BIC 近似 —— 频率派模型的快速贝叶斯化适用问题我没有拟合贝叶斯模型只有 lm / lmer 等频率派模型也能比较吗可以。利用BIC贝叶斯信息准则近似BF₁₀ ≈ exp((BIC₀ − BIC₁) / 2)两个模型 BIC 每相差 10BF 就相差约 100 倍——这个近似在大样本下相当可靠。转换逻辑就封装在 10 行代码的 bic_to_bf() 中。bayestestR 对其他所有类型的模型如lm、lmerMod默认都走 BIC 近似路径因此你可以直接把lm()拟合对象塞进bayesfactor_models()零门槛完成模型比较bayesfactor_models(lm(mpg ~ 1, data mtcars), lm(mpg ~ hp, data mtcars), denominator 1) # 以第一个模型为参照不过请留意BIC 近似无法表达参数先验分布形状的差异它假设参数要么被限制为 0、要么不被限制。想要精细的先验建模还是应回到方法三。进阶纳入贝叶斯因子Inclusion BF—— 跨模型平均证据适用问题在所有候选模型中变量 X 总体上该不该被纳入bayesfactor_inclusion() 回答的问题更宏观包含预测变量 X 的一组模型平均而言比不包含 X 的一组模型更能产生观测数据吗它基于模型后验概率比较先验纳入概率与后验纳入概率的比值变化相当于对一族模型做贝叶斯模型平均BMA后的变量重要性检验。设置match_models TRUE可以只在结构可比的模型间做对比排除高阶交互干扰这与 JASP 中 Bayesian ANOVA 的 Effects 输出逻辑一致。新手选型指南一张表选对方法你的场景推荐方法调用方式检验单个参数是否 ≠ 0Savage-Dickey 密度比bayesfactor_parameters()检验效应是否可忽略ROPE区间零假设法bayesfactor_rope()比较 brms / rstanarm 模型桥接采样bayesfactor_models()自动比较 lm / lmer 等频率派模型BIC 近似bayesfactor_models()自动变量该不该进模型纳入 BFbayesfactor_inclusion()新手建议直接把结果交给 bayesfactor() 自动分派它会按输入类型选择合适方法无需手动判断。延伸阅读与验证概念推导与完整案例bayes_factors.Rmd官方贝叶斯因子手册含先验设定、传递性、模型平均等内容单元测试可验证各方法输出test-bayesfactor_models.R、test-bayesfactor_parameters.RBF 的数值解释等级强证据中等证据由effectsize::interpret_bf()提供小结bayestestR 用一个入口、四种引擎的设计让新手无需纠结数学细节也能在点零假设检验、ROPE 检验、精确模型比较与快速近似比较之间游刃有余。理解了每种方法的适用边界你的贝叶斯分析就会又快又稳。【免费下载链接】bayestestR:ghost: Utilities for analyzing Bayesian models and posterior distributions项目地址: https://gitcode.com/gh_mirrors/ba/bayestestR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考