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

news2024/11/17 19:30:56

目录

Adjusting with Regression


Adjusting with Regression

为了了解回归的威力,让我带您回到最初的例子:估计信贷额度对违约的影响。银行数据通常是这样的,其中有很多列客户特征,这些特征可能表明客户的信贷价值,比如月工资、征信机构提供的大量信用评分、在当前公司的任职期限等等。然后是给予该客户的信贷额度(本例中为干预),以及告诉您客户是否违约的列--结果变量

 risk_data = pd.read_csv("./data/risk_data.csv")
 risk_data.head()

在这里,干预变量 credit_limit 的类别太多了。在这种情况下,最好将其视为连续变量,而不是分类变量。与其将 ATE 表示为多级处理之间的差异,不如将其表示为预期干预结果相对于处理结果的导数:ATE=\frac{\partial}{\partial t}E[y|t]

别担心这听起来很花哨。它简单地说,就是在干预增加一个单位的情况下,您预计结果会发生变化的金额。在本例中,它表示在信贷额度增加 1 美元的情况下,您预计违约率会发生多大变化。估算这种数量的一种方法是进行回归。具体来说,您可以估计以下模型

Default_i=\beta_0+\beta_1\text{limit}_i+e_i,

而估计值 β1 可以解释为限额增加 1 美元时,您预期风险会发生的变化。如果限额是随机的,那么这个参数就具有因果关系。但大家都很清楚,情况并非如此,因为银行倾向于给风险较低的客户更高的额度。事实上,如果运行前面的模型,您会得到 β1 的负估计值。

 model = smf.ols('default ~ credit_limit', data=risk_data).fit()
 model.summary().tables[1]

这一点也不奇怪,因为风险与信用额度之间的关系是负相关的。如果将拟合回归线与按信用额度计算的平均违约率并列,就可以清楚地看到负趋势:

理论上,为了调整这种偏差,您可以按照所有混杂因素对数据进行分段,在每个分段内运行违约对信用额度的回归,提取斜率参数,然后求平均值。然而,由于维度的限制,即使您尝试对中等数量的混杂因素(包括信用评分)进行分段,您也会发现有些单元格只有一个样本,因此无法进行回归。 更不用说还有很多单元格是空的了

 risk_data.groupby(["credit_score1", "credit_score2"]).size().head()
 
Out[6]: credit_score1 credit_score2
 34.0 339.0 1
 500.0 1
 52.0 518.0 1
 69.0 214.0 1
 357.0 1
 dtype: int64

值得庆幸的是,回归方法再次为您提供了帮助。您无需手动调整混杂因素,只需将其添加到用 OLS 估计的模型中即可

Default_i=\beta_0+\beta_1\mathrm{limit}_i+\theta\mathbf{X}_i+e_i,

这里,X 是混杂变量的向量,θ 是与这些混杂变量相关的参数向量。θ参数并无特别之处。它们的行为与 β1 完全一样。我之所以用不同的方式来表示它们,是因为它们只是用来帮助你得到 β1 的无偏估计值。也就是说,你并不真正关心它们的因果解释(严格来说,它们被称为干扰参数)。

以信贷为例,您可以在模型中加入信贷评分和工资混杂因素。它看起来是这样的

Default_{i}=\beta_{0}+\beta_{1}\mathrm{limit}_{i}+\theta_{1}\mathrm{wage}_{i}+\theta_{2}\mathrm{creditScore}1_{i}+\theta_{3}\mathrm{creditScore}2_{i}+e_{i},

我会详细介绍在模型中加入变量如何调整混杂因素,但现在有一个非常简单的方法。前面的模型是 E[y|t,X] 的模型。那么,如果将该模型与干预-信贷限制进行微分,会发生什么呢?那么,你只需得到 β1!

从某种意义上说,β1 可以看作是违约预期值对信贷额度的偏导数。或者,更直观地说,可以把它看作是在模型中所有其他变量保持不变的情况下,当信用额度略有增加时,违约的预期值会有多大变化这种解释已经告诉我们回归是如何调整混杂因素的:在估计干预与结果之间的关系时,它将混杂因素保持不变。

要想了解这一点,您可以对前面的模型进行估计。只要添加一些混杂因素,就会像变魔术一样,信贷额度和违约之间的关系就会变成正相关!

 formula = 'default ~ credit_limit + wage+credit_score1+credit_score2'
 model = smf.ols(formula, data=risk_data).fit()
 model.summary().tables[1]

不要被 β1 的微小估计值所迷惑。回想一下,限额是以 1,000 为单位的,而违约是 0 或 1。因此,增加 1 美元的额度会使预期违约率上升一个很小的数字,这并不奇怪尽管如此,这个数字在统计学上还是很有意义的,它告诉你风险会随着信用额度的增加而增加,这更符合你对世界运行方式的直觉。

请稍安勿躁,因为你将对它进行更正式的探讨。终于到了学习最伟大的因果推理工具之一:弗里施-沃-洛威尔(FWL)定理的时候了。这是一种令人难以置信的消除偏差的方法,但遗憾的是,数据科学家很少了解这种方法。FWL 是了解更高级去偏差方法的先决条件,但我认为它最有用的原因是,它可以用作去偏差的预处理步骤。还是以银行业为例,想象一下这家银行的许多数据科学家和分析师都在试图了解信用额度如何影响(导致)许多不同的业务指标,而不仅仅是风险。然而,只有您才掌握信用额度是如何分配的,这意味着您是唯一知道信用额度干预存在哪些偏差的专家。有了 FWL,您就可以利用这些知识对信用额度数据进行去伪存真,使其他人也能使用这些数据,无论他们对什么结果变量感兴趣。Frisch-Waugh Lovell 定理允许您将去伪存真步骤与影响估计步骤分开。但要学习它,你必须先快速回顾一下回归理论。

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

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

相关文章

1972计算机毕业设计asp.net毕业生就业信息管理系统VS开发access数据库web结构c#编程计算机网页源码项目

一、源码特点 asp.net毕业生就业信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 asp.net毕业生就业信息管理系统 二、功能介绍 基于ASP.NET的毕业生就业信息管理系统主要满足以下几个方面的…

SQL 注入联合查询之为什么要 and 1=2

在 SQL 注入联合查询中,将 id 先置为假(如 id-1 或其他使查询结果为空的条件),通常是为了让前面的查询语句查询不到结果,从而使联合查询中后面的语句结果能够显示在回显位上

【数据结构】栈和队列-相互实现OJ题

前言: 本题目是关于栈和队列的OJ题目,需对栈和队列有一定了解再进行做题,若不了解可以根据我之前这篇文章进行学习:【数据结构】栈和队列-CSDN博客,题中需要的栈和队列的实现也在该文章中有源代码 目录 前言: 一.用…

转运机器人帮助物流行业实现无人化运输,自动分拣

在物流行业日新月异的今天,智能化、无人化已成为大势所趋。富唯智能转运机器人凭借其卓越的性能和广泛的应用场景,正引领着物流行业的新一轮变革。 1、高效转运,轻松应对 富唯智能转运机器人,拥有高达1000kg的负载能力&#xff…

django学习入门系列之第三点《BootSrap初了解》

文章目录 初识BootStrap往期回顾 初识BootStrap BootSrap是什么? 是别人帮我们已写好的CSS样式,我们如果想要使用这个BootSrap: 下载BootStrap使用 在页面上引入BootStrap编写HTML时,按照BootStrap的规定来编写 自定制 官网&…

GoogleAI大动作:发布Gemma 2,开启新篇章

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

window上部署sql server改动端口、和sqlserver的一些还原、批量插入存储过程的命令

1.端口的查看和启动 --windows上安装上sql server数据库后,搜索界面搜索sql,会出现配置管理器,点击进入 --进入后再次选择配置管理器 2. sqlserver数据库还原图形化 sqlserver还原数据库时会使数据库进入一个restore的还原状态,…

20240701在飞凌的OK3588-C开发板的Android12系统下使用i2cdetect确认I2C总线

console:/ # i2cdetect -y -r 0 console:/ # i2cdetect -l console:/ # i2cdetect -F 0 20240701在飞凌的OK3588-C开发板的Android12系统下使用i2cdetect确认I2C总线 2024/7/1 11:30 在CAM1、CAM2挂载OV13850。 在CAM3、CAM4和CAM5挂载OV5645了。 console:/ # i2 i2cdetect i2…

超声波气象站的科技创新

在现代科技的快速发展下,气象监测设备也在不断革新,其中超声波气象站以其独特的优势,成为了气象监测领域的新宠。这款体积小巧、重量轻盈的气象站,凭借其高精度、高稳定性和长寿命,为气象数据的采集提供了强有力的支持…

JMeter--定时执行的方法

原文网址:JMeter--定时执行的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍JMeter如何使用定时器定时执行测试任务。 Java技术星球:way2j.com 方法 第一步:新建定时器 右键测试任务> Add > Timer> Constant Timer 如下图所示…

Android平台崩溃和 ANR 问题进行符号化解析、解析崩溃日志的内存地址

使用Android Logcat Stacktrace Utility | Android Logcat | 1.2.3 1.设置so库路径 2.打开Stacktrace Utility工具 3.在Original粘贴报错内存地址 4.点击Resolve Stacktraces,就会解析出内存地址 如果是红色,解析失败了,缺少原生so库,可以在第一步添加so库文件再次尝试…

2-22 基于matlab的NSGA-2求解多目标柔性车间调度算法

基于matlab的NSGA-2求解多目标柔性车间调度算法,计算最大完工时间、计算总延期时长、计算调度方案的总能耗、计算设备总负荷。输出四项结果,多次运行可寻找最佳的调度计划。程序已调通,可直接运行。 2-22 NSGA-2求解多目标柔性车间调度算法 - 小红书 (xi…

python sklearn机械学习模型-分类

🌈所属专栏:【机械学习】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您…

常用的限流算法有哪些?你听说过几种?

限流,就是指限制流量请求的频次。 在高并发情况下,它是一种保护系统的策略,避免了在流量高峰时系统崩溃,造成系统的不可用。 常见的限流算法有: 计数器限流算法滑动窗口限流算法漏桶限流算法令牌桶限流算法 1. 计数器…

LeetCode题练习与总结:二叉树的前序遍历--144

一、题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: 输入:root [] 输出:[]示例 3: 输入:roo…

ARM功耗管理软件之DVFSAVS

安全之安全(security)博客目录导读 思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS? 目录 一、ARM功耗管理软件之DVFS 二、ARM功耗管理软件之AVS 一、ARM功耗管理软件之DVFS 有一个实现特定…

招生报名系统教培招生小程序

招生报名系统:轻松实现教培招生新高度 🚀 招生报名系统,开启智慧教育新时代 在当今数字化快速发展的时代,教育行业也迎来了变革的浪潮。招生报名系统作为这一变革的先锋,为教育机构提供了全新的招生渠道和管理方式。通…

jmeter-beanshell学习1-vars使用获取变量和设置变量

最近又开始了用jmeter做自动化,不管怎么实现,都逃离不了用beanshell,最后把所有校验都放在了beanshell判断,效果还不错。 首先jmeter有很多beanshell相关的元件,取样器、前置处理器、后置处理器、断言,暂时…

传输距离3000M|低延迟|48K采样音频传输模块-SA356大功率发射模块

无线音频应用中,远距离音频传输在许多领域具有广泛的应用需求,例如大型会议系统、公共广播、户外活动和音乐演出等。为了满足这些需求,音频传输模块需要具备一些关键特性,包括长距离传输能力、高音质、低延迟、稳定性以及抗干扰能…

UE5 动画蓝图

文章目录 一、State Machines二、Blend Spaces三、Aim Offset四、Montage 初步介绍 Unreal Engine 5 Tutorial - Animation Blueprint Part 1: State Machines (youtube.com) Unreal Engine 5 Tutorial - Animation Blueprint Part 2: Blend Spaces (youtube.com) Unreal Engi…