什么时候用
先判断任务是否合适
- 需要从观测数据中学变量间的因果或依赖关系图
- 已有因果图,想知道干预某个变量后另一个变量的分布变化
- 需要批量生成符合已知联合分布的合成数据做方法验证
- 需要对比两个因果图结构与真实图的差距
先准备什么
材料越清楚,结果越有用
- •观测数据表格(pandas DataFrame),列名与变量名一致
- •若手写因果图,需准备边列表和条件概率表的参数估计
- •若做因果推断,需明确哪些变量是干预变量、哪些是结果变量
它会怎样推进
从材料到可以检查的结果
- 01
建立图结构
定义变量节点和边方向(手写或从数据中学),构建有向无环图
- 02
填充条件概率
从数据估计或手写每个节点的条件概率分布(离散/线性高斯/函数式)
- 03
校验模型
检查概率表归一化、父子节点对应关系,确保模型可推
- 04
查询推理
在给定证据下查询后验概率,或用do操作计算干预分布
- 05
生成合成数据
从模型前向采样,生成用于方法验证或敏感性分析的模拟数据
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。跑通以后,再把自己的真实材料放进去。
第一次直接复制
帮我安装这个库:https://github.com/pgmpy/pgmpy 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
结果出来后
先看这些检查点
- 模型校验是否通过(概率归一、父子对应)
- 学到的图结构是否与领域知识大致吻合
- 干预查询结果与观测条件概率是否有实质性差异
- 合成数据的联合分布是否符合预期的条件依赖模式
常见误区
这些判断仍由你负责
- 把观测相关当因果效应——只有do操作才能区分两者
- 把学到的图结构直接当真因果图——PC等方法学到的是等价类,部分方向不可识别
- 用离散独立性检验处理连续数据——需匹配数据类型选chi_square或fisher_z
- check_model通过就认为图方向正确——它只校验图和CPD的对应关系
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
- 01
参数学习
给定一个已确定图结构的贝叶斯网络(结构可手写或由结构学习得到)和一份观测数据,估计每个节点的条件概率分布(CPD)参数,使模型能用于推理、预测和模拟。支持离散贝叶斯网络的 MLE/Bayesian/EM 估计与线性高斯贝叶斯网络的 MLE 估计,并能处理含隐变量或缺失数据的情况。
- 02
因果推断与do演算
给定一个因果图(DAG,方向编码因果假设)和已填充的 CPD,计算干预分布 P(Y | do(X)):即"如果人为设定 X 而非仅观测 X,Y 的分布会怎样"。这区别于条件概率 P(Y | X),需要先用后门/前门准则识别调整集,再做 do 操作(移除干预变量的入边)和调整后的概率推断,让研究者能区分观测相关与因果效应。
- 03
数据模拟
给定一个已填充 CPD 的贝叶斯网络,生成符合该网络联合分布的合成数据,并支持在生成时施加干预(do)、证据(evidence)、软证据(virtualevidence)、软干预(virtualintervention)、缺失机制(missingprob)和部分固定样本(partialsamples),让研究者能生成可复现的合成数据用于结构学习/参数学习的方法验证、敏感性分析和因果干预模拟。
- 04
概率推理
给定一个已填充 CPD 的贝叶斯网络,计算后验条件概率 P(query | evidence)、最大后验(MAP)、边际分布或极大边际,让研究者能在给定观测证据下做概率查询。支持精确推理(变量消元、联结树置信传播)与近似推理(采样近似、Gibbs 采样)。
| 能力 | 主要输入 | 主要输出 | 人工检查 |
|---|---|---|---|
参数学习源码已核对 |
|
|
|
因果推断与do演算源码已核对 |
|
|
|
数据模拟源码已核对 |
|
|
|
概率推理源码已核对 |
|
|
|
结构学习源码已核对 |
|
|
|
结构验证与模型检测源码已核对 |
|
|
|
处理机制
- 01
核心处理链
用图结构编码变量间的概率依赖和因果假设,做条件推断、因果发现与合成数据生成。
已核对范围
- 读取 pgmpy/estimators/MLE.py(MaximumLikelihoodEstimator getparameters/estimatecpd 签名)
- 读取 pgmpy/estimators/BayesianEstimator.py(BayesianEstimator getparameters/estimatecpd 签名)
- 读取 pgmpy/estimators/EM.py(ExpectationMaximization)
- 读取 pgmpy/parameterestimator/(discretebayesian/discretemle/discreteem/lineargaussianmle)
- 读取 DiscreteBayesianNetwork.py:592 fit / :653 fitupdate 签名
- 读取 LinearGaussianBayesianNetwork.py:880 fit 签名
- 读取 README Parameter Learning 特性与 example notebooks 主题
- 读取 pgmpy/inference/CausalInference.py(CausalInference 类、query(query, do, evidence, adjustmentset, inferencealgo) 签名)
仍待核对
- 未运行本机参数学习 smoke
- 未验证 BayesianEstimator 各先验类型(BDeu/Dirichlet/K2)的数值差异
- 未覆盖 SEMEstimator/IVEstimator 的 SEM 参数估计内部机制(见待复核卡)
- 未运行本机因果查询 smoke
- 未验证 minimal/all/minimalvariance 三种调整集变体的数值差异
- 未覆盖 DoubleMLRegressor/NaiveAdjustmentRegressor/NaiveIVRegressor(因果效应估计的预测回归器,见待复核卡)
- 未运行本机模拟 smoke
- 未验证 missingprob 的 MAR/MNAR 缺失机制实现细节
原仓库
pgmpy/pgmpy读取版本
c7fa866a8b50a7eb781124e12411708dd86f2c25许可
MIT
最近核对
内容 2026-07-10
Stars 2026-07-11
相关文章
科研之我见
AI 可以参与科研的哪些环节?一张 11 环节工作流全景图
从选题、文献、理论、数据到投稿,逐环节判断 AI 可以主导、需要人工校验和必须由研究者把关的工作。
查看内容具备相关能力的其他库
相关课程
把单项工具放进完整研究设计流程
课程一从研究问题、文献判断、理论假设和方法骨架继续推进,帮助你建立可以复用的研究设计档案。