【Python实战因果推断】20_线性回归的不合理效果10

目录

Neutral Controls

Noise Inducing Control

Feature Selection: A Bias-Variance Trade-Off


Neutral Controls

现在,您可能已经对回归如何调整混杂变量有了一定的了解。如果您想知道干预 T 对 Y 的影响,同时调整混杂变量 X,您所要做的就是在模型中加入 X。或者,为了得到完全相同的结果,您可以根据 X 预测 T,得到残差,并将其作为干预的去势版本。在 X 固定不变的情况下,将 Y 与这些残差进行回归,就能得到 T 与 Y 的关系。

但 X 中应包含哪些变量呢?同样,并不是因为增加变量就能调整变量,所以你想在回归模型中包含所有变量。你不想包含共同效应(对撞机)或中介变量,因为这些变量会引起选择偏差。但在回归中,您还应该了解更多类型的控制因素。这些控制项乍看起来似乎无害,但实际上却相当有害。这些控制被称为中性控制,因为它们不会影响回归估计的偏差。但它们会对方差产生严重影响。正如您所看到的,在回归中包含某些变量时,需要权衡偏差和方差。例如,请考虑下面的 DAG:

您是否应该在模型中加入 credit_score2?如果不包括它,就会得到一直以来看到的相同结果。这个结果是无偏的,因为您是根据信用评分 1_buckets 进行调整的。但是,尽管您不需要这样做,请看看如果您将 credit_score2 计算在内会发生什么。将下面的结果与您之前得到的不包含 credit_score2 的结果进行比较。有什么变化?

 formula = "default~credit_limit+C(credit_score1_buckets)+credit_score2"model = smf.ols(formula, data=risk_data_rnd).fit()model.summary().tables[1]

首先,关于信贷限额的参数估计值变高了一些。但更重要的是,标准误差减小了。这是因为 credit_score2 对结果 Y 有很好的预测作用,它将有助于线性回归的去噪步骤。在 FWL 的最后一步,由于包含了 credit_score2,Y 的方差将减小,对 T 进行回归将得到更精确的结果。

这是线性回归的一个非常有趣的特性。它表明,线性回归不仅可以用来调整混杂因素,还可以用来减少噪音。例如,如果您的数据来自适当随机化的 A/B 测试,您就不需要担心偏差问题。但您仍然可以使用回归作为降噪工具。只需包含对结果有高度预测性的变量(并且不会引起选择偏差)即可。

Noise Inducing Control

就像控制可以减少噪音一样,它们也可以增加噪音。例如,再次考虑条件随机实验的情况。但这次,您感兴趣的是信用额度对消费的影响,而不是对风险的影响。和上一个例子一样,信用额度是随机分配的,给定的是 credit_score1。但这次,我们假设credit_score1 不是混杂因素。它是干预的原因,但不是结果的原因。这个数据生成过程的因果图如下所示:

这意味着您不需要对credit_score1 进行调整,就能得到信用额度对消费的因果效应。单变量回归模型就可以了。在这里,我保留了平方根函数,以考虑干预反应函数的凹性:

 spend_data_rnd = pd.read_csv("data/spend_data_rnd.csv")model = smf.ols("spend ~ np.sqrt(credit_limit)",data=spend_data_rnd).fit()model.summary().tables[1]

 但是,如果你确实包括了credit_score1_buckets,会发生什么呢?

 model = smf.ols("spend~np.sqrt(credit_limit)+C(credit_score1_buckets)",data=spend_data_rnd).fit()model.summary().tables[1]

您可以看到,它增加了标准误差,扩大了因果参数的置信区间。这是因为,OLS 喜欢干预方差大的情况。但是如果控制了一个可以解释干预的协变量,就会有效地降低干预的方差。

Feature Selection: A Bias-Variance Trade-Off

在现实中,很难出现协变量导致干预而不导致结果的情况。最有可能出现的情况是,有很多混杂因素同时导致 T 和 Y,只是程度不同而已。在图  中,X1 是 T 的强致因,但 Y 的弱致因;X3 是 Y 的强致因,但 T 的弱致因;X2 处于中间位置,如每个箭头的粗细所示。

在这种情况下,您很快就会陷入进退两难的境地。一方面,如果您想摆脱所有偏差,就必须包括所有协变量;毕竟,它们是需要调整的混杂因素。另一方面,对干预原因进行调整会增加你的估计器的方差。

为了了解这一点,让我们根据图  中的因果图来模拟数据。这里,真实的 ATE 是 0.5。如果您试图在控制所有混杂因素的情况下估计这一效应,估计值的标准误差会过高,无法得出任何结论。

 np.random.seed(123)n = 100(x1, x2, x3) = (np.random.normal(0, 1, n) for _ in range(3))t = np.random.normal(10*x1 + 5*x2 + x3)# ate = 0.05y = np.random.normal(0.05*t + x1 + 5*x2 + 10*x3, 5)df = pd.DataFrame(dict(y=y, t=t, x1=x1, x2=x2, x3=x3))smf.ols("y~t+x1+x2+x3", data=df).fit().summary().tables[1]

 如果您知道其中一个混杂因素对干预的预测作用很强,而对结果的预测作用很弱,您可以选择将其从模型中剔除。在本例中,这就是 X1。现在,请注意!这将使您的估计出现偏差。但是,如果这也能显著降低方差,也许这就是值得付出的代价:

 smf.ols("y~t+x2+x3", data=df).fit().summary().tables[1]

底线是,在模型中包含(调整)的混杂因素越多,因果关系估计值的偏差就越小。但是,如果您包含的变量对干预结果的预测作用较弱,但对治疗的预测作用较强,那么这种偏差的减少将以方差的增加为代价。同理可证,有时为了减少方差而接受一点偏差是值得的。此外,您应该非常清楚,并非所有的混杂因素都是相同的。当然,因为 T 和 Y 的关系,所有的混杂因素都是常见的。但如果它们对治疗的解释太多,而对干预结果的解释几乎没有,那么你真的应该考虑将其从调整中剔除。这适用于回归,但也适用于其他调整策略,如倾向得分加权

遗憾的是,混杂因素对干预的解释能力应该有多弱,才能证明剔除它是合理的,这在因果推理中仍是一个未决问题。不过,这种偏差与方差的权衡还是值得了解的,因为它有助于您理解和解释线性回归的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot项目怎么样排除自带tomcat容器使用宝蓝德?

前言: 由于Spring Boot 1.x和2.x不兼容,BES提供了对应的Spring Boot Starter版本。 bes‑lite‑spring‑boot‑1.x‑starter.jar,适用于Spring Boot 1.x的版本。 bes‑lite‑spring‑boot‑2.x‑starter…

人工智能对网络安全有何影响?

人工智能网络安全在短期、中期和长期如何变化 当今数字时代网络安全的重要性 在谈论人工智能在网络安全中的作用时,必须首先考虑短期影响,因为它们是最明显的,而且它是一个未知的领域,需要超越直接炒作的能力。 因此&#xff0…

【Altium】AD-在原理图中如何绘制贝塞尔曲线

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 在原理图中绘制贝塞尔曲线的方法 2、 问题场景 贝塞尔曲线主要用来描述各种波形曲线,如正弦、余弦曲线等。贝塞尔曲线的绘制和直线类似,需要固定多个顶点(最少4个)后即…

C++ 的常见算法 之三

C 的常见算法 之三 合并merge使用实列 inplace_merge使用实列 set_difference使用实列 堆make_heap使用实列 sort_heap使用实列 合并 merge 将排序范围 [first1,last1) 和 [first2,last2) 中的元素合并到一个新范围中,该范围从 result 开始,所有元素均…

【常用知识点-Java】创建文件夹

Author:赵志乾 Date:2024-07-04 Declaration:All Right Reserved!!! 1. 简介 java.io.File提供了mkdir()和mkdirs()方法创建文件夹,两者区别:mkdir()仅创建单层文件夹,如…

编程五大原则实现思路介绍

在软件工程中,存在一些被广泛认可的设计原则,它们被称为编程的五大原则,也常被简称为SOLID原则。这些原则旨在促进更好的软件设计,提高可维护性和可扩展性。以下是每个原则的概述以及它们的实现思路: 1. 单一职责原则…

Linux 命令总结

今天,给小伙伴们带来一篇 Linux 命令总结的非常全的文章,也是我们平时工作中使用率非常高的操作命令,命令有点多,建议小伙伴们可以先收藏后阅读。 1.基本命令 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmi…

入门PHP就来我这(纯干货)08

~~~~ 有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 ~~~~ 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 1 PHP对象的高级应用 1.1 final关键字 final 最终的、最后的。被final修饰过的类…

采用B/S模式 可跨平台使用的数据采集监控平台!

数据采集监控平台是一款专注于工业企业生产设备管理、数据采集、数据分析、数据管理、数据存储、数据传输等的软件系统。系统具备丰富的接口,配置灵活,方便部署,通过采集企业生产设备的数据集中处理,将各个信息孤岛有机连接&#…

技术赋能政务服务:VR导视与AI客服在政务大厅的创新应用

在数字化转型的浪潮中,政务大厅作为服务民众的前沿阵地,其服务效率和质量直接影响着政府形象和民众满意度。然而,许多政务大厅仍面临着缺乏智能化导航系统的挑战,这不仅增加了群众的办事难度,也降低了服务效率。维小帮…

ArcEngine获取投影坐标,地理坐标,垂直坐标系统以及3或6分度带的代码

本代码是用于质检中获取图层中平面坐标系统是否采用“2000国家大地坐标系(CGCS2000)高程系统是否采用“1985国家高程基准”。然后封装的一个方法 /// <summary>/// 平面坐标系统是否采用“2000国家大地坐标系(CGCS2000)高程系统是否采用“1985国家高程基准”。/// &l…

Windows的磁盘管理

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 第一动态磁盘管理 问题&#xff1a;…

C语言 求第一天摘的桃子数

猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又吃了一个&#xff0c;第二天早上又将剩下的桃子吃掉一半又多吃了一个&#xff0c;以后每天早上都吃了前一天剩下的一半零一个。到10天早上再想吃时就只剩一个桃子了&#xff0c;求第一天共…

Jackson与Json、Json和各种Java数据类型的互相转化

jackson是什么 json是最常用的数据交换格式 Jackson是最流行的Json库 首先对于这种JSON序列化的库其实有非常多&#xff0c;比如我们熟悉的Gson&#xff0c;Fastjson等等&#xff0c;当然技术没有完全的好坏&#xff0c;但是从使用情况和社区生态等方面综合看来&#xff0c;Ja…

【讲解下AI Native应用中的模型微调】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Jenkins 任务中的 java.lang.InterruptedException 异常解析与解决

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Symfony中的MVC架构实现:构建高效Web应用的基石

Symfony中的MVC架构实现&#xff1a;构建高效Web应用的基石 Symfony是一个高度灵活的PHP框架&#xff0c;用于构建Web应用和API。它遵循模型-视图-控制器&#xff08;Model-View-Controller&#xff0c;简称MVC&#xff09;设计模式&#xff0c;将应用分为三个核心组件&#x…

深入探索:scikit-learn中递归特征消除(RFE)的奥秘

深入探索&#xff1a;scikit-learn中递归特征消除(RFE)的奥秘 在机器学习的世界里&#xff0c;特征选择是一项至关重要的任务。它不仅能够提高模型的性能&#xff0c;还能减少模型的复杂度&#xff0c;避免过拟合。scikit-learn&#xff0c;作为Python中一个广泛使用的机器学习…

列表渲染 v-for

列表渲染v-for 使用v-for指令基于数组渲染一个列表&#xff0c;v-for指令的值需要使用item in/of items形式的特殊语法&#xff0c;其中items是源数据的数组&#xff0c;而item是迭代的别名。 代码实例&#xff1a; <template> <div><p v-for"item in na…

Python实战,怎么删除垃圾文件

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程: Python项目开发实战_删除垃圾文件_编程案例解析实例详解课程教程.pdf 在处理删除垃圾文件的Python实战任务时,我们需要首先明确“垃圾文件”的定义。…