PyMC 贝叶斯建模
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/pymc。
技能介绍
要解决什么问题
当你需要在 Python 里做不确定性量化——而不只是点估计和 p 值——贝叶斯建模往往是更合适的框架:先验、似然、后验预测可以放在同一套叙述里,分层数据、缺失值和测量误差也能按参数显式处理。PyMC 6.x 把这套流程落在概率编程 API 上(PyTensor 计算图、默认 NUTS),但「模型怎么设、先验是否合理、链有没有收敛、拟合是否在糊弄数据」仍需要成体系的工作流,而不是堆几个 pm.sample() 调用。
技能如何组织内容
本技能围绕标准贝叶斯工作流展开,从数据准备(标准化连续预测变量、命名 coords/dims、缺失作为参数)到模型构建(弱信息先验、尺度用 HalfNormal/Exponential、预测用 pm.Data()),并强调拟合前先验预测检查。
拟合与诊断部分给出可操作的默认:draws/tune/chains、target_accept、以及 log_likelihood=True 以便 LOO/WAIC;诊断侧关注 R-hat、ESS、发散与迹线混合。验证环节覆盖后验预测检查与模型比较(Δloo、Pareto-k),并附带线性回归、逻辑回归、非中心参数化分层模型、泊松/负二项、时间序列等模式说明。
技能还 bundled references(分布选型、采样与变分推断)、scripts(model_diagnostics.py、model_comparison.py)和 assets 模板,便于按同一套检查清单迭代模型,而不是每次从零搜文档。
适用边界与注意点
- 面向 PyMC 6.x 现代 API(Python 3.12+、PyTensor 3);旧版语法与已弃用参数(如不当使用
nuts_sampler_kwargs)需对照文档迁移。 - 变分推理(ADVI 等)适合探索或初始化,不确定性可能被低估;正式推断仍以 MCMC 为主。
- 分层模型若出现发散,应优先非中心参数化并提高
target_accept,而不是无限加采样量。 - 与 ArviZ 联用做可视化与诊断;大模型可考虑小批量 ADVI 或数据子采样,但需自行评估近似误差。
使用场景
- 嵌套或分组观测(班级内学生、站点内重复测量)要在 PyMC 里建分层模型,并用非中心参数化排查 NUTS 发散
- 线性或逻辑回归上线前要做先验预测检查,确认弱信息先验生成的 y 在业务合理范围内再开跑 MCMC
- 拟合完成后 R-hat 偏高或 ESS 不足,需要按技能清单调 `target_accept`、加长链并读迹线/秩图判断混合
- 多个候选模型(不同层级或似然)要用 LOO/WAIC 比较 Δloo,并据 Pareto-k 决定是否改用 WAIC 或交叉验证
适合人员
- 用 Python 做实验或观测分析、需要在报告里给出后验区间而非仅点估计的数据分析师
- 论文或报告涉及多级数据结构(区域—个体、批次—产品),要按贝叶斯流程写清先验与模型检验的研究人员
- 从频率派工具迁到 PyMC 6,希望按「先验预测→拟合→诊断→后验预测」 checklist 落地项目的 ML/统计工程师
- 处理计数或二分类结局(转化、故障次数),要在 Poisson、负二项与逻辑回归似然间选型并做模型比较的人