如果你已经安装了 pip
,那么你只需运行以下代码即可
causality.inference
模块中将会包含多种推断变量之间因果关系的算法。但是到2016年1月23日为止,我只实现了 Pearl(2000) 提出的 IC* 算法。
此时,我们已将变量的关系图储存到 graph
中,在这个图中每个变量表示一个节点,每条边则表示给定搜索路径中其他变量的情况下,相邻节点之间的统计相关性。如果两个变量之间存在统计相关性,那么箭头方向处的变量将被存在 arrow
中。如果两个变量之间同时满足真正的因果关系,此时 marked=True
。如果我们打印出模型的拟合结果,我们可以很明显的看出变量之间存在的关系:
从上述结果中我们可以看出, x2
与 x4
, x3
与 x4
, x4
与 x5
之间存在统计相关性,此外我们还可以看出 x4
到 x5
之间存在真正的因果关系。这个结果与 Pearl(2000) 文章中的图 2.3(d) 相吻合。
causality.nonparametric
模块是一个利用观测数据集对因果分布进行非参数化估计的工具。你可以提供一个变量的容许集用来控制,它用来度量给定原因时一个效应的因果反应分布,或给定原因时这个效应的期望值。
我最近已经添加了调整功能,你可以通过调整有向图中变量X的父节点来估计一组变量Y和一组变量X之间的因果效应。
此时,你可以利用以下代码来观察调整结果:
如果我们没有对变量 x1
进行调整,由于 x2,x1,x3
之间存在一个搜索路径,那么我们将会错误地认为 x2
是 x3
的因果原因。
这个项目还处于早期阶段,程序的运行时间较长。未来的一段时间内,我将会不断对其进行优化,其中主要包括:
原文链接: https://github.com/akelleh/causality
原文作者:Adam Kelleher
译者:Fibears