【Python实战因果推断】66_图因果模型1

目录

Graphical Causal Models

Thinking About Causality

Visualizing Causal Relationships


Graphical Causal Models

你了解了因果推断可以分解为两个主要问题:识别和估计。在本系列,你将更深入地探讨识别部分,这可能是最具挑战性的一步。本系列主要是理论性的,你将在不一定要用数据来估计其参数的情况下,操作图形模型。不要因此而感到困惑。识别是因果推断的核心,因此学习其理论基础对于解决现实生活中的因果问题至关重要。在本系列,你将:

  • 对图形模型有一个初步的认识,你将学习什么是因果关系的图形模型,关联在图中是如何流动的,以及如何使用现成的软件来查询图形。

  • 通过图形模型的视角重新审视识别的概念。

  • 学习两种非常常见的导致识别困难的偏倚源,它们的因果图结构,以及你可以采取的应对措施。

Thinking About Causality

你有没有注意到YouTube视频里的厨师们在描述食物时有多么出色?“将酱汁煮至天鹅绒般的浓稠。”如果你刚开始学习烹饪,你可能完全不知道这句话是什么意思。你就不能直接告诉我应该把东西放在炉子上多久吗!在因果关系中,情况也是一样的。假设你走进一家酒吧,听到人们在讨论因果关系(这可能是一家经济学系附近的酒吧),你会听到他们谈论收入的混淆作用如何使得识别移民对该地区失业率影响变得困难,所以他们不得不使用工具变量。到现在,你可能还不明白他们在说什么。没关系,你对因果推断的语言才刚刚触及表面。你已经学到了一些关于反事实结果和偏倚的知识,足以理解因果推断试图解决的关键问题。足以理解最强大的因果推断工具——随机对照试验背后的运作机制。但这个工具并不总是可用,或者根本无法工作(正如你很快将在“选择偏倚”中看到的那样)。当你遇到更具挑战性的因果推断问题时,你也需要更广泛地理解因果推断的语言,以便你能恰当地理解你面对的问题,以及如何处理这些问题。

一种表达清晰的语言能让你思考得更清楚。本文旨在扩展你的因果推断词汇。你可以将图形模型视为因果关系的一种基本语言。它们是结构化因果推断问题和明确(甚至是可视化)识别假设的强大方法。图形模型将使你能够向他人和自己透明地展示你的想法。

作为进入奇妙的图形世界的一个起点,让我们回顾之前关于估计电子邮件对转化率影响的例子。在这个例子中,处理因素T是交叉销售邮件,而结果Y是客户是否转化为新产品的用户:

 import pandas as pd
 import numpy as np
 data = pd.read_csv("./data/cross_sell_email.csv")
 data

我们还从上文中回忆到,在这个问题中,T是随机分配的。因此,可以说处理因素独立于潜在结果Y0和Y1,即T与(Y0,Y1)独立,这使得关联等于因果: E[Y1 - Y0] = E[Y|T=1] - E[Y|T=0]

重要的是,仅凭查看数据,绝对没有办法判断出独立性假设是否成立。你只能说它成立,因为你有关于处理分配机制的信息。也就是说,你知道邮件是随机发送的。

Visualizing Causal Relationships

你可以将这些知识编码在一个图中,该图捕捉了你对于什么引起什么变化的信念。在这个简单的例子中,假设你相信交叉销售邮件会导致转化。你也相信你测量到的其他变量,如年龄和性别,也会导致转化。此外,你还可以将未测量的变量添加到图中。我们通常用字母U来表示它们,因为它们是未观测的。可能有很多未观测的变量会导致转化(如顾客收入、社会背景),以及年龄(产品对不同人口统计群体的吸引力,公司运营所在的城市)。但由于你没有测量它们,你可以将所有这些打包进一个U节点,代表所有那些未测量的变量。最后,你可以添加一个指向T的随机化节点,代表你了解到的事实,即交叉销售邮件是随机发送的。

为了将你的这些信念添加到一个图中并真正地看到它们,你可以使用graphviz这样的工具:

图中的每个节点都是一个随机变量。你可以使用箭头,或者说边,来展示一个变量是否引起另一个变量的变化。在这个图形模型中,你表明电子邮件导致转化,未观测变量U影响年龄、转化和性别等,以此类推。这种图形模型的语言能帮助你澄清关于因果关系的思考,因为它明确地表达了你对世界运作方式的看法。如果你在想这有多么不切实际——毕竟,在今天的数据应用中,你不可能把成百上千个变量都编码进去——请放心,实际上你并不需要这样做。在实践中,你可以极大地简化事情,通过合并节点,同时保持你试图传达的基本因果故事。例如,你可以将前面的图中可观察的变量合并到一个X节点中。由于它们都被U所影响并且都导致转化,因此即使将它们合并,你的因果故事仍然完整。

此外,当你表示已经被随机化或干预过的变量时,你可以简单地移除所有指向它的箭头:

这里值得注意的是,或许有向无环图(DAG)中最关键的信息实际上是图中缺失的部分:从一个变量到另一个变量的缺失边意味着假设这两个变量之间没有直接的因果联系。例如,在前面的图中,你假设没有任何因素同时影响处理因素和结果。

就像学习任何一门新语言一样,你可能现在看这些内容时觉得并非所有东西都能立刻完全理解。这是正常的。我可以直接给你一堆规则和最佳实践,教你如何在图中表示变量间的因果关系。但这可能是最低效的学习方式。相反,我的计划是仅仅向你展示大量实例。随着时间的推移,你会逐渐掌握它。现在,我只希望你记住,图形是理解为什么关联不等于因果的一个非常强大的工具。

  • 35
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
贝叶斯因果推断是一种使用贝叶斯网络(Bayesian Network)进行因果关系推断的方法。贝叶斯网络是一种概率模型,用于表示变量之间的依赖关系和因果关系。在贝叶斯网络中,节点表示变量,边表示变量之间的依赖关系。通过观察节点的状态,可以推断其他节点的状态。 在Python中,可以使用PyMC3库来构建贝叶斯网络模型。《Python贝叶斯分析》这本书从实际应用和编写程序的角度解释了贝叶斯统计的关键概念,并介绍了如何使用PyMC3来构建概率模型。这本书不要求读者具备生物学方面的基础知识,但需要读者具备使用Python编写程序的经验\[1\]。 贝叶斯因果推断的一个挑战是数据的结构与贝叶斯网络的独立性不一致。贝叶斯网络的推断算法旨在从概率中推断因果关系,与任何实验无关。因此,贝叶斯网络的推断是基于概率观察数据进行的。此外,贝叶斯网络的推断是从特定前提中得出一般性结论,与理论假设的表述无关。这是因为贝叶斯网络的推断是演绎的,而不是从因果假设的表述中得出的\[3\]。 因此,Python中的贝叶斯因果推断可以通过构建贝叶斯网络模型,并使用PyMC3库进行推断。这种方法可以帮助我们从观察数据中推断因果关系,并进行因果推断分析。 #### 引用[.reference_title] - *1* [Python贝叶斯分析 PDF 完整原版](https://blog.csdn.net/weixin_39850143/article/details/110996376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [数学推导+纯Python实现机器学习算法12:贝叶斯网络](https://blog.csdn.net/weixin_37737254/article/details/102920363)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [贝叶斯因果网络_因果关系和贝叶斯网络](https://blog.csdn.net/weixin_26752765/article/details/108132740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水木流年追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值