[Python]因果检验工具

安装过程

如果你已经安装了 pip,那么你只需运行以下代码即可

因果推理

causality.inference 模块中将会包含多种推断变量之间因果关系的算法。但是到2016年1月23日为止,我只实现了 Pearl(2000) 提出的 IC* 算法。

此时,我们已将变量的关系图储存到 graph 中,在这个图中每个变量表示一个节点,每条边则表示给定搜索路径中其他变量的情况下,相邻节点之间的统计相关性。如果两个变量之间存在统计相关性,那么箭头方向处的变量将被存在 arrow 中。如果两个变量之间同时满足真正的因果关系,此时 marked=True。如果我们打印出模型的拟合结果,我们可以很明显的看出变量之间存在的关系:

从上述结果中我们可以看出,x2x4x3x4x4x5之间存在统计相关性,此外我们还可以看出 x4x5 之间存在真正的因果关系。这个结果与 Pearl(2000) 文章中的图 2.3(d) 相吻合。

非参数效应估计

causality.nonparametric 模块是一个利用观测数据集对因果分布进行非参数化估计的工具。你可以提供一个变量的容许集用来控制,它用来度量给定原因时一个效应的因果反应分布,或给定原因时这个效应的期望值。
我最近已经添加了调整功能,你可以通过调整有向图中变量X的父节点来估计一组变量Y和一组变量X之间的因果效应。

此时,你可以利用以下代码来观察调整结果:

如果我们没有对变量 x1 进行调整,由于 x2,x1,x3 之间存在一个搜索路径,那么我们将会错误地认为 x2x3 的因果原因。

其他注意事项

这个项目还处于早期阶段,程序的运行时间较长。未来的一段时间内,我将会不断对其进行优化,其中主要包括:

  • 实现快速互信息计算,O(NlogN)
  • 加快整合控制变量的九三过程
  • 增加用户提供的图形,并找出容许集
  • 确定变量间因果效应的捷径方法
    Pearl, Judea. Causality. Cambridge University Press, (2000)

原文链接:https://github.com/akelleh/causality
原文作者:Adam Kelleher

译者:Fibears

 

由 Editor 于 2017 年 01 月 05 日 发布在 数据科学 栏目