安装过程
如果你已经安装了 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 的因果原因。
其他注意事项
这个项目还处于早期阶段,程序的运行时间较长。未来的一段时间内,我将会不断对其进行优化,其中主要包括:实现快速互信息计算,O(NlogN)
加快整合控制变量的九三过程
增加用户提供的图形,并找出容许集
确定变量间因果效应的捷径方法
Pearl, Judea. Causality. Cambridge University Press, (2000)