【统计】Causal Inference

原文传送门

http://www.stat.cmu.edu/~larry/=sml/Causation.pdf

过程

一、Prediction 和 causation 的区别

现实中遇到的很多问题实际上是因果问题,而不是预测。

因果问题分为两种:一种是 causal inference,比如给定两个变量 X、Y,希望找到一个衡量它们之间因果关系的参数 theta;另一种是 causal discovery,即给定一组变量,找到他们之间的因果关系。对于后面这种 causal discovery,notes 里面说它在统计上是不可能的。

数据有两种产生途径:一种是通过有意控制、随机化的实验得到的;一种是通过观测数据得到的。前一种方式能够直接做 causal inference;后一种方式需要另外知道一些先验知识,才能在上面做 causal inference。

对因果关系描述的数学语言:一种是 counterfactuals,一种是 causal graph;还有一种和 causal graph 相近的 structural equation models。

Correlation is not causation

预测问题可以写为

它表示的是,如果我们观察到 X=x,预测 Y。而因果推断关系的是

它表示我们如果把某个变量 X 设置为 x,那么 Y 会是多少。数学上表示出来就是

一个简单的例子『睡眠超过 7 小时的人』(X)『生病少』(Y),只是代表 X 和 Y 之间有关联性,并不代表如果强制一个人睡眠超过 7 小时,ta 就能够生病少。因为可能『身体好的人』容易『睡眠超过 7 小时』,同时 ta 也『生病少』;但是一个本来身体不好的人,强制 ta 睡眠多,ta 可能也生病不会少。

Notes 里面想要说明的结论是:因果关系可以从随机化的实验中得到;但是很难从观察到的数据中得到。

另外一个例子说明 correlation 和 causation 的区别

考虑数据是由一段程序生成的:

估计 correlation 时,我们会统计 Z=z & Y=y 的样本占 Y=y 样本的多大比例,它等价于

当我们研究因果关系的时候,我们是想知道,如果『设置』Y=y,会怎样引起 Z 的分布;该过程可以用如下程序模拟

在这种情况下,我们再统计 Z=z 占总体样本的比例,即

二、Counterfactuals

考虑一个 treatment X,和一个 outcome Y。我们能观察到的是一些数据 ,但是我们无法知道如果对于某一个数据点 ,如果改变 X 的值,Y 会怎么变。这件事情就叫做 counterfactual。Notes 里面给了一个图(下图),从数据上看,X 和 Y 是正相关的,但其实对于每一个 样本来说,如果增大 X,会引起 Y 的减小。这一点最开始看的时候并不好理解。举一个例子。研究航空公司票价(X)对销量(Y)的影响,显然,对于某一个客户来说,增加票价(X 变大)会降低客户购买意愿,即使得销量将达(Y 变小)。但是实际中的情况是,在节假日人们出行意愿大导致销量高(Y 大),定价也会相应变高(X 大),从而从数据上看,形成左边图的情形。

假设 X 取值 0 或者 1,Y 也取值 0 或者 1。引入变量 ,认为

这两个变量也叫做 potential outcome 或者 counterfactuals,因为如果在数据中观察到 X=0,就只能观察到 ,而此时的 就没法观察到了。比如,一个观察到的数据集长这样:

而我们关心的 。而由于这些未知的 * 的存在,使得我们没有办法估计到它们。但是,显然有

定义

为 mean treatment effect,它可以被看做是一个衡量因果关系的参数;如果它大于零,表示我们设置 X=1 会在期望上增大 Y(这是一个因果推断)。

文章下面给出了一个定理,说明不可能从数据里面估计出

其中 uniformly consistent estimator 的定义是

其实这很好理解,可以构造两个数据集,它们有不同的 分布,使得它们 不同,但是形成的数据 是一样的。这可以通过任意设置前面例子中的 * 来实现。

那么应该如何估计 呢?下面介绍两种方法:一种方法就是使用 randomization,另一种方法叫做 adjusting for confounding。

三、用随机化来估计因果关系

如果我们能够随机设定 X 的值,使得 X 和 相互独立,就能有办法估计 ,即

可以这么做最主要的原因就是当 X 和 相互独立时, ,因此, ,即

总结来说,在完全随机的情况下(X 和 相互独立),correlation=causation。

【注】Randomization 并不意味着 X 的选取要是 uniformly random(比如一半选 0,一半选 1),可以令 X 为任意分布,只要它和 相互独立即可。

四、Adjusting for Confounders

有些时候我们没法做实验,只能从可以观察的数据中来估计。比如,研究抽烟(X)和肺癌(Y)之间的因果关系,不可能故意选人去让他抽烟或者不抽烟。那么应该如何找到其中的因果关系呢?

Causal inference in observational studies is not possible without subject matter knowledge

注意到,观察到的数据中不能假设 X 和 相互独立。这里考虑一个例子,服用 VC(X)对于健康与否(Y)的关系。一个健康的人不论吃不吃 VC,理应都是健康的,但是健康的人喜欢吃 VC;一个不健康的人无论吃不吃 VC,他都不健康。因此,我们可能观察到如下数据(X=1 表示吃 VC,Y=1 表示健康)。

因此,实际情况是吃 VC 和健康之间没有因果关系,即 ;但是从数据中的估计来看,这二者之间有很强的关联,即

Use confounding variables

虽然在数据中 X 和 不相互独立,但是如果我们能够找到共同影响 X 和 Y 的因素,并把它通过某种统计方式排除的话,也可以可以做因果推断的。这里的共同因素就是 confounding variables Z,即希望找到一个 ,使得 there is no unmeasured confoundings or ignorability holds

下面的定理就是说,如果 能够观察到这样的 confounding variable,那么也能够做因果推断。

证明过程也比较好理解,因为在 Z 给定之后 X 和 是相互独立的(箭头标注的那一步)。

这个方法叫做 adjusting for confounders,同时也把这上面的 叫做 adjusted treatment effect。

Intuitive 地来说,拿航空公司票价(X)和销量(Y)的例子来说,它们可能受到节假日(Z)的影响,节假日的时候(Z=1)票价高,销量也大。要搞清楚其中的因果关系,就需要分别在是节假日(Z=1)和非节假日的时候(Z=0)统计 X、Y 的关系。

The usual bias-variance tradeoff does not apply

Notes 里面提到,在估计 的时候要特别小心,在因果推断里面 bias 的危害会更大,因此拟合的时候会尽量更『平滑』。这一块有特别的一些方法来解决该问题,叫 semiparametric inference 以及后面会讲的 matching。

对于前面这个离散的例子来说,可以对 做线性拟合,即 。我们可以看到,这种情况下,线性回归中 x 前面的系数就代表了 x 的 causal effect。

对于连续的情形类似地,有

总结:如果 1)线性模型正确;2)所有的 confounding variables 都包含到回归方程中了,那么 x 前面的系数就表示 x 的 causal effect。

五、Causal Graphs

Causal graph 是一个有向无环图(DAG),表明了各个变量之间的联合概率分布

下面举例说明,在给定一个 causal graph 之后,如何做因果推断。考虑下面一个 causal graph,目标是求

首先,可以看出该 causal graph 提供的信息为

接下来,由于考虑的是设定 X 的数值的影响,因此构建一个新图 ,移除掉所有指向 X 的边,得到新的联合概率分布

最后,该概率分布下的数值就是因果推断的结果

情形下,

和 adjusting for confounder 方法的等价性

比如还是在 情形下,从上述方法出发计算

其结果和 adjusting for confounder 方法一致。

和 randomized experiment 方法的等价性

当 X 的选取是随机时,就没有从 Z 到 X 的箭头了,因此直接在概率图上计算可以得到 ,和这里得到的一致。

Causal graph 和 probability graph 的区别

举例说明,比如下雨(Rain,R)和湿草坪(Wet Lawn,W)是不相互独立的, 即

对于下两种 DAG,它们都是合理的 probability graph,即对于任意的联合概率分布 ,都可以写成 或者 。但显然下雨是因、草坪湿是果,只有左边的图才是正确的 causal graph。

分析 ,按照应该关系,把草坪弄湿不会影响是否下雨。对左边的图推断 ,先把指向 W 的边去掉,形成如下图

因此得到 ,由此得出结论 ,即草坪弄湿不引起下雨。

六、Causal Discovery 是不可能的

下面想说明的是在不做 randomized experiment 并且也观察不到所有 confounders 时,研究两个变量之间是否有因果关系是不可能的。

考虑一个最简单的情形,就是研究『 X 是否引起 Y(X、Y 之间是否有因果关系)』;同时能够肯定地排除掉『Y 引起 X 』的情形(比如,时间先后关系,发生在后面的不可能引起发生在前面的)。考虑可能的 confounding variable U,它们之间可能的关系有如下八种。

如果我们只能观察到 X、Y 的数据,能做的是估计 。如果 说明 X、Y 之间有关联,因此可能的情况是 4-8,这里面有些情况下 X->Y,有些是没有,因此无法得出什么有效的结论;如果 ,基本上锁定是 1-3 中的情况,我们发现这三种情况中 X 都不引起 Y,于是我们能得出结论 X 和 Y 之间没有因果关系。这是错的!

情况 8 也能够引起 !比如 X->Y 的影响可能会被 U->Y 的影响抵消,这称作 unfaithfulness,这样的情形记做 。举一个粗俗的例子,比如情况 8 中的关系都是确定性的,Y|U = -U, Y|X,U = X+U,于是乎,按照这样的模型生成的 Y 全部等于零,显然估计出来的

因此,要想得出结论得出结论 X 和 Y 之间没有因果关系,还必须限定 faithfulness。

Notes 后面还讲了,总存在一个 faithful 的分布使得在样本足够多的时候,产生足够大的 type I error。

【统计】Causal Inference的更多相关文章

  1. 因果推理综述——《A Survey on Causal Inference》一文的总结和梳理

    因果推理 本文档是对<A Survey on Causal Inference>一文的总结和梳理. 论文地址 简介 关联与因果 先有的鸡,还是先有的蛋?这里研究的是因果关系,因果关系与普通 ...

  2. Targeted Learning R Packages for Causal Inference and Machine Learning(转)

    Targeted learning methods build machine-learning-based estimators of parameters defined as features ...

  3. Causal Inference

    目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring 条件 ...

  4. Chapter 6 Graphical Representation of Causal Effects

    目录 6.1 Causal diagrams 6.2 Causal diagrams and marginal independence 6.3 Causal diagrams and conditi ...

  5. Chapter 1 A Definition of Causal Effect

    目录 1.1 Individual casual effects 1.2 Average casual effects 1.5 Causation versus association Hern\(\ ...

  6. 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue

    Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...

  7. 近年Recsys论文

    2015年~2017年SIGIR,SIGKDD,ICML三大会议的Recsys论文: [转载请注明出处:https://www.cnblogs.com/shenxiaolin/p/8321722.ht ...

  8. 因果推理的春天-实用HTE(Heterogeneous Treatment Effects)论文github收藏

    一直以来机器学习希望解决的一个问题就是'what if',也就是决策指导: 如果我给用户发优惠券用户会留下来么? 如果患者服了这个药血压会降低么? 如果APP增加这个功能会增加用户的使用时长么? 如果 ...

  9. Graph machine learning 工具

    OGB: Open Graph Benchmark https://ogb.stanford.edu/ https://github.com/snap-stanford/ogb OGB is a co ...

随机推荐

  1. vue路由 routers的写法:require用与不用

    vue路由的写法有很多种,这里我只说routers的写法,一种是compcomponent后面直接写路径,另一种是用require的方式,来看代码 import Vue from 'vue' impo ...

  2. python学习之路(4)

    使用list和tuple Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >& ...

  3. SQL查询时踩得一些坑

    1.左右连接: left join:LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替. inner join: 内连接是最 ...

  4. hibernate 一对多单向注解配置(实现级联操作 )

    学生表关联学生的课程表(一对多) 学生表实体类: @Entity @Table(name = "JXD_COM_STUDENT") public class StudentMode ...

  5. leetcode 34在排序数组中查找元素的第一个和最后一个位置

    class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { ve ...

  6. PE盘制作

    我这里以大白菜为例来讲解这个一条龙的服务: 1.去大白菜官网下载一U盘制作工具: 2.准备一个4G以上的U盘(我这里建议16G比较好,这样制作完成之后,我们还可以拷贝几个常用的镜像进去,方便今后使用) ...

  7. 介绍一下 NDK?

    1.NDK 是一系列工具的集合 NDK 提供了一系列的工具,帮助开发者快速开发 C(或 C++)的动态库,并能自动将 so 和 java 应用一起打包成 apk.NDK 集成了交叉编译器,并提供了相应 ...

  8. 在 manifest 和代码中如何注册和使用 BroadcastReceiver?

    在清单文件中注册广播接收者称为静态注册,在代码中注册称为动态注册.静态注册的广播接收者只要 app 在系统中运行则一直可以接收到广播消息,动态注册的广播接收者当注册的 Activity 或者 Serv ...

  9. Selenium 2自动化测试实战14(定位一组元素)

    一.定位一组元素 WebDriver还提供了与前面所对应的8钟用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个S表示复数.定位一组元素一 ...

  10. 通过wscript运行的JS脚本,如何引入另一个JS文件

    链接: https://helloacm.com/include-external-files-in-vbscriptjscript-wsh/ 代码示例: function Include(jsFil ...