因果推理的do算子

2023-10-26

在因果推理中,我们一般都需要首先构建一个因果图,这是后续进行因果分析的基础。但是在现阶段笔者的知识看来,因果图的构建其实是一个比较主观的过程,但偏偏又是后续分析的基础,所以略感头疼。

在构建因果图前,我们有必要明白:什么是因果关系。通俗来说,当事件X发生时,必然导致事件Y的发生,我们就会认为:在这个过程中,事件X是因,事件Y是果。

但遗憾的是,现实世界中我们所面对的因果过程很难存在“必然导致”这么绝对的过程。我们更经常面对的情况是: 当事件X发生时,会以很大的概率p会导致事件Y的发生。这种情况下,我们之前关于因果关系的定义就可以认为是p = 100%情况下的特例。或者也可以说:事件X会影响事件Y的概率分布。

需要注意的是:后一个对因果关系的定义是比之前的定义在现实中有更强的实用价值的。以”死诸葛吓退活司马“的故事为例。看似诸葛亮利用了“司马懿惧怕活的诸葛亮”的因,推导出“魏军看到活的诸葛亮会撤退”的果是一个p=100%的因果推理过程,但在实际上存在“司马懿突发恶疾、猪突猛进”或”司马懿突然去世,新魏军将领猪突猛进“的小概率事件,因此这个因果推理过程并不是p=100%的,只是一个符合后一个因果推理过程的大概率过程。在概率论中,我们不能否认小概率事件发生的可能,这让几乎每一个现实中的事件都不是p=100%。
猪突猛进

这个概率学的定义基本上已经是我们对于因果关系的解释了,我们也可以换一个更概念化的方式理解:因果关系表示了由事件X推导出事件Y(X->Y)推理过程的鲁棒性。当该鲁棒性越高(也就是定义中的p越大)时,表明X与Y的因果关系更强。

接下来解释在因果推理中常用的do算子。

在上面的定义中,我们对于因果推理构成的讨论仅涉及两个事件X和Y的讨论。但真实的因果关系永远不会像定义那么简单,就像你学会了微积分的定义,真实的微积分题目永远可以让你感受到数学的险恶。在真实的因果关系中,我们常常避不开另一个东西:混杂因子confounder。 对混杂因子更具体的讨论可以见参考文献1,这里只是作为笔者的理解,所以思维跳跃维度可能比较大。

这里我们以探究感染新冠肺炎和死亡之间的因果关系为例(参考了文献1)。以感染新冠肺炎作为事件X,死亡作为事件Y,年龄作为事件Z,构建起的因果图如下:

在这里插入图片描述
我们这样理解这幅图:年龄Z会对感染新冠肺炎X的概率分布有影响(年龄大的人更容易感染);年龄Z对死亡的概率分布Y有影响(客观来说,年龄大的人更容易死亡);感染新馆肺炎X对死亡的概率分布Y有影响(新馆肺炎病毒:我就是危险又致命的反派角色!)。

一个很容易想到的探究X与Y之间因果关系的想法是:我们看一下在感染新冠肺炎的患者中的死亡率,用该死亡率代表两者之间的因果关系。 这是一个很直接的思路,其实在笔者看来也是反映因果关系的一种方式。如果对严谨度要求不高的情况下,笔者认为用这个概率来代表两者的因果关系是没有问题的。下面来说,为什么这种思路不太严谨。

假设我们现在得到的,新冠肺炎的患者中死亡率为5%。从概率学的角度,我们可以认为:大约每20个人中,就有一个患者死亡。但是在现实中呢?对于一个年轻人来说,他的死亡率可能是1%或者更低;对于一个老年人来说,他的死亡率可能是10%或更高。而这个社会中有70%的人是年轻人,30%的人是老年人,以这个社会为整理考虑新冠疫情的影响的话,它带给人们的死亡率应该是1% * 70% + 10% * 30% = 3.7%, 而实际得到的5%的死亡率其实是由于在患者中,老年人占比太大造成的

这里就产生一个矛盾啦:为什么我们会得到两个死亡率?到底哪个是正确的? 这里,笔者需要强调:两个死亡率都是正确的,只是看待问题的角度不一样。 5%的死亡率代表的角度是:从已有的新冠肺炎患者中随机抽取一个,他死亡的概率。 3.7%的死亡率代表的角度是:从这个社会所有的人中随机抽取一个,令他感染新冠肺炎,他死亡的概率。 这个差别用概率论的表示如下:

计算过程

这里我不做太多的其他解释,只强调一点:我们所定义的因果关系,是与第二个死亡率更吻合的。 因为这个死亡率是以”这个社会“作为背景进行考虑的,所以它更宏观,也更鲁棒。在一般的因果推理中,我们希望得到的因果关系(感染新冠肺炎X->死亡Y之间的因果关系)也是第二个死亡率象征的因果关系。

假设我们有感染新冠肺炎患者的数据,为了得到X->Y的因果关系,我们就需要进行类似上面进行的第二个死亡率计算的操作。如果一个事件Z,同时影响所研究的因果关系过程的因X和果Y,就将其称为混杂因子。 如果我们希望得到”纯净的“、更鲁棒的X->Y的因果关系,就需要去除混杂因子Z的影响。在研究X->的因果推理过程中,将混杂因子Z进行分类讨论,这就是do算子的实质,这也被称为后门调整。 或许叫后门调整的原因,就是因为混杂因子Z藏在事件X的后面,导致直接计算得到的结果(第一个死亡率)不准确,就像在背后捅了你一刀?

do算子的计算过程其实就是上面使用RCT之后的公式,这里面有三个其他的相关公式,就直接展示在下面了。

在这里插入图片描述

最后叠个buff趴:本文仅代表笔者自己的理解,不一定正确,可以作为科普看,但是真要研究的话建议找更专业的文章hhhhhhh

参考文献:
https://zhuanlan.zhihu.com/p/111306353
https://www.andrewheiss.com/blog/2020/02/25/closing-backdoors-dags/
https://wenku.baidu.com/view/baaf3dfc53e2524de518964bcf84b9d528ea2c89.html

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

因果推理的do算子 的相关文章

随机推荐

  • unity给localRotation赋值

    transform localPosition和transform localScale都是直接赋值三元数 给旋转赋值需要用 方法一 xxx transform localEulerAngles new Vector3 0 0f 0 0f
  • JS面试中常见的算法题

    1 验证一个数是否是素数 1 如果这个数是 2 或 3 一定是素数 2 如果是偶数 一定不是素数 3 如果这个数不能被3至它的平方根中的任一数整除 num必定是素数 而且除数可以每次递增 排除偶数 function isPrime num
  • 优秀logo设计解析_优秀Logo设计!具象表现手法!

    文 王新华 具象标志以客观物象的自然形态为造型基础 经过提炼 概括 抓住客观对象的精神内涵 强化其主要特征 忽略与舍弃次要因素 达到直观 感性的视觉效果 人物形 人是万物之灵 是社会的主宰 以人物为题材是标志设计的重要表现内容 人体的各种动
  • C++中memset函数详解

    memset函数定义于
  • Django中分页功能的实现及封装与调用(超详细)

    在django开发过程中 实现前端页面的分页是一个基本且常用的功能 下面就同小编一起完成分页功能的实现及封装与调用 一 在pycharm中创建django项目 小编默认看客朋友们都会创建 故不在赘述 若不熟悉 猛戳这里 二 在mysql中创
  • React事件处理、事件的特点、事件语法、React事件处理函数里的this、事件对象、阻止浏览器的默认行为

    React事件的特点 1 React 事件绑定属性的命名采用驼峰式写法 而不是小写 如 onClick 2 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数 而不是一个字符串 DOM 元素的写法 函数不写小圆括号 3 在 Reac
  • CSAPP malloclab实验

    书本配套实验地址 构造一个分配器是一件富有挑战的任务 设计空间很大 有多种块格式 空闲链表格式 以及放置 分割和合并策略可供选择 另一个挑战就是我们经常被迫在类型系统的安全和熟悉的限定之外编程 依赖于容易出错的指针强制类型转换和指针运算 这
  • FreeRTOS记录(五、FreeRTOS任务通知)

    在前面几篇文章我们已经对FreeRTOS任务API和任务调度原理进行了相对深入的分析 这篇文章主要针对任务与任务之间的交互 信息传递相关的API组件进行分析 目录 一 任务通知基本介绍 1 FreeRTOS 任务通知函数 2 CMSIS封装
  • Android调用打印机

    打印机其实和Android没有什么大的关系 和linux内核关联才是比较强的 最终的结果是要在Android实现驱动打印机 但是一般调试一个新的驱动的流程是这样的 1 先在linux PC上进行测试 2 在标准嵌入式linux上进行调试 3
  • MFC原理与方法(二)

    MFC原理与方法 二 一 前言 二 类向导的使用 三 MFC消息管理 1 MFC消息映射机制 2 消息处理 四 结语 一 前言 时间过得好快啊 又是一个星期过去了 我又回来啦 每个星期保持写博客的习惯 及时消化上课的知识 不仅仅对我有帮助和
  • MySQL进阶篇之存储过程(procedure)

    04 视图 存储过程 触发器 4 1 视图 view 4 2 存储过程 procedure 4 2 1 介绍 1 介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合 调用存储过程可以简化应用开发人员的很多工作 减少数据在数据
  • 异常处理的返回

    异常处理的返回 异常可以分为四类 中断 interrupt 陷阱 trap 故障 fault 和终止 abort 这几种异常处理之后又有不同的返回方式 总的来讲 类别 原因 异步 同步 返回行为 中断 来自I O设备的信号 异步 总是返回到
  • 面试3个月拿下多家大厂的P7技术专家Offer,来看我面试复盘!

    一 概述 之前写过两篇文章 工作10年我面试过上百个程序员 真想对他们说 在公司里写代码天天摸鱼偷懒 出去面试又该怎么写简历 通过这两篇文章 我们给大家聊了聊国内中大型互联网公司 在Java面试时一些高频的技术问题 本文我们通过一篇真实的一
  • 【状态估计】用于非标量系统估计的最优卡尔曼滤波(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 考虑了最优卡尔曼滤波的例子 假设一些非标量
  • vscode运行命令是报错:标记“&&”不是此版本中的有效语句分隔符。

    问题截图 问题原因 这个问题的原因和你运行的什么脚本语言没关系 即与 py c cpp无关 和你在那个终端运行的有关 解决方法 第一步 点击向下箭头 并选择 选择默认配置文件 第二步 选择 Windows PowerShell 第三步 关闭
  • 数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 2021羊城杯CTF wp

    2021羊城杯 部分 wp Web web1 only 4 web2 EasyCurl web3 Checkin Go web4 Cross The Side Re Pwn BabyRop Crypto Miss bigrsa Misc M
  • FISCO-BCOS如何把WEBASE部署通过的合约方法由api在前端调用

    参考文章 fisco bcos官方文档第五章部分 通过POST请求 数据格式要为json 调用hello合约中的get方法 按要求填写需要的信息
  • 决策树的学习

    决策树 从名字上看 就知道其模型的结构为树结构 决策树既可以用于分类 也可以用于回归之中 在分类问题中 我们可以认为其是if then规则的集合 也可以认为是定义在特征空间与类空间上的条件概率分布 在学习过程中 利用训练数据和损失函数最小化
  • 因果推理的do算子

    在因果推理中 我们一般都需要首先构建一个因果图 这是后续进行因果分析的基础 但是在现阶段笔者的知识看来 因果图的构建其实是一个比较主观的过程 但偏偏又是后续分析的基础 所以略感头疼 在构建因果图前 我们有必要明白 什么是因果关系 通俗来说