【因果推断python】14_控制混淆因素3

目录

不良控制 - 选择偏差

糟糕的 COP

关键思想


不良控制 - 选择偏差

让我们回到债务催收电子邮件的案例。 请记住,电子邮件是随机分配给客户的。 我们已经解释了什么是 信用额度 和 风险分 。 现在,让我们看看剩下的变量。 打开 是客户是否打开电子邮件的虚拟变量。 如果客户在收到电子邮件后联系收款部门协商他们的债务,支付协议 是另一个虚拟变量。 您认为以下哪个模型更合适? 第一个是带有处理变量加上 信用额度 和 风险分 的模型; 第二个添加了 打开 和 支付协议 虚拟变量。

email_1 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()
email_1.summary().tables[1]

email_2 = smf.ols('payments ~ email + credit_limit + risk_score + opened + agreement', data=data).fit()
email_2.summary().tables[1]

虽然第一个模型发现电子邮件的统计显着结果,但第二个模型没有。但也许第二个是正确的模型并且对电子邮件没有影响。毕竟,这个模型控制的因素更多,所以它应该更健壮吧?现在您可能知道情况并非如此。剩下的就是弄清楚是什么。

我们知道我们必须添加混淆变量。导致治疗和结果的变量。我们也知道添加能够很好地预测结果的控制变量是一个好主意。这是非必需的,但很值得做的事。我们也知道添加仅预测治疗的控制变量是一个坏主意。同样,这不是致命的问题,但最好避免。那么打开支付协议是怎样的控件呢?事实证明,它们都不是上述情况。

如果你仔细想想,打开支付协议肯定与电子邮件相关。毕竟,如果您没有收到电子邮件,您将无法打开它,而且我们还说过,该协议仅考虑在电子邮件发送后发生的重新谈判。但是他们不会产生电子邮件!相反,它们是由它引起的!

每当我需要了解我正在处理的变量类型时,我总是喜欢考虑它们的因果图。让我们在这里做这些:

g = gr.Digraph()

g.edge("电子邮件", "支付")
g.edge("电子邮件", "打开")
g.edge("电子邮件", "支付协议")
g.edge("打开", "支付")
g.edge("打开", "支付协议")
g.edge("支付协议", "支付")

g.edge("信用额度", "支付")
g.edge("信用额度", "打开")
g.edge("信用额度", "支付协议")
g.edge("风险分", "支付")
g.edge("风险分", "打开")
g.edge("风险分", "支付协议")

g

我们知道没有什么会导致电子邮件,因为它是随机设计的。我们知道(或者至少我们有充分的理由相信)信用额度和风险会导致付款。我们还认为电子邮件会导致付款。至于打开,我们认为它确实引起了付款。直觉上,打开催收电子邮件的人更愿意谈判和偿还债务。我们还认为,打开会导致达成协议,其原因与导致付款的原因相同。此外,我们知道“opened”是由电子邮件引起的,我们有理由相信不同风险和信用额度的人对电子邮件的打开率不同,因此信用额度和风险也会导致打开。至于协议,我们也认为是打开造成的。如果我们考虑支付响应变量,我们可以认为是漏斗的结果:

电子邮件−>打开−>协议−>付款电子邮件−>打开−>协议−>付款

我们也认为不同程度的风险和线路有不同的达成一致的倾向,所以我们将它们标记为也引起一致。至于电子邮件和协议,我们可以说有些人只是阅读了电子邮件的主题,这使他们更有可能达成协议。关键是电子邮件也可以在不通过 打开 的情况下达成一致。

我们在这张图中注意到,打开和协议都在从电子邮件到付款的因果路径中。所以,如果我们用回归来控制它们,我们会说“这是电子邮件的效果,同时保持打开支付协议 不变”。然而,两者都是电子邮件因果效应的一部分,所以我们不想固定它们。相反,我们可以争辩说电子邮件增加付款正是因为它提高了协议率。如果我们修复了这些变量,我们就会从电子邮件变量中消除一些真正的影响。

有了潜在的结果符号,我们可以说,由于随机化E[Y_0|T=0]=E[Y_0|T=1]。然而,即使是随机化,当我们控制一致性时,治疗和控制也不再具有可比性。事实上,通过一些直观的思考,我们甚至可以猜测它们的不同之处:

第一个等式明确表明,我们认为没有电子邮件和协议的人比有电子邮件和没有协议的人更好。那是因为,如果治疗有积极的效果,那些没有达成协议即使在收到电子邮件之后可能比那些也没有达成协议但也没有达成协议的人在付款方面更糟糕没有得到电子邮件的额外奖励。至于第二个等式,那些即使没有接受治疗也同意的人可能比那些同意但有电子邮件额外激励的人要好。

当您第一次阅读它时(这是给我的),这可能会非常令人困惑,但请确保您理解它。如有必要,请再次阅读。然后,可以对打开的变量进行类似的推理。尝试自己制作。

这种偏见是如此普遍,它有自己的名字。混杂是由于无法控制一个共同原因而产生的偏差选择偏差是指我们控制一个共同的结果或从原因到结果的路径之间的变量。 根据经验,始终包括混杂因素和可以很好地预测模型中 Y 的变量。始终排除仅 T、治疗和结果之间的中介或治疗和结果的共同影响的良好预测变量的变量。

选择偏差是如此普遍,以至于即使是随机化也无法解决它。更好的是,它经常被不明智的人引入,即使是在随机数据中!发现和避免选择偏差需要更多的练习而不是技巧。通常,它们出现在一些所谓的聪明想法之下,使其更难被发现。以下是我遇到的一些选择偏向的例子:

1. 在尝试估计收款策略对付款的影响时,添加用于支付全部债务的虚拟变量。
2. 在尝试估计教育对收入的影响时控制白领和蓝领工作
3. 估计利率对贷款久期影响时的转换控制
4. 在估计孩子对婚外情的影响时控制婚姻幸福
5. 将支付建模 E[Payments] 分解为一个预测是否会发生支付的二元模型和另一个预测会发生多少支付的模型:E[Payments|Payments>0]*P(Payments>0)

所有这些想法值得注意的是它们听起来多么合理。 选择偏差常常如此。 让这成为一个警告。 事实上,我自己也曾多次掉入上面的陷阱,我才知道它们有多糟糕。 特别是最后一个,值得进一步解释,因为它看起来很聪明,让很多数据科学家措手不及。 它是如此普遍以至于它有自己的名字:The Bad COP

糟糕的 COP

情况是这样的。 您有一个想要预测的连续变量,但其分布在零时被过度表示。 例如,如果您想对消费者支出进行建模,您将得到类似伽马分布的东西,但有很多零。

当数据科学家看到这一点时,他脑海中浮现的第一个想法是将建模分解为 2 个步骤。首先是参与度,即Y>0的概率。在我们的支出示例中,这将建模客户是否决定支出。第二部分为那些决定参与的人建模 Y。它是正数条件效应。在我们的案例中,这将是客户在决定要花费任何东西后花费的金额。如果我们想估计处理 T 对支出的影响,它看起来像这样:

E[Y_i|T_i]=E[Y_i|Y_i>0,T_i]P(Y_i>0|T_i)

参与模型没有任何问题P(Yi>0|Ti)。事实上,如果 T 是随机分配的,它将捕获由于处理而增加的支出概率。另外,上面的分解没有任何问题。根据总概率定律,这在数学上是正确的。

问题在于估算 COP 部分。 即使在随机分配下也会有偏差。在直观的层面上,认为某些单位只是因为没有得到处理而为零并不疯狂。处理会导致他们为零。另一方面,有些单位从不为零。治疗可能会增加他们的结果,但即使没有它,他们也不会为零。现在,关键是要了解这两种类型的单位没有可比性。与那些没有接受治疗的零相比,那些从不为零的人具有较高的 Y_{0} 。事实上,对于后者,Y_{0}=0

知道这一点,如果我们删除零,我们将在处理组和对照组上保留从不为零。但是我们将从控制中删除那些通过处理从零变为非零的。这将使处理和控制不再具有可比性,因为控制将只包含那些从不为零且具有更高 Y_{0} 的单元,而处理将包含两种类型的单位。

既然我们对问题有了直观的认识,那我们就从数学的角度来检查一下。来看一下,我们来分解一下治疗效果。在随机分配下,它等于均值差

\begin{aligned} &E[Y_i|T_i=1]-E[Y_i|T_i=0] \\ &=E[Y_i|Y_i>0,T_i=1]P(Y_i>0|T_i=1)-E[Y_i|Y_i>0,T_i=0]P(Y_i>0|T_i=0) \\ &=\underbrace{\left\{P(Y_i>0|T_i=1)-P(Y_i>0|T_i=0)\right\}}_{\textit{join effect}}*E[Y_i|Y_i>0,T_i=1] \\ &+\underbrace{\{E[Y_i|Y_i>0,T_i=1]-E[Y_i|Y_i>0,T_i=0]\}}_{COPEffect}*P(Y_i>0|T_i=0) \end{aligned}

最后一个等式来自加减 E[Y_i|Y_i>0,T_i=1]P(Y_i>0|T_i=0) 并重新排列项。这意味着平均值的差异由两部分组成:首先,它是结果 y 为正的概率差异。这被称为参与效应,因为它衡量客户参与消费的可能性的增加。其次,这是以参与为条件的结果的差异,即 COP 效应。到现在为止还挺好。这没有任何问题。这是一个数学真理。当我们尝试分别估计每个部分时,问题就来了

如果我们进一步分析 COP 效应,这将变得更加明显。\begin{aligned}E[Y_i|Y_i>0,T_i=1]-E[Y_i|Y_i>0,T_i=0]&=E[Y_{i1}|Y_{i1}>0]-E[Y_{i0}|Y_{i0}>0]\\&=\underbrace{E[Y_{i1}-Y_{i0}|Y_{i1}>0]}_{Clausal~Effect}+\underbrace{\{E[Y_{i0}|Y_{i1}>0]-E[Y_{i0}|Y_{i0}>0]\}}_{\textit{select bias}}\end{aligned}

在我们加减 E[Y_{i0}|Y_{i1}>0]Y_{0} 之后,第二个等式出现。当我们分解 COP 效应时,我们首先得到对参与者亚群的因果效应。在我们的示例中,这将是对决定花钱的人的因果影响。其次,我们得到一个偏差项,它是那些在分配到治疗时决定参与的人的 Y_{0} 差异 (和那些即使没有治疗也参与的人E[Y_{i0}|Y_{i1}>0]和那些即使没有治疗也参与的人E[Y_{i0}|Y_{i0}>0]。在我们的例子中,这种偏差可能是负的,因为那些在分配到治疗时花费的人,如果他们没有接受治疗,可能会比那些即使没有接受治疗的人花费更少 E[Y_{i0}|Y_{i1}>0]<E[Y_{i0}|Y_{i0}>0]

现在,我知道 COP 偏差一开始是非常违反直觉的,所以我认为值得通过一个直观的例子。假设我们想估计营销活动如何增加人们在我们产品上的花费。这个营销活动是随机的,所以我们不需要担心混淆。在这个例子中,我们可以将客户分成两个部分。首先,有些人只有在看到营销活动时才会购买我们的产品。让我们称这些客户为节俭的客户。除非我们给他们额外的推动,否则他们不会花钱。还有一些客户即使没有活动也会花钱。该活动使他们花费更多,但无论如何他们已经花费了。让我们称他们为富有的客户。在图中,我用浅色和虚线显示了反事实。

为了估计活动的 ATE,因为我们有随机化,我们需要做的就是比较处理过的和未处理过的。但是,假设我们使用 COP 公式,其中我们将估计分解为两个模型,一个估计P(Y_i>0|T_i) 的参与模型和估计 E[Y_{i}|Y_{i}>0]。这将从分析中删除所有未花费的人。当我们这样做时,治疗组和对照组不再具有可比性。正如我们所看到的,未经处理的客户现在只包括即使没有活动也会消费的客户群。还要注意,我们甚至可以在这里知道偏差的方向。它将是 E[Y_{i0}|Y_{i1}>0]-E[Y_{i0}|Y_{i0}>0]。这显然是负面的,因为富人比节俭的顾客花费更多。因此,一旦我们只过滤了参与者群体,我们对 ATE 的估计就会有偏差,即使最初没有由于随机化而产生的偏差。我真诚地希望这能说服您像瘟疫一样避免 COP。我看到太多数据科学家在做这种单独的估算,却没有意识到它带来的问题。

为了结束选择偏差,我们需要始终提醒自己永远不要控制介于治疗和结果之间的变量,或者是结果和治疗的共同影响。 在图形语言中,以下是不良控制的样子:

g = gr.Digraph()

g.edge("T", "X_1"), g.node("T", color="gold"), g.edge("X_1", "Y"), g.node("X_1", color="red")
g.edge("T", "X_2"), g.edge("Y", "X_2"), g.node("X_2", color="red")

g

关键思想

在本节中,我们查看了不是混杂因素的变量,以及我们是否应该将它们添加到我们的模型中以进行因果识别。 我们已经看到,即使不预测 T(不是混杂因素),也应该将作为结果 y 的良好预测变量的变量添加到模型中。 这是因为预测 Y 会降低其方差,并使我们在估计因果效应时更有可能看到具有统计意义的结果。 接下来,我们已经看到添加预测治疗而不是结果的变量是一个坏主意。 这些变量减少了治疗的可变性,使我们更难找到因果关系。 最后,我们研究了选择偏差。 当我们控制从治疗到结果的因果路径中的变量或作为治疗和结果的共同影响的变量时,就会出现偏差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/679804.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工厂模式——工厂方法模式+注册表

工厂方法模式的瑕疵 在前一篇笔记中我们介绍了工厂方法模式&#xff0c;示例的类图如下&#xff1a; 考虑一种情况&#xff1a;现在要在程序运行时&#xff0c;根据外部资源&#xff0c;动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过…

el-input实现后缀图标和clearable的兼容,调整el-input clearable与自定义图标展示位置问题

背景&#xff1a;常见的输入框存在两个图标的展示效果都是清空在前搜索或其他图标在后 常见以及最终实现效果&#xff08;清空图标在前&#xff0c;搜索图标在后&#xff09; BUG以及el-input默认效果 问题排查 通过控制台审查元素能够发现&#xff0c;默认的效果是自定义图标…

数据结构_手撕七大排序(快排,归并,堆排,希尔,选择,插入,冒泡)

✨✨所属专栏&#xff1a;数据结构✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序…

使用wheelnav.js构建酷炫的动态导航菜单

目录 前言 一、WheelNav是什么 1、项目地址 2、关于开源协议 3、相关目录介绍 二、如何使用wheelnav.js 1、新建html页面 2、设置style样式 3、创建展示元素实现动态导航 三、参数即方法介绍 1、参数列表 2、运行方法 3、实际成果 四、总结 前言 用户体验永远是一…

『 Linux 』目录与软硬链接 (万字详解)

文章目录 如何理解目录目录项 目录中的权限问题根目录Dentry缓存文件的增删改查与文件系统关系软硬链接软链接硬链接 如何理解目录 目录是一个文件存在其对应独立的Inode; $ stat dirFile: ‘dir’Size: 4096 Blocks: 8 IO Block: 4096 directory Device: f…

栈的最小值

题目链接 栈的最小值 题目描述 注意点 执行push、pop和min操作的时间复杂度必须为O(1) 解答思路 使用两个栈&#xff0c;一个栈deque存储栈中对应的元素值&#xff0c;另一个栈minDeque存储当前栈中所有元素的最小值&#xff0c;当执行push(int x)操作&#xff0c;deque直…

【乐吾乐3D可视化组态编辑器】数据接入

数据接入 本文为您介绍3D数据接入功能&#xff0c;数据接入功能分为三个步骤&#xff1a;数据订阅、数据集管理、数据绑定 编辑器地址&#xff1a;3D可视化组态 - 乐吾乐Le5le 数据订阅 乐吾乐3D组态数据管理功能由次顶部工具栏中按钮数据管理打开。 在新弹窗中选择数据订阅…

白银票据~

一. 白银票据的原理 白银票据就伪造ST票据&#xff0c; kerberoasting是破解ST票据中的服务用户hash值&#xff0c;有以下区别&#xff1a; 白银票据&#xff1a;伪造的ST使用的是机器用户的Hash值 Kerberoasting:破解的是ST的域用户的hash值二. 白银票据的利用条件 1.域名 …

基于线性回归根据饮食习惯和身体状况估计肥胖水平

目录 1. 作者介绍2&#xff0e;饮食习惯与身体状况数据集介绍3&#xff0e;实验步骤3.1 数据分析3.2 可视化处理数据3.3 导入线性回归模型进行训练3.4 预测结果3.5 完整代码3.5.1 数据分析3.5.2 模型评估 参考文献 1. 作者介绍 刘欢&#xff0c;女&#xff0c;西安工程大学电子…

MySQL经典练习50题(上)(解析版)

所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#xff0c;请访问本篇笔记 MySQL经典练习50题&#xff08;上&#xff09; 创建数据库和表 -- 建 表 -- 学 生 表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(2…

ffmpeg视频编码原理和实战-(2)视频帧的创建和编码packet压缩

源文件&#xff1a; #include <iostream> using namespace std; extern "C" { //指定函数是c语言函数&#xff0c;函数名不包含重载标注 //引用ffmpeg头文件 #include <libavcodec/avcodec.h> } //预处理指令导入库 #pragma comment(lib,"avcodec.…

【linux】swap学习

在 Linux 系统中&#xff0c;swap 是一种用于扩展系统内存的技术。当物理内存&#xff08;RAM&#xff09;不足时&#xff0c;系统会将一部分不常用的内存数据移至 swap 空间&#xff0c;从而释放物理内存供其他程序使用。Swap 空间可以是一个单独的分区&#xff08;swap 分区&…

今日份动态规划学习(二维01背包+01背包变形)

目录 P1877 [HAOI2012] 音量调节 P1877 [HAOI2012] 音量调节 题解&#xff1a;一个入门级别的01背包问题&#xff0c;首先就是为什么能看出是01背包&#xff0c;因为只有两种状态&#xff0c;要不增大音量&#xff0c;要不减小音量&#xff0c;和01背包的选与不选非常近似。但…

学习笔记——IP地址网络协议——IPV4地址配置与应用

五、IPV4地址配置与应用 1、IP地址的基础配置命令 2、案例&#xff1a;配置接口IP地址 3、Loopback接口 Loopback接口∶用户需要一个接口状态永远是Up的接口的IP地址时&#xff0c;可以选择Loopback接口的IP地址。 Loopback接口一旦被创建&#xff0c;其物理状态和链路协议状…

消防认证-饰面型防火涂料

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准&#xff0c;且通过了国家认证认可监督管理委员会审批&#xff0c;获得消防认证资质的认证机构颁发的证书&#xff0c;消防产品具有完好的防火功能&#xff0c;是住房和城乡建设领域验收的重要指标。 二、认证依据…

【Linux】进程(5):命令行参数

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;5&#xff09;&#xff1a;命令行参数&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 &#xff08;A&#xff09;为什么要有命令…

JavaWeb基础(JQuery,XML及解析)

这个阶段有点拖沓了&#xff0c;因为事情比较多&#xff0c;耽搁了一段时间&#xff0c;学习的主要内容为JQuery和XML&#xff0c;因为vue的出现&#xff0c;JQuery技术现在已经不流行了&#xff0c;但是不流行不代表我不会&#xff0c;JQuery最最最最核心的就是他的$()核心函数…

阿里云sls 采集日志安装记录

参考阿里云给的安装文档 阿里云安装Logtail组件 注意这里&#xff0c;选择地域&#xff0c;是中国地域选中国&#xff0c;海外选海外即可 按照文档继续下去 修改配置文件./alibaba-cloud-log-all/values.yaml 所有的操作完成后&#xff0c;去控制台配置 以上操作的前提是…

数据可视化---使用matplotlib绘制高级图表(2)

题目一&#xff1a;绘制人口金字塔图 编写程序。根据第8.6&#xff0c;绘制如下图的人口金字塔图。 运行代码&#xff1a; #绘制人口金字塔图 import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] SimHei plt.rcParams[…

交互式流程图组件DHTMLX Diagram v6.0 - 拥有更灵活的高度可定制功能

DHTMLX Diagram库允许用几行代码构建JavaScript流程图&#xff0c;通过自动布局和实时编辑器&#xff0c;它可以更容易地将复杂数据可视化到一个整洁的层次结构中。 DHTMLX Diagram v6.0版本发布&#xff0c;带来了众多令人兴奋的新功能和改进&#xff0c;使得这个JavaScript图…