因果模型四:实现因果模型的python工具——pycasual

因果模型四:实现因果模型的python工具——pycasual

关于因果模型,我们在前三篇文章中简单介绍了因果模型的研究发展历程、一个因果模型的数学化求解过程和因果模型在医学和商业领域的两个应用实例。今天我们就来简单介绍一个实现因果模型的python工具:pycasual。
pycasual的开发者来自于因果研究中心(Center for Casual Discovery),是一个集合了目前因果研究领域中多种主流算法的因果模型工具包。工具不仅仅局限于python语言,同样支持R语言,java命令行模式以及可以直接拖拉拽的工具软件,更多详细的内容可以参考他们的官方网站:pitt.edu。今天这篇文章,我们就通过一个简单的官方数据案例,来展示一下pycasual如何应用。
在这里插入图片描述
首先通过pandas导入案例数据,数据中有5个变量,我们的目的就是要在这5个变量之间建立起一个因果关系网络。
在这里插入图片描述
导入pycasual工具并初始化。
在这里插入图片描述
定制化先验信息。在因果模型三这篇博客中,我们通过两个实际应用案例表明,想要最终获得一个基本符合逻辑的因果关系模型,先验信息的加入十分必要。这其实是让因果发现算法能够站在巨人的肩膀上,本质上是让算法在我们的经验逻辑框架之上,去完善因果关系的细节。pycasual这个工具包就支持先验的设定。如上图forbid这个变量就指定了TangibilityCondition不能够成为Impact的原因,也就是说最终出来的因果图不能够出现一条从TangibilityCondition指向Impact的边。require这个变量指定了Sympathy必须是TangibilityCondition的一个原因。第三行tempForbid这个变量限制了TangibilityCondition和Imaginability之间不能够互为因果,即这两个变量之间不能出现任何方向的边。下一行temporal这个变量指定了所有变量的时间顺序,类似于我们上一篇博客中提到的那个医学领域的例子,他们将所有的相关变量按照时间顺序分为了体质类、童年类、入职类、培训类等等。这里的例子中,我们把这5个变量分为了三个阶段,第一阶段变量:TangibilityCondition和Imaginability;第二阶段变量:Sympathy和AmountDonated;第三阶段变量:Impact。最后初始化先验信息prior,打印出prior可以看到我们设定的所有信息都已经满足。
在这里插入图片描述
然后,我们从search库中初始化tetrad变量,打印出所有目前他们已经封装好的算法如上图,可以看到我们在因果模型二这篇文章中详细介绍的线性非高斯无环模型(lingam)也在其中。
在这里插入图片描述
然后,选择一个算法,初始化这个因果模型,这里我们选择了fast-ges算法进行初始化。
在这里插入图片描述
最后,把样本数据喂到因果模型中,执行算法,得到结果,并把结果画出来就得到了上图中所示的因果模型图。可以看到,我们之前指定的从Sympathy到TangibilityCondition的有向边是存在的,我们限制的TangibilityCondition和Sympathy、Impact之间不存在边的联系,除了我们指定的从Sympathy到TangibilityCondition的边之外,其它变量都是按照我们设定的时间顺序进行因果定向的。
对于更多的数据和算法的实例,可以参照pycasual的github网站:bd2kccd,这里同样讲明了安装pycasual所需要的支持环境。对于各种算法和检验方法的的一个详细描述,我们可以参考这个网站:Tetrad

  • 12
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值