原标题:因果推理入门指南-必须的7个步骤
社会科学的研究,不管是经济学,社会学,还是心理学都离不开数据的支持,虽说数据科学只是工具,但对工具的误解会导致人们问出错误的问题。如今我们知道了从数据中,可以通过系统化的算法,定量的去描述因果关系,由此发端,社会学科的研究问题通常都是因果的问题, 因果推断已经成为了社会科学的基本语言。A primer on causality in data science 这篇综述介绍了如何做因果推理的路线图,这里对其进行简述,并通过DoWhy 这个python包的例子,来具体展示该怎么做因果推理。
科学研究中的很多问题的本质是因果效应估计问题. 哈佛生统教授 Hernan(2018) 把数据科学解决的任务分成三类:描述,预测,因果推断。前两类任务是纯数据驱动的统计推断, 而因果推动与他们有很大的不同。 因果推断通常需要的不仅仅是观测数据, 还需要变量的先验知识。解决因果推断有一个一般性的步骤如下:
1 specify the scientic question, 具体的来说我们第一步是需要确定和清晰的定义该研究涉及的变量, 以及研究的目标.
2 build an accurate causal model of our knowledge 简单的来说就是用因果图表示相关变量之间的因果关系. 一般情况下是有向无环图.
3 define the target causal quantity, 在因果模型给定的情况下, 那么有关因果效应的问题就可以清晰的定义了, 一般是包含 Pearl提出的do-operation 的表达式来表示那些变化将改变潜在的果
4 link the observed data to the causal model, 前面的步骤都没有涉及到数据是如何产生的, 这个步骤就是有关模型如何产生数据的一些假定, 例如数据是否独立同分布, observed outcome 与 potential outcome之间分布是否具有一致性.
5 assess identifiablility 简单的来说是用后门准则回答我们的 causal quantity 是否可以在足够数据时估算出,复杂的情况是用三条 do-calculus 公式把 causal quantity 中的 do operation 去掉.
6 estimate the resulting statistical parameter, 当确定 causal quantity 可估计以后(也就是说 identifable),我们可以用各种机器学习和统计方法来估计该统计量.
7 approximately interpret the results 是因果推断这一大类任务的最后步骤, 具体来说就是说明在先验因果知识, 数据产生的等假定下, 我们关注的 causal quantity 是什么样子
下面是具体的例子,使用的是微软推出的DoWhy这个python 包,该包基于用户给定的因果图,在对应数据集上,寻找所有可能的方法来识别所需的因果效应。研究的问题是就业培训(treatment)对收入(res78)产生了多大影响?
1. specify the scientic question,
我们和问题是根据数据回答:"就业培训(treatment)对收入(res78)产生了多大影响?" 涉及的变量包括教育程度,婚姻状况等将近10个变量.
2. build an accurate causal model of our knowledge, 我们假定如下变量 "nodegr+black+hisp+age+educ+married" + "treatment" 共同影响了收入水平,并将其写入到因果模型中。
将因果图可视化
该图展示了是否是黑人,年龄,性别,教育,婚姻等多因素都影响是否愿意接受就业培训,而所有这些因素以及是否接受过就业培训决定着一个人的收入。
3. define the target causal quantity,
就业培训的影响可以用 causal quantity 来表示, 其中也就是参加培训的潜在收入减去不参加培训的潜在收入
4. link the observed data to the causal model,
样本是独立同分布, 也就是说假定个体之间是相互独立的, 也就是个人的培训效果不会影响其他人的培训效果.
5. assess identifiablility,
这一步是让模型判断是否能够做出因果推断,注意不是所有的因果推断都是可以解的
6 estimate the resulting statistical parameter,
我们使用最常用的inverseprobabilityweighting(IPW )方法来估计 causal quantity,代码也很简单,得出的结果如下所示:
7. approximately interpret the results.从上面的结果可以看出, 就业培训能让参加培训的人收入平均增加 $1623.
参考资料:
https://arxiv.org/pdf/1809.02408.pdf
https://causalinference.gitlab.io/dowhy/readme.html
责任编辑: