这个工具提供了哪些能力
点开任一能力,看清怎么用
每个能力展开后是三件事:它会给你什么、你需要准备什么、哪些必须由你把关。
常见场景:有观察数据、有因果假设但无法做随机实验;需要从数据中估计某个处理对结果的因果效应大小;想检验因果结论是否对未观测混淆稳健;需要定位异常的根因或量化各因素对分布变化的贡献
它给每个变量都建一个“数据是怎么生成的”模型,因此能做常规效应估计之外的事:出了异常找原因、拆解数据分布为什么变了、模拟“如果当初怎样会怎样”,还能检验模型本身靠不靠谱。
它会给你什么
- 异常归因结果:每个变量对这次异常贡献了多少。
- 干预或反事实假设下的模拟数据。
- 平均因果效应的数值。
你需要准备
- 一张因果关系图,说明哪些变量影响哪些变量。
- 你的数据表。
- 在因果图基础上建出的机制模型,图里每个变量都对应一条生成规律。
由你把关
- 因果图的结构是否符合真实的因果机制,这是最关键的人工关口,由你核对。
- 自动选的机制类型适不适合你的数据,连续数据和分类数据的适用模型不同,由你核对。
- 模型自检的结果是否可以接受,由你核对。
对算出来的因果效应做压力测试:故意加进随机干扰、换上假的处理、只用部分数据等方法再算一遍,看结论会不会轻易变样,让你能检查“这个因果结论站不站得住”。
它会给你什么
- 每次检验一份结果,包括扰动后的新效应值和检验是否通过。
- 一次跑多种方法时,返回一组检验结果。
你需要准备
- 之前识别出的因果问题表达式。
- 之前算出的效应估计值。
- 这次用哪种压力测试方法。
由你把关
- 扰动后的新效应值偏多少才算“敏感”,这需要领域判断,由你核对。
- 压力测试的方法够不够多,只过一种不能下结论,由你核对。
- 用假处理检验时效应是否真的趋近于零,不趋近说明估计有结构性问题,由你核对。
把你的因果假设白纸黑字写下来:哪个变量是处理、哪个是结果、谁影响谁,连同数据一起编码成一张因果图,后面所有分析都基于同一套假设,有据可查。
它会给你什么
- 一个完整的因果模型,包含因果图和每个变量的角色定位。
- 一段模型摘要文字。
- 对没观测到或没用到变量的提醒,需要你判断是否正常。
你需要准备
- 一张数据表,包含处理变量、结果变量和其他相关变量。
- 处理变量的名字,可以是一个或多个。
- 结果变量的名字,可以是一个或多个。
由你把关
- 因果图是否反映了真实的因果机制,这是软件替代不了的关键判断,由你核对。
- 没观测到变量的提醒是否正常,是变量名写错了还是真的没观测,由你核对。
- 数据里没被用上的变量要不要纳入因果图,由你决定。
在确定的因果问题下,选一种统计方法从数据里算出因果效应到底有多大,并给出误差范围和显著性,还能按不同人群分别给出效应大小。
它会给你什么
- 效应估计结果:数值大小、置信区间和显著性检验。
你需要准备
- 上一步识别出的因果问题表达式。
- 你想用的估计方法,比如线性回归、倾向性得分匹配、工具变量法等。
- 对照组和处理组各自的取值,用来定义“从什么变到什么”。
由你把关
- 选的估计方法是否匹配你的数据和研究问题,结果是连续还是分类、数据来自观察还是实验,由你决定。
- 重抽样次数够不够,次数太少误差范围不可靠,由你核对。
- 对效应大小和分组效应的解读是否正确,由你核对。
在画好的因果图上,判断你要的因果效应能不能从现有数据里算出来:能算的话,它会给出计算公式和需要控制的变量名单;不能算的话,会明确告诉你卡在哪里。
它会给你什么
- 识别结果:能不能识别、计算公式和需要控制的变量集合。
- 识别结果会挂到你的因果模型上,供下一步使用。
你需要准备
- 已建好的因果图。
- 处理变量和结果变量。
- 数据里实际观测到了哪些变量。
由你把关
- 因果图的假设是否正确,这是最关键的人工关口,由你核对。
- 识别不了时要不要带着“可能存在未观测混淆”的警示继续往下走,由你决定。
- 要控制的变量名单是否符合领域常识,尤其不能把处理本身造成的结果也控制了,由你核对。
它回答一个问题:得有多强的“漏网干扰因素”才能推翻你的因果结论?算出的数值可以和你已观测到的干扰因素比大小,从而判断结论对遗漏因素到底有多稳。
它会给你什么
- 一个 E 值:未观测的干扰因素至少要有多强才能推翻结论。
- 各个已观测干扰因素的基准 E 值,用来做对比。
- 误差范围随干扰强度变化的曲线图。
你需要准备
- 之前算出的效应估计结果。
- 上一步识别出的因果问题表达式。
- 你的数据表。
由你把关
- 结果度量用比值还是差值方式,由你决定。
- E 值到多少才算足够稳健,需要结合领域判断,由你核对。
- 有没有同时做压力测试,两种检查应该互为补充,由你核对。
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。开始前想清楚要用哪个能力、把对应材料备在手边——每张能力卡展开后有具体清单。
第一次直接复制
帮我安装这个库:https://github.com/py-why/dowhy 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
别这样用
这些判断,仍然由你负责
- 跳过因果图建模直接用变量声明跑识别和估计
- 把单一反驳方法通过等同于因果结论成立
- 忽略econml等可选依赖未安装时的降级行为
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
处理机制
- 01
核心处理链
端到端因果推断库,用四步流水线统一因果建模、识别、估计与反驳
已核对范围
- 静态读取 gcm/init.py 完整 API 导出清单
- 静态读取 gcm/whatif.py interventionalsamples/counterfactualsamples/averagecausaleffect
- 静态读取 gcm/anomaly.py attributeanomalies、gcm/distributionchange.py、gcm/influence.py、gcm/featurerelevance.py 模块位置
- 静态读取 gcm/fittingsampling.py fit/drawsamples、gcm/auto.py assigncausalmechanisms、gcm/modelevaluation.py evaluatecausalmodel、gcm/validation.py refutecausalstructure
- 静态读取 causalmodel.py refuteestimate、causalrefuter.py CausalRefuter 基类与 CausalRefutation 对象
- 静态读取 causalrefuters/ 目录反驳器模块清单与 refuteestimate.py ALLREFUTERS 列表
- 静态读取 testsignificance、choosevariables、SignificanceTestType 枚举
- 静态读取 randomseed、njobs、showprogressbar 参数
仍待核对
- 未运行 GCM 流程,未验证归因字典和采样输出
- 未验证 auto.assigncausalmechanisms 的机制选择规则
- 未验证 distributionchange 和 arrowstrength 的数值输出
- 未运行反驳检验,未验证 neweffect 和 pvalue 实际输出
- 未验证各反驳器对估计值的实际扰动幅度
- 未运行 CausalModel 构造,未验证图解析(DOT/GML/DiGraph)实际行为
- 未验证 missingnodesasconfounders 对结果的改变
- 未运行 estimateeffect,未验证任一估计器实际数值输出
原仓库
py-why/dowhy读取版本
a53f80c7501aa81fbe7db261e1774246a8053699许可
MIT
最近核对
内容 2026-07-10
Stars 2026-07-11
相关文章
具备相关能力的其他库
相关课程
把单项工具放进完整研究设计流程
课程一从研究问题、文献判断、理论假设和方法骨架继续推进,帮助你建立可以复用的研究设计档案。