logo

DoWhy:因果推断框架

王哲峰 / 2023-07-15


目录

因果推断(causal inference)是基于观察数据进行反事实估计,分析 干预结果 之间的因果关系的一门科学。 虽然在因果推断领域已经有许多的框架与方法,但大部分方法缺乏稳定的实现。 DoWhy 是微软发布的一个用于进行端到端因果推断的 Python 库,其特点在于:

如上所述,DoWhy 基于因果推断的两大框架构建:图模型潜在结果模型。 具体来说,其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应; 而在估计阶段则主要基于潜在结果框架中的方法进行估计。DoWhy 的整个因果推断过程可以划分为四大步骤:

  1. 识别(identify)
    • 在假设(模型)下识别因果效应的表达式(因果估计量)
  2. 建模(model)
    • 利用假设(先验知识)对因果推断问题建模
  3. 估计(estimate)
    • 使用统计方法对表达式进行估计
  4. 反驳(refute)
    • 使用各种鲁棒性检查来验证估计的正确性

下图总结了 DoWhy 的整体流程:

img

下面将分别对这四个步骤及其所涉及的方法进行简要介绍。

DoWhy 流程详解

建模

DoWhy 会为每个问题创建一个因果图模型,以保证因果假设的明确性。 该因果图不需要是完整的,你可以只提供部分图,来表示某些变量的先验知识(即指定其类型), DoWhy 支持自动将剩余的变量视为潜在的混杂因子。

目前,DoWhy 支持如下形式的因果假设:

识别

基于构建的因果图,DoWhy 会基于所有可能的方式来识别因果效应。具体来说, 会使用基于图的准则与 do-积分 来找出可以识别因果效应的表达式,支持的识别准则有:

估计

DoWhy 支持一系列基于上述识别准则的估计方法, 此外还提供了非参数置信空间与排列测试来检验得到的估计的统计显著性。 具体支持的估计方法列表如下:

此外,DoWhy 还支持调用外部的估计方法,例如 EconMLCausalML

反驳

DoWhy 支持多种反驳方法来验证估计的正确性,具体列表如下:

DoWy 应用示例

参考