pymc-bayesian-modeling

基于PyMC的贝叶斯建模。构建分层模型、马尔可夫链蒙特卡罗(NUTS算法)、变分推断、留一法/WAIC模型比较、后验检验,实现概率编程与统计推断。

安装

热度:28

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=k-dense-ai-scientific-skills-pymc&locale=zh&source=copy

PyMC 贝叶斯建模技能 - Python 概率编程与推断工具

技能概述


使用 PyMC 进行贝叶斯建模和概率编程,支持构建层次模型、MCMC 采样(NUTS)、变分推断、模型比较和完整的诊断工作流。

适用场景

1. 小样本数据与不确定性量化


当数据量有限或需要量化预测不确定性时,贝叶斯方法比传统频率统计更具优势。适用于医学研究、社会科学、A/B 测试等领域,可以通过先验信息结合数据得到更稳健的估计。

2. 层次结构与多级数据分析


处理具有嵌套结构的数据,如学生-班级-学校、患者-医院、重复测量等场景。技能提供非中心化参数化模板,避免采样发散问题,有效估计组间和组内变异。

3. 复杂模型与模型选择


构建线性回归、逻辑回归、泊松回归、时间序列(AR 模型)等多种模型类型。通过 LOO/WAIC 信息准则进行模型比较,支持模型平均,自动完成先验预测、拟合诊断和后验预测检查全流程。

核心功能

1. 现代化贝叶斯建模工作流


基于 PyMC 5.x+ API 构建,使用命名维度(dims)替代 shape 参数提升代码可读性。完整的标准工作流:数据标准化 → 先验预测检查 → MCMC 拟合 → 诊断(R-hat、ESS、发散性)→ 后验预测检查 → 预测与推断。

2. 采样诊断与问题解决


自动化诊断脚本检查收敛性(R-hat < 1.01)、有效样本量(ESS > 400)和发散性。提供针对性解决方案:提高 target_accept 参数、使用非中心化参数化、ADVI 初始化等。支持变分推断(ADVI)用于快速探索或大规模模型。

3. 模型比较与分布指南


使用 ArviZ 进行 LOO/WAIC 模型比较,自动检查 Pareto-k 值可靠性。提供完整的分布选择指南:先验分布(HalfNormal、Exponential 用于尺度参数,Beta 用于概率,LKJCorr 用于相关矩阵)和似然函数(Normal、StudentT、Poisson、NegativeBinomial 等)。

常见问题

PyMC 适合什么类型的数据分析?


PyMC 适合需要量化不确定性、数据量有限、或具有层次结构的场景。典型应用包括贝叶斯回归(线性/逻辑/泊松)、层次模型、时间序列预测、缺失数据填补、A/B 测试等。当传统方法的置信区间不够精确,或需要结合先验知识时,贝叶斯方法更具优势。

如何解决贝叶斯采样中的发散性问题?


发散性通常意味着几何形状复杂或采样步长不合适。解决方案包括:1) 提高 target_accept 到 0.95-0.99;2) 对层次模型使用非中心化参数化;3) 标准化预测变量;4) 使用 ADVI 初始化;5) 添加更强的先验约束。诊断报告会自动检测发散数量并给出建议。

LOO 和 WAIC 模型比较怎么选择?


两者都是估计样本外预测误差的信息准则。LOO(留一交叉验证)更精确但计算成本高,WAIC 更快。优先使用 LOO,但需检查 Pareto-k 值:k < 0.7 时 LOO 可靠;k > 0.7 时考虑 WAIC 或 k 折交叉验证。Δloo < 2 表示模型相似,> 10 表示强证据支持更好的模型。