5种你必须知道的因果推论方法!
每天我们都会至少问十几次“X会影响Y吗?”。通常来说Y是我们公司重点关注的KPI(Key Performance Indicator:关键绩效指标),而X则是一些产品、特征或是新方案。
我们最开始也是最能够直观看到的地方是原始相关性。但仅凭原始相关性这一项指标并不能说明什么。因为可能存在一组同时影响X和Y的其他变量,而这些变量也被经济学家称为干扰变量(Confounding Variable)。
举个例子,在教育科技领域,我们希望把精力用在打造能帮助用户完成课程的产品和特征上。但怎么才能知道我们推出的移动app能否实现这样的效果呢?首先我们要肯定的是app和用户的课程完成度之间是有原始相关性的:客户越常用我们的app,就越有可能完成课程。但是,还有一些干扰因素也同时在发挥作用。比如说,对课程内容非常感兴趣的用户更有可能是多设备用户,而且他们更有可能支付完成课程所需的费用。那么,我们如何推断app本身和用户课程完成度之间的因果关系呢?
科技行业的下意识反应是通过随机试验(也称为A/B测试)来找出因果关系。A/B测试是一种非常有效的方法:通过随机分配一部分用户使用一种特定的体验方案X,我们可以精确地估计这种体验方案对我们关注的结果(或结果集)Y的因果影响。对于许多用户体验方案来说,无论是改变字体或颜色,还是实施新的电子邮件营销方案,或是测试用户onboarding流程的调整,A/B测试都是黄金标准。
然而,对于某些核心用户体验,实施A/B测试的成本可能很高。因为需要考虑可能出现的问题:首先,如果随机从一部分用户的移动app上撤回该app的全部功能,用户会感到混乱,从而导致app业务受到冲击;其次,对较为敏感的用户体验(例如价格)进行A/B测试,可能会损害用户的信任;此外,A/B测试可能面临一些道德困境,公司还有可能会面临公关危机。
不过不要灰心,不能频繁地对核心用户体验进行A/B测试并不意味着我们在涉及核心体验的改变时只能进行盲目决策。实际上,一系列计量经济学方法也可以用来进行因果推断,从而为产品的优化提供可参考的建议。
那么,我们该如何使用计量经济学方法进行因果推断呢?
首先回顾一下我们的问题:我们想知道输入X对结果Y的因果影响,但是可能存在一些既影响X又影响Y的干扰变量C,使得我们判断X和Y的因果关系时出现误差。而这种误差在统计学中被称为变量遗漏误差(Omitted Variable Bias)。
下面介绍五种可以帮助我们绕过干扰变量并准确估计因果关系的计量经济学方法。每种方法我们都将进行简要概述,并且会例举一个技术领域的应用,以及讲解潜在假设或常见缺陷。当然了,有的方法在某些情况下会比其他方法效果更好,本文的目的是让你获得基本的知识以便在遇到类似问题时可以选择并有效的实施最合适的方法。
方法1:控制回归法(Controlled Regression)
控制回归背后的思想是,我们可以直接控制Y对X的回归中的干扰变量C。控制回归的统计要求是,给定干扰变量C,潜在结果Y的分布应该有条件地独立于自变量X。
假设我们想要了解一个现有产品特性的影响,例如在线聊天使用对产品销量的影响。首先我们要搞清楚了解这个影响的目的:如果在线聊天的影响大到足以抵消成本,我们可能会扩展在线聊天功能来提高利润;反之,我们就不太会扩展功能,甚至可能为了节省成本而舍弃它。
我们很容易发现聊天使用量与用户级销量间存在正相关关系(也就是原始相关性),于此同时,我们也感觉到可能会有一些干扰变量。比如说,年轻人会更多地使用在线聊天且愿意为聊天付费,因为他们比其他人更适应这种聊天技术。
由于年轻人与在线聊天使用量和销售量都呈现正相关关系,所以直接对聊天使用量和销售量进行回归会夸大它们之间的因果关系。因此,我们可以通过控制年龄,再对聊天使用量和销售量进行回归以获得更加准确的因果关系估计。
使用到的R代码:
在控制回归法中,最主要的也是最常见的陷阱是我们通常不能控制我们想要控制的所有干扰变量。当干扰变量不可观测时尤其如此——要么是因为特征在理论上可以测量,但计量经济学家无法获得(例如家庭收入),要么是因为特征本身难以量化(例如,用户对产品的内在兴趣)。
通常在这种情况下,我们最好能做的就是用我们所拥有的任何数据来代替不可观测的变量。如果我们发现在回归中加入代理变量(Proxy)对主要回归变量X的系数产生了有意义的影响,那么很有可能现在做的回归还不够,我们还需要其他的工具。
在继续介绍下一个方法前,我们先简要介绍一下不良控制的概念。假设我们把用户对产品的内在兴趣作为一种干扰因素:用户越感兴趣,他/她就越关注我们的功能(包括在线聊天),而且从我们这里购买的东西也越多。我们因此想当然地认为,一些属性(例如用户打开我们的邮件的比例)可以用来作为兴趣的代理变量,而我们控制这个代理变量就好了。然而实际上,在线聊天使用量本身可能影响用户打开邮件的比例,而我们控制不当代理变量的结果就是出现变量偏差(Variable Bias)。
方法2:断点回归设计法(Regression Discontinuity Design,RDD)
断点回归设计法(RDD)是一种利用随机性进行因果推论的统计方法,在狭义上也可以看作是一个局部随机实验。断点回归设计(regression discontinuity design,RDD)之所以能做因果推断是因为控制了非观测因素。在断点回归设计法中,我们主要关注的是一个截断点。
假设我们想估计通过一门技术课程对收入的影响。由于存在一些非观测因素与通过课程和收入都相关(例如先天能力和内在动机),因此使用控制回归法是不够准确的。
在这种情况下,我们可以设置一个及格“门槛”来给用户0分类:系统判定成绩在70分或以上的用户为通过,而成绩在70分以下的用户则为不通过。假设在截断点70分附近有一个极度狭窄的区间,并且假设分数是连续的,那么分数落在这个区间内的学生其实是非常相似的(例如69分没通过和70分通过的学生),也就是说,其他的非观测因素已经被控制住了。所以,既然没有干扰因素的影响,如果我们有足够的用户在70分附近的这个狭窄的范围内,我们可以使用这个截断点来估计通过课程对收入的因果影响。
使用到的R代码:
RDD可能以图形形式显示如下:
接下来我们介绍有效性的概念:
如果结果对于所研究的部分人群是无偏的,则称为在内部有效。
如果结果对整体人群是无偏的,则称为在外部有效。
在随机实验(一般是A/B测试)中,内部和外部有效性的基础假设很简单。如果正确执行了随机操作并且平衡了实验组和对照组,则结果在内部有效。此外,如果对实验组的影响代表对总体人口的影响,那么结果在外部也是有效的。
在非实验环境中,基本假设则取决于所使用的方法。断点回归设计法的内部有效性基于两个重要的假设:
假设1:截断点周围的分配控制不精确。个人无法控制他们刚好在临界值的上方(或是下方)。
假设2:没有干扰变量的不连续性。截止点位于正上方(相对于正下方)不应影响其他特征。
方法3:倍差法(Difference-in-Difference,DID)
倍差法也可以理解为差异中的差异法,最简单的方式是比较实验组和对照组之间在实验前后结果的差异。该方法的基本思路是将测试样本分为两组,一组是实验对象即“实验组”,一组是非实验对象即“对照组”。根据实验组和对照组在实验实施前后的相关信息,可以计算实验组在实验实施前后某个指标(如收入)的变化量(收入增长量),同时计算对照组在实验实施前后同一指标的变化量。然后计算上述两个变化量的差值(即所谓的“倍差值”)。
这里举一个定价示例。假设我们想知道应该提高价格还是降低价格来增加收入。如果价格弹性大于1,降低价格会增加购买量,从而增加收入;如果弹性小于1,提高价格将增加收入。那么 我们如何知道我们的价格弹性呢?
最直接的方法是对价格进行A/B测试。但我们是否愿意进行定价A/B测试,则取决于我们平台的性质、开发阶段以及用户的敏感性。如果价格变化对我们的用户来说很容易察觉,例如他们会在网站上或在现实生活中相互交流,那么价格测试很可能会给我们带来风险。因为定价上的差异会降低用户的信任度,在某些情况下甚至会导致负面的公关风暴。
这时候,A/B测试的一个不错的替代方法是将准实验设计与因果推理方法相结合,我们选择使用倍差法。
我们选择更改某些地理区域(例如州或国家/地区)的价格,而不更改其他地理区域的价格。这些价格没有变化的地理区域为实验提供了自然的“控制”。通过比较“控制”地区和非“控制”地区更改价格前后的收入变化,我们可以较为准确地估计出价格变化对收入的因果影响。
方法4:固定效应回归法(Fixed Effects Regression)
固定效应回归法是控制回归法的一种特殊类型,通过在模型中纳入个体效应固定项以及时间效应固定项控制非观测因素。要怎么理解呢?假设我们要研究基本药物政策对基本药物供应保障的影响。回归模型可以这样设计:
Y为“药品在不同医疗机构的配送率”,X为因变量“是否为基本药物”。当然,我们知道,其他因素例如药品本身属性(是否容易保存、生产规模等)以及医疗机构本身属性(机构级别、地理位置等)都会对药品的配送率Y产生影响,但是在面板数据(Panel Data)中,我们可以把这些因素“打包”全部放在个体固定效应项中,这些因素只随个体改变而不随时间改变。
同理,宏观政策环境也会对药品配送产生影响,而这类因素只随时间改变而不随个体改变,所以也可以“打包”放进时间固定效应项中。在固定效应模型的估计中,这些固定因素都是可以抵消的(原理类似于一阶差分),所以因变量X“是否为基本药物”系数的参数估计就是政策的直接效果,也就是因果效应了。
方法5:工具变量法(Instrumental Variable,IV)
工具变量(IV)方法可能是我们最喜欢的因果推断方法。还记得我们一开始的问题吗?我们想估计X对Y的因果影响,但存在既与X又与Y相关的干扰变量C,使得我们判断X和Y的因果关系时出现误差。要想解决这个问题,我们想做的就是找一个过滤器,把X中和C相关的部分过滤掉,只剩下正交的部分。工具变量法就是实现这样一个过滤作用的方法。
引入一个新的工具变量Z,它具有以下性质:
强第一阶段:Z的变化与 X的变化相关
排除限制的第二阶段:除了Z会间接的通过影响 X来影响 Y之外,Z的变化不会导致 Y的变化
关系如下图所示:
这里使用的R代码:
我们拿常见的两阶段最小二乘法举例(Two Stage Least Square, TSLS),第一步是先用工具变量Z作自变量,对X进行回归,然后得出一系列参数。这一步的意义在于,把X分成两个部分,有Z决定的部分以及和Z无关的部分,而这两者之间是正交的关系。
因为工具变量的定义就是和X有关而和C无关,所以把X拆开的这两部分:由Z决定的部分自然也和C无关;而另外那部分,就是我们要过滤掉的渣子——X中蕴含着的和C相关的东西。
扔掉渣子很简单,就是用拟合值X̄ = γZ来代替真的X,这样相当于把X清洗了一遍,所有和我们无法控制的因素相关的都被工具变量过滤掉了,代入原来的方程式中回归,就能得到更准的估计了。
既然工具变量这么好用,我们怎么找到合适的工具变量呢?
其实工具变量在技术领域随处都是。只要你的公司有浓厚的A/B测试氛围,你肯定能很快找到许多工具变量。
假设我们想知道把app推荐给朋友对用户流失率的因果影响。我们发现推荐朋友的用户不太可能流失,并假设让用户推荐更多的朋友将进一步减少他们的流失率。(我们这么假设的原因之一是心理学家所说的“宜家效应”(Ikea Effect):用户更关心自己投入时间的产品。)
当然,只看流失率与推荐朋友之间的相关性并不会给我们带来因果效应。推荐朋友的用户实际上更忠于我们的产品。
但是,如果我们公司拥有强大的推荐计划,则可能会进行大量的A/B测试(例如电子邮件测试,现场横幅广告测试,激励测试),从而促使用户推荐更多内容给朋友。而工具变量法的重点是找到结果成功(用户推荐比率提升)的A/B测试,并使用该实验的分类工具作为工具变量。
还记得前面说的工具变量Z需要满足的两个阶段吗?只要满足这两个阶段,工具变量法的结果就在内部有效:
只要我们选择的是成功的A/B测试结果(成功提升推荐率)的工具变量,我们就有可能处于良好的第一阶段。(这很重要,因为如果Z不是X的强预测因子,则第二阶段的估计值将有偏差)。我们可以通过上面分享的R代码看F值来检查我们第一阶段的强度。根据我们的经验来看,第一阶段的F值应该至少是11。
那么第二阶段呢?重点在于工具变量Z只能通过影响X来影响结果Y。假设我们使用A/B电子邮件测试来促进用户推荐。如果对照组没有收到电子邮件,这个假设就不成立了:因为收到电子邮件本身就能提高用户的留存率。但是如果对照组收到了一封类似的邮件,只是没有提到任何推荐朋友的信息,那么排除限制就可能继续存在。
如果你需要经常回答X对Y是否有因果影响的问题,希望接受系统的归因模型的企业级培训,并通过一段实操经历来补充你的已有履历、向你心仪的企业证明你的实力,欢迎报名MarTechApe的宝藏项目《营销组合建模企业级实战训练营》(Marketing Mix Modeling Bootcamp)!
▼点击图片,了解项目详情
训练营的学员收获了:
真正意义上的“用数据和模型解决营销中最重要的问题”的经历。
熟练掌握SQL、R、Tableau等时下最流行的数据处理语言,并用这些技能解决实际问题。
大大提高Media/Advertising Industry的商业意识,熟悉不同媒介渠道的广告活动对不同商业指标的不同回报率(ROI)与有效性(Effectiveness),学会用“营销效果”的视角看待营销活动,理解各大公司市场营销部门、消费者洞察部门的痛点。
跳出学校作业的框架,上手真正商业情境中、实际工作中的实战案例。让校园与实际工作无缝衔接。将学到的Analytics思维方式泛化到其他应用场景,面对Case Study建立系统性解决思路。
提升项目演示Presentation技能,学会如何从原始数据中挖掘具有意义的故事。为客户解决实际问题,提高Business KPI。
完成项目后,辅导老师将帮助你利用这一个惊艳的项目背景打造最引人注目的简历;所有学员获得内推机会,优秀学员获得一对一面试辅导。
从我们的项目中,毕业了将近200名学生,斩获各大公司数据岗位offer:
目前,《营销组合建模企业级训练营》正在火热进行第10期的招募!每一期仅有20个席位!
添加下方小助手微信,了解项目详情!
小助手(微信ID:yvonne91_wsn)