用途
本技能是面向贝叶斯统计推断的分析技能,利用概率编程框架(PyMC、Stan、NumPyro)进行参数估计、模型比较和决策支持。
触发条件:当用户请求「跑贝叶斯回归」「用 MCMC 估计」「求后验分布」等操作时启用。
主要能力
- 参数后验分布估计
- 分层贝叶斯模型(多水平/混合效应)
- 贝叶斯回归与贝叶斯分类
- MCMC 诊断(Rhat、ESS、轨迹图)
- 模型比较(WAIC、LOO-CV、贝叶斯因子)
- 贝叶斯优化(高斯过程)
- 后验预测检验
使用方式
贝叶斯分析流程
阶段 1:模型指定
- 选择似然函数(Normal、Poisson、Binomial 等)
- 设定先验分布(推荐弱信息先验)
- 定义参数空间
阶段 2:先验预测检验
- 先验预测模拟
- 先验分布合理性验证
- 与领域知识的一致性确认
阶段 3:MCMC 采样
- 运行 NUTS(No-U-Turn Sampler)
- 设定链数与样本数(chains≥4、draws≥2000)
- 收敛诊断(Rhat < 1.01、ESS > 400)
阶段 4:后验分析
- 后验分布可视化(森林图、轨迹图、配对图)
- 95% HDI(最高密度区间)
- 后验预测检验(PPC)
阶段 5:模型比较
- 计算 WAIC / LOO-CV
- 计算贝叶斯因子
- 模型加权平均(Stacking)
阶段 6:报告
- 估计值汇总表
- 后验分布图
- 结果解读与报告生成
代码示例概要
技能文档提供了以下可运行示例:
-
PyMC 贝叶斯线性回归:包含数据生成、先验设定(alpha/beta 为 Normal,sigma 为 HalfNormal)、NUTS 采样(draws=2000、tune=1000、chains=4、target_accept=0.95)、收敛诊断(az.summary)和轨迹图绘制。
-
分层贝叶斯模型(随机效应):以多学校学生成绩预测为例,定义超先验(mu_alpha、sigma_alpha、mu_beta、sigma_beta),组水平参数采用部分池化,并使用森林图进行组间参数比较。
-
后验预测检验(PPC):通过 sample_posterior_predictive 生成后验预测样本,绘制密度叠加图、统计量比较(均值)、残差检验图。
-
模型比较(WAIC / LOO-CV):对多个模型分别计算 WAIC 和 PSIS-LOO,输出对比表格,并用 az.compare 和 az.plot_compare 进行可视化比较。
-
贝叶斯优化(高斯过程):使用 Matérn 核的 GaussianProcessRegressor,以 Expected Improvement(EI)为采集函数,通过 L-BFGS-B 优化寻找下一个采样点,迭代执行。
-
Stan 建模:通过 CmdStanPy 接口编译并拟合 Stan 模型,示例为分层正态模型的 Stan 代码,采样完成后转换为 ArviZ 的 InferenceData 格式。
适用场景
- 需要量化不确定性的参数估计
- 数据存在层次/嵌套结构(如多中心研究、重复测量)
- 需要融入先验知识的建模
- 需要模型比较与选择的场景
- 昂贵目标函数的优化问题
- 需要完整后验分布而非点估计的决策分析
限制
- 资料未提供具体的性能基准、数据规模上限或计算资源要求
- 资料未提供收费、价格或授权模式信息
- 资料未提供与其他贝叶斯工具的详细对比说明
- 部分代码示例中使用了已弃用的 API(如 az.from_pymc3),实际使用时可能需要调整
- 最佳实践建议:使用弱信息先验、必须进行收敛诊断、必须做后验预测检验、优先使用 LOO-CV 进行模型比较、分层模型考虑使用非中心化参数化、固定 random_seed 保证可复现性、进行先验敏感性分析
输出文件
- results/bayesian_summary.json:后验分布汇总(JSON),采样完成时生成
- figures/bayesian_trace.png:轨迹图,MCMC 完成时生成
- figures/bayesian_ppc.png:后验预测检验图,PPC 完成时生成
- figures/bayesian_model_comparison.png:模型比较图,比较完成时生成