因果3-因果图

2023-11-12

上一章我们介绍了潜在结果模型,这一章我们尝试从图的角度理解因果,大家都有图论基础,我就不多赘述图的基本概念了,在因果图里我们主要研究DAG(directed acyclic graph,有向无环图),如图1。

图1. 一个DAG例子

Bayesian Networks

贝叶斯网络,一个概率图模型,因果图就是由此内生而来,因此先介绍它,贝叶斯网络的职责是将概率和图模型结合起来,使得我们能直接利用图表示概率关系,而想用图模型来表示概率关系,需要先提出两个假设。

首先,我们从概率建模出发,如果我们相对一组数据的分布 P ( x 1 , x 2 , . . . , x n ) P(x_1,x_2,...,x_n) P(x1,x2,...,xn)建模,则根据条件概率的链式法则,我们可以将该分布分解为:

P ( x 1 , x 2 , . . . , x n ) = P ( x 1 ) ∏ i P ( x i ∣ x i − 1 , . . . , x 1 ) P(x_1,x_2,...,x_n)=P(x_1)\prod_iP(x_i|x_{i-1},...,x_1) P(x1,x2,...,xn)=P(x1)iP(xixi1,...,x1)

而如果给定图1,我们想求图1中的分布关系,我们就需要先定义图1对应的分布情况。

因此先提出一个最基础的假设:DAG中相邻的点是依赖关系

利用这个假设,可以推出 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 , x 1 ) P ( x 4 ∣ x 3 , x 2 , x 1 ) P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2|x_1)P(x_3|x_2,x_1)P(x_4|x_3,x_2,x_1) P(x1,x2,x3,x4)=P(x1)P(x2x1)P(x3x2,x1)P(x4x3,x2,x1)。但大家还记得概率论的话就会知道,这样没加一个变量,参数就会指数级上升,如图2所示。因此光是一个依赖假设还是不够,我们需要引入独立假设,减少不必要的计算量。

图2. 链式法则求解

Local Markov assumption

局部马尔科夫假设。

为了避免指数爆炸的情况,我们想如果能让每个节点只依赖于其父节点就好了,这就是局部马尔科夫假设:给定一个DAG图,点X独立于其所有的非子孙节点。

再基于该假设,我们可以进一步将图1的概率分布分解为 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 , x 1 ) P ( x 4 ∣ x 3 ) P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2|x_1)P(x_3|x_2,x_1)P(x_4|x_3) P(x1,x2,x3,x4)=P(x1)P(x2x1)P(x3x2,x1)P(x4x3),我们称之为Bayesian network factorization(贝叶斯网络分解),即给定一个概率分布P和DAG G,如果 P ( x 1 , . . . x n ) = ∏ i P ( x i ∣ p a i ) P(x_1,...x_n)=\prod_iP(x_i|pa_i) P(x1,...xn)=iP(xipai),则P可以根据G进行分解,局部马尔科夫假设是这种贝叶斯网络分解形式的充要条件。

Minimality assumption

整合Local Markov assumption和”依赖“假设,我们便得到了极小假设

  1. 给定一个DAG图,点X独立于其所有的非子孙节点。

  2. DAG中相邻的点是依赖关系

我们称关于G且满足极小假设的P是马尔科夫的。

这就是贝叶斯网络的假设,下面我们看看因果图模型。

Causal graph

因果图。

首先,定义因果关系:如果变量Y响应于变量X的变化,则X是变量Y的因。

根据这个定义,因果图的第一个假设,Causal Edges Assumption(因果边假设):在一个有向图中,每一个父亲节点都是孩子节点的因。

这样因果图就基于两个假设:

  1. Minimality assumption
  2. Causal Edges Assumption

仅仅知道这两个假设理论上就可以求出所有的因果关系,但在实践中,当因果关系复杂起来就很难分析,因此我们需要总结一些基本的block。

两个节点之间的关系

图3是只考虑两个节点时的所有关系情况,(a)表示 x 1 x_1 x1 x 2 x_2 x2没有边,其表示的概率关系为 P ( x 1 , x 2 ) = P ( x 1 ) P ( x 2 ) P(x_1, x_2)=P(x_1)P(x_2) P(x1,x2)=P(x1)P(x2) x 1 x_1 x1 x 1 x_1 x1相互独立(Local Markov assumption);(b)表示 x 1 x_1 x1 x 2 x_2 x2之间有因果关系, x 1 x_1 x1 x 2 x_2 x2的因(Causal Edges Assumption),证明如下,我们对a和b的概率图进行贝叶斯分解得到:
(a): P ( x 1 , x 2 ) = P ( x 1 ) P ( x 2 ) P(x_1, x_2)=P(x_1)P(x_2) P(x1,x2)=P(x1)P(x2)

(b): P ( x 1 , x 2 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P(x_1,x_2)=P(x_1)P(x_2|x_1) P(x1,x2)=P(x1)P(x2x1)

图3. 两节点的关系
只有两个点的关系还是很好理解的,下面让我们看看三个点的关系。

三个节点之间的关系

如图4,当考虑三个节点时共有三种情况,我们首先分析chain和fork。

图4. 三节点的关系
chains and forks

chains( 链式结构)和 forks (分叉结构)拥有相同的依赖关系(第10章会详细讨论),其依赖关系的传递如图4红线所示。

当我们同时condition on x2, chains 和 forks 还拥有相同的独立关系,x1和x3的关联被x2 blocked(阻断了),即 x 1 ⊥  ⁣ ⁣ ⁣ ⊥ x 3 ∣ x 2 x_1 {\perp \!\!\! \perp} x_3|x_2 x1x3x2,如图5所示。

图5. x2条件下的chain和fork

从概率角度分析,chain图得到:

P ( x 1 , x 2 , x 3 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) P(x_1,x_2,x_3)=P(x_1)P(x_2|x_1)P(x_3|x_2) P(x1,x2,x3)=P(x1)P(x2x1)P(x3x2)(Bayesian network factorization),

两边同时除以 P ( x 2 ) P(x_2) P(x2) P ( x 1 , x 2 , x 3 ) P ( x 2 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) P ( x 2 ) \frac{P(x_1,x_2,x_3)}{P(x_2)}=\frac{P(x_1)P(x_2|x_1)P(x_3|x_2)}{P(x_2)} P(x2)P(x1,x2,x3)=P(x2)P(x1)P(x2x1)P(x3x2)

P ( x 1 , x 3 ∣ x 2 ) = P ( x 1 ) P ( x 2 , x 1 ) P ( x 3 ∣ x 2 ) P ( x 2 ) P ( x 1 ) = P ( x 2 , x 1 ) P ( x 3 ∣ x 2 ) P ( x 2 ) = P ( x 1 ∣ x 2 ) P ( x 3 ∣ x 2 ) P(x_1,x_3|x_2)=\frac{P(x_1)P(x_2,x_1)P(x_3|x_2)}{P(x_2)P(x_1)}=\frac{P(x_2,x_1)P(x_3|x_2)}{P(x_2)}=P(x_1|x_2)P(x_3|x_2) P(x1,x3x2)=P(x2)P(x1)P(x1)P(x2,x1)P(x3x2)=P(x2)P(x2,x1)P(x3x2)=P(x1x2)P(x3x2),即 x 2 x_2 x2条件下, x 1 x_1 x1条件独立于 x 3 x_3 x3

fork图得到 P ( x 1 , x 2 , x 3 ) = P ( x 2 ) P ( x 1 ∣ x 2 ) P ( x 3 ∣ x 2 ) P(x_1,x_2,x_3)=P(x_2)P(x_1|x_2)P(x_3|x_2) P(x1,x2,x3)=P(x2)P(x1x2)P(x3x2)(Bayesian network factorization)

两边同时除以 P ( x 2 ) P(x_2) P(x2) P ( x 1 , x 2 , x 3 ) P ( x 2 ) = P ( x 2 ) P ( x 1 ∣ x 2 ) P ( x 3 ∣ x 2 ) P ( x 2 ) \frac{P(x_1,x_2,x_3)}{P(x_2)}=\frac{P(x_2)P(x_1|x_2)P(x_3|x_2)}{P(x_2)} P(x2)P(x1,x2,x3)=P(x2)P(x2)P(x1x2)P(x3x2)

P ( x 1 , x 3 ∣ x 2 ) = P ( x 1 ∣ x 2 ) P ( x 3 ∣ x 2 ) P(x_1,x_3|x_2)=P(x_1|x_2)P(x_3|x_2) P(x1,x3x2)=P(x1x2)P(x3x2),即 x 2 x_2 x2条件下, x 1 x_1 x1条件独立于 x 3 x_3 x3

collider
图6. collider的两种情况

如图6a,collider(对撞结构)与前两种结构不同,collider中x1和x3没有关联关系,x1和x3的关联被x2 blocked了,证明如下:

P ( x 1 , x 3 ) = ∑ x 2 P ( x 1 , x 2 , x 3 ) = ∑ x 2 P ( x 1 ) P ( x 3 ) P ( x 2 ∣ x 1 , x 3 ) = P ( x 1 ) P ( x 3 ) ∑ x 2 P ( x 2 ∣ x 1 , x 3 ) = P ( x 1 ) P ( x 3 ) P(x_1,x_3)=\sum_{x_2}P(x_1,x_2,x_3)=\sum_{x_2}P(x_1)P(x_3)P(x_2|x_1,x_3)=P(x_1)P(x_3)\sum_{x_2}P(x_2|x_1,x_3)=P(x_1)P(x_3) P(x1,x3)=x2P(x1,x2,x3)=x2P(x1)P(x3)P(x2x1,x3)=P(x1)P(x3)x2P(x2x1,x3)=P(x1)P(x3)

如图6b,而当在x2条件下时,x1和x3反而建立起一种虚假的关联,x1和x3的关联被x2unblocked,证明:

P ( x 1 , x 2 , x 3 ) = P ( x 1 ) P ( x 3 ) P ( x 2 ∣ x 1 , x 3 ) P(x_1,x_2,x_3)=P(x_1)P(x_3)P(x_2|x_1,x_3) P(x1,x2,x3)=P(x1)P(x3)P(x2x1,x3)(Bayesian network factorization),

两边同时除以 P ( x 2 ) P(x_2) P(x2) P ( x 1 , x 3 ∣ x 2 ) = P ( x 1 ) P ( x 3 ) P ( x 2 ∣ x 1 , x 3 ) P ( x 2 ) P(x_1,x_3|x_2)=P(x_1)P(x_3)\frac{P(x_2|x_1,x_3)}{P(x_2)} P(x1,x3x2)=P(x1)P(x3)P(x2)P(x2x1,x3),可见在x2条件下,x1与x3不满足条件独立。

最后我们还可以根据collider的性质延伸出一种情况,如图7所示,如果我们condition on x2的子孙,也会产生虚假的关联,这个关联流向为x4->x2->(x1,x3)。

图7. collider的子孙

D-separation

现在我们对上面谈到的情况对点之间的关系进行总结,将几个点之间的关系拓展到整个图。

首先我们正式定义blocked概念。对于单条路径,如果:

  1. 路径中存在chain …->W->…或者fork…<-W->…结构, W ∈ Z W\in Z WZ
  2. 路径中存在collider …->W<-…, W ∉ Z W \notin Z W/Z且W的子孙 d e ( W ) ∉ Z de(W)\notin Z de(W)/Z

则称X和Y之间的这条路径被条件集Z blocked(阻断),条件集Z可以是空集。与之相对,unblocked路径便是不满足blocked条件的路径。

然后基于blocked,我们定义d-separation,如果:

两个顶点集合X和Y之间的路径全部被Z blocked,则称X和Y被Z d-separation。 如果二者之间存在unblocked路径,则称X和Y是d-connected。

再扩展到整个图的关系,首先我们定义一些符号:如果在Z条件下,X和Y在图G中是d-separation的,则 X ⊥  ⁣ ⁣ ⁣ ⊥ G Y ∣ Z X {\perp \!\!\! \perp}_G Y|Z XGYZ;如果在Z条件下,X和Y在分布P中是条件独立的,则 X ⊥  ⁣ ⁣ ⁣ ⊥ P Y ∣ Z X {\perp \!\!\! \perp}_P Y|Z XPYZ

有了这些符号,我们定义global Markov assumption

给定P关于G是马尔科夫的(满足local Markov assumption),如果在Z条件下,X和Y在G中是 d-separation 的,则在Z条件下,X和Y在分布P中是条件独立的,即:

X ⊥  ⁣ ⁣ ⁣ ⊥ G Y ∣ Z = > X ⊥  ⁣ ⁣ ⁣ ⊥ P Y ∣ Z X {\perp \!\!\! \perp}_G Y|Z =>X {\perp \!\!\! \perp}_P Y|Z XGYZ=>XPYZ

local Markov assumption,global Markov assumption 和 Bayesian network factorization是不同角度的理解,他们三者是完全等价的,可以将这三者统称为Markov assumption,或者说P关于G是马尔科夫的。

图8. 因果关联
这一章我们详细探讨了因果图中点与点之间关系,并学习了如何分辨关系以及使其独立的方法。但在因果推理中,我们希望得到的是因果关系,而不是独立关系,这需要一些方法能够抛开非因果关联,只留下因果关联,如图8所示,只考虑蓝色线。然后计算因果效应。后面我们会进一步学习因果模型,看他是如何解决这些问题的。

Reference

Introduction to Causal Inference

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

因果3-因果图 的相关文章

  • 用Compose shape把外框做成封闭图形

    Compose shape之后为何会成这个样子 以下并板框的实际图样 只论述方法 解决办法 compose shape 时不要把整个outline框起来 用tempgroup一段一段的选择 选完后complete 特别要注意的是要选中相应的
  • mysql数据库商业版与社区版的区别

    1 商业版本组织管理与测试环节控制更严格 稳定性方面 会比社区版本更稳定 2 mysql是成熟产品 商业版与社区版之间性能方面相差不大 3 商业版不遵守GPL协议 社区版遵守GPL协议可以免费使用 4 使用商业版后可以购买相关的服务 享受7
  • DVWA全级别详细通关教程

    目录 暴力破解 Brute Force low Medium High Impossible 命令注入 Command Injection low Medium High Impossible CSRF 跨站请求伪造 low Medium

随机推荐

  • 哈工大团队开源医学智能问诊大模型

    原文 CVHub 门头沟学院AI视觉实验室御用公众号 学术 科研 就业 185篇原创内容 公众号 Title HuaTuo Tuning LLaMA Model with Chinese Medical KnowledgePDF https
  • 【MySQL】MySQL索引详解

    Mysql索引 0 写在前面 1 为什么要使用索引 2 常见的索引模型 3 索引维护 4 回表 举例子 0 写在前面 文章中包含了 1 什么是索引 2 索引的数据结构 以及各自的使用场景 3 为什么要设置主键自增 4 基于主键索引和普通索引
  • 如何修改tomcat默认端口号8080的方法

    1 背景 在默认情况下 tomcat的端口是8080 使用了两个tomcat 那么就需要修改其中的一个的端口号才能使得两个同时工作 2 方法 2 1改动一 那么 如何修改tomcat的端口号呢 首先到安装目录 或者解压目录 下找到conf文
  • 理解c++中左值与右值的一篇文章

    C 中的左值与右值 说明 这一部分内容只是帮助理解 C 11 中左值与右值的概念 在编程实践中 因为编译器优化的存在 特别是其中的返回值优化 Return Value Optimization RVO 使你不需要额外关注左值与右值的区别 像
  • Idea新建项目名后出现中括号别名

    Idea新建项目名后出现中括号别名 1 修改pom xml文件的 artifactId标签 和项目名一致 2 项目名出现中括号是因为iml文件名和项目文件名不一样 需要更改iml文件名即可
  • 开关稳压DC—DC降压电路简介

    在做数字压力开关项目时 电源输入要求是12V 24V 10 系统内需要5V和3 3V的电源 这时提供了三个方案从中选择 方案一 使用24V 5V和5V 3 3V的LDO线性稳压芯片 方案二 使用24V 12V 12V 5V 5V 3 3V种
  • SIP Using SDP with Offer/Answer Model

    根据RFC3261 13 2 1所述 SIP使用的Offer Answer模型是建立在对话环境下的 RFC中还特意对Offer Answer交互有限制 1 初始Offer必须在INVITE消息或者第一个可靠的非失败型响应中 注 当时RFC3
  • arima 公式_小白快速上手数据分析1

    ARIMA时间序列分析 作用 ARIMA时间序列分析通常用于对单列具有时间序列的数据进行预测 例如销售量预测 股票收盘价预测等等 输入 单列数据序列的数据 例如每个月销售额 每天股票的价格 通常数据量为15 50 条 输出 对未来5 15
  • python3 asyncio 爬虫_爬虫高性能asyncio+ahttpio

    async实现协程 异步编程 我们都知道 现在的服务器开发对于IO调度的优先级控制权已经不再依靠系统 都希望采用协程的方式实现高效的并发任务 如js lua等在异步协程方面都做的很强大 python在3 4版本也加入了协程的概念 并在3 5
  • centos8 免登陆 免密码 多用户命令行 启动 ,以及 界面免密

    文章目录 修改 启动 service 临时切换 运行模式 永久 切换 运行模式 由于界面 不同 os 实现 不一样 所以 方法 估计 也都 不太通用 博主 还是 建议 大家 学习 linux 使用 命令行 进行学习 centos8 界面免密
  • 没什么用的代码-批量提取主目录下所有文件夹中pdf里面的图片

    一 提前安装 pip install pymupdf 二 实现的功能 读取一个文件夹及所有子文件夹中的pdf中的图片 判断图片存储条件 存储图片 三 代码 批量提取pdf文件中的图片 author Administrator import
  • Linux基础知识:认识一下内存

    1 什么是内存泄漏 对内存来说 如果之分配内存给程序 而程序使用完不进行释放 就会造成内存泄漏 甚至耗尽系统内存 需要调用free 或unmap 来释放这些内存 2 内存紧张 系统的处理机制 2 1 回收缓存 比如使用 LRU Least
  • 链表和数组的归并排序和快速排序

    链表的归并排序和快速排序 归并排序 Definition for ListNode public class ListNode int val ListNode next ListNode int x val x next null pub
  • 【Arthas】Arthas 导出堆栈信息

    1 概述 转载 Arthas 导出堆栈信息 2 开篇 arthas提供heapdump命令导出栈信息 类似jmap命令的heap dump功能 3 原理介绍 通过通过HotSpotDiagnosticMXBean的dumpHeap来导出栈参
  • Java面试题及答案整理汇总(2023最新版)

    前言 面试前还是很有必要针对性的刷一些题 很多朋友的实战能力很强 但是理论比较薄弱 面试前不做准备是很吃亏的 这里整理了很多面试常考的一些面试题 希望能帮助到你面试前的复习并且找到一个好的工作 也节省你在网上搜索资料的时间来学习 第1 10
  • 最长字符串匹配算法(KMP算法)

    include stdafx h include
  • k-means聚类算法总结

    聚类概念 聚类分析是在对象数据中发现对象之间关系 一般来说 组内相似性越高 组间相似性越大 则聚类的效果越好 k means概念 k means是一种无监督学习 它会将相似的对象归到同一类中 k means聚类的优缺点 优点 容易实现 缺点
  • vue hover事件

    Vue 框架中的 hover 事件可以通过在 HTML 标签上使用 v on mouseover 或者简写为 mouseover 来监听 例如
  • kubernetes

    Deploy资源 spec progressDeadlineSeconds 600 等待多少秒才能确定Deployment进程是卡住的 replicas 1 revisionHistoryLimit 10 指定保留多少旧的 ReplicaS
  • 因果3-因果图

    上一章我们介绍了潜在结果模型 这一章我们尝试从图的角度理解因果 大家都有图论基础 我就不多赘述图的基本概念了 在因果图里我们主要研究DAG directed acyclic graph 有向无环图 如图1 图1 一个DAG例子 Bayesi