Causality 数据集因果分析工具开源项目

我要开发同款
匿名用户2017年02月03日
40阅读
开发技术Python
所属分类程序开发、常用工具包
授权协议未知

作品详情

Causality是一款数据集因果分析工具。

安装

如果有pip,只需运行:

pip install causality

 

因果推论

因果关系模块将包含用于推断因果DAG的各种算法。

要在数据集上运行图形搜索,可以使用类似的算法(以IC*为例): 

import numpyimport pandas as pdfrom causality.inference.search import ICfrom causality.inference.independence_tests import RobustRegressionTest# generate some toy data:SIZE = 2000x1 = numpy.random.normal(size=SIZE)x2 = x1 + numpy.random.normal(size=SIZE)x3 = x1 + numpy.random.normal(size=SIZE)x4 = x2 + x3 + numpy.random.normal(size=SIZE)x5 = x4 + numpy.random.normal(size=SIZE)# load the data into a dataframe:X = pd.DataFrame({'x1' : x1, 'x2' : x2, 'x3' : x3, 'x4' : x4, 'x5' : x5})# define the variable types: 'c' is 'continuous'.  The variables defined here# are the ones the search is performed over  -- NOT all the variables defined# in the data frame.variable_types = {'x1' : 'c', 'x2' : 'c', 'x3' : 'c', 'x4' : 'c', 'x5' : 'c'}# run the searchic_algorithm = IC(RobustRegressionTest, X, variable_types)graph = ic_algorithm.search()

现在,我们推断图存储在图中。在此图中,每个变量是一个节点(从DataFrame列命名),每个edge表示不能通过对搜索指定的变量进行调整来消除的节点之间的统计相关性。如果edge可以用可用数据定向,则arrowhead在'arrows'中指示。如果edge也满足用于真实因果的局部标准,则marked=True。如果我们从搜索的结果打印edges,我们可以看到哪些edges是定向的,并且满足真正因果的局部标准:

>>> graph.edges(data=True)[('x2', 'x1', {'arrows': [], 'marked': False}),  ('x2', 'x4', {'arrows': ['x4'], 'marked': False}),  ('x3', 'x1', {'arrows': [], 'marked': False}),  ('x3', 'x4', {'arrows': ['x4'], 'marked': False}),  ('x4', 'x5', {'arrows': ['x5'], 'marked': True})]

我们可以看到从'x2'到'x4','x3'到'x4'和'x4'到'x5'的edges都朝向每对的第二个。此外,我们看到从'x4'到'x5'的edge满足真正因果关系的局部标准。这与Pearl(2000)中figure2.3(d)中给出的结构相符。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论