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

目录

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 定理允许您将去伪存真步骤与影响估计步骤分开。但要学习它,你必须先快速回顾一下回归理论。

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

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

相关文章

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档:Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…

【RabbitMQ实战】Springboot 整合RabbitMQ组件,多种编码示例,带你实践 看完这一篇就够了

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、对RabbitMQ管理界面深入了解1、在这个界面里面我们可以做些什么? 二、编码练习(1)使用direct exchange(直连型交换机)&a…

【网络安全】修改Host文件实现域名解析

场景 开发一个网站或者服务,需要在本地测试时,可以将线上的域名指向本地开发环境的IP地址。从而模拟真实环境中的域名访问,方便调试和开发。 步骤 1、以管理员身份打开命令提示符 2、编辑hosts文件: 输入以下命令打开hosts文…

【Python数据分析及环境搭建】:教程详解1(第23天)

系列文章目录 Python进行数据分析的优势常用Python数据分析开源库介绍启动Jupyter服务Jupyter Notebook的使用 文章目录 系列文章目录前言学习目标1. Python进行数据分析的优势2. 常用Python数据分析开源库介绍2.1 NumPy2.2 Pandas2.3 Matplotlib2.4 Seaborn2.5 Sklearn2.6 Ju…

【PB案例学习笔记】-26制作一个带浮动图标的工具栏

写在前面 这是PB案例学习笔记系列文章的第26篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

怎样使用js技术实现Chrome投屏功能?

在Web前端技术中,直接控制浏览器窗口或标签页从主屏投屏到副屏(如PPT的演讲者模式)并不简单,而且直接控制浏览器窗口从主屏投屏到副屏的功能超出了Web标准的范畴,并且涉及到用户系统级别的设置和权限,因此不…

正确认识手机NFC,安全无风险

在数字化生活日益普及的今天,NFC(近场通信)技术以其独特的便捷性和高效性,逐渐成为了我们日常生活中不可或缺的一部分。然而,面对新技术的崛起,总有一些用户对于其安全性心存疑虑,尤其是关于“N…

(一)Docker基本介绍

部署项目的发展 传统部署适合需要最大性能和可靠性的场景,但在资源利用和管理方面有显著劣势。虚拟化部署提供了良好的资源利用率和隔离性,适用于需要灵活扩展和多租户环境的场景,但存在性能开销。容器部署在轻量级、可移植性和资源利用率方面…

JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图 一: SpringBoot自带监控Actuator SpringBoot自带监控功能Actuator&#xff0c;可以帮助实现对程序内部运行情况监控&#xff0c;比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。 使用步骤&#xff1a; 1. 导入依赖坐标 <dependency><…

Omni3D目标检测

Omni3D是一个针对现实场景中的3D目标检测而构建的大型基准和模型体系。该项目旨在推动从单一图像中识别3D场景和物体的能力&#xff0c;这对于计算机视觉领域而言是一个长期的研究目标&#xff0c;并且在机器人、增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&a…

7.1.SQL注入-基于函数报错的方式来利用updatexml()

基于函数报错的方式来进行利用-字符型&#xff08;本页updatexml()&#xff09; 前提条件是后台数据库没有屏蔽数据库语法报错信息 updatexml()方法详解 注释&#xff1a; 第一个参数&#xff0c;意思就是xml文档的名称 第二个参数&#xff0c;意思就是定位到xml文档中指定…

PriorityQueue底层你了解多少?(带你彻底掌握优先级队列)

1. 概念 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然不合适&#xff0c;比如:在手机上玩游戏的时…

[图解]SysML和EA建模住宅安全系统-05-参数图

1 00:00:01,140 --> 00:00:03,060 这是实数没错&#xff0c;这是分钟 2 00:00:03,750 --> 00:00:07,490 但是你在这里选&#xff0c;选不了的 3 00:00:07,500 --> 00:00:09,930 因为它这里不能够有那个 4 00:00:11,990 --> 00:00:13,850 但是我们前面这里 5 00…

D - Intersecting Intervals(abc355)

题意&#xff1a;有n个区间&#xff0c;找出俩俩区间相交的个数 分析&#xff1a; 设初始俩俩相交&#xff0c;找出不相交的&#xff08;不同区间l>r)&#xff0c;减去即可 #include<bits/stdc.h> using namespace std; typedef long long ll; int main(){ ios:…

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…

Hive-存储-文件格式

一、前言 数据存储是Hive的基础&#xff0c;选择合适的底层数据存储格式&#xff0c;可以在不改变Hql的前提下得到大的性能提升。类似mysql选择适合场景的存储引擎。 Hive支持的存储格式有 文本格式&#xff08;TextFile&#xff09; 二进制序列化文件 &#xff08;SequenceF…

期末复习---程序填空

注意&#xff1a; 1.数组后移 *p *(p-1) //把前一个数赋值到后一个数的位置上来覆盖后一个数 2.指针找最大字符 max *p while( *p){ if( max< *p) { max*p; qp;/ 用新的指针指向这个已经找到的最大位置&#xff1b;!!!!!!!!! } p; //因为开始没有next &#xff…

Fragment+Viewpage2+FragmentStateAdapter实现滑动式标签布局

大家好&#xff0c;我是网创有方&#xff0c;今天记录下标签布局的实现方法&#xff0c;先看下效果图。 第一步&#xff1a;编写一个activity或者fragment。内含有一个viewpager2的适配器&#xff0c;适配器类型为FragmentStateAdapter。 ​ public class MediaCreateFragment…

计算机图形学入门22:双向反射分布函数(BRDF)

1.定义 所谓BRDF&#xff08;Bidirectional Reflectance Distribution Function&#xff0c;双向反射分布函数&#xff09;&#xff0c;指的是从辐射度量学的角度去理解光线的反射&#xff0c;如下图所示。 所谓反射就是一个点从ωi方向发出的Radiance转化为dA接收到的功率E&am…

在jeesite框架中增加一个收藏夹功能-- V1.0版本

Jeesite简介&#xff1a;JeeSite 快速开发平台&#xff0c;不仅仅是一个后台开发框架&#xff0c;它是一个企业级快速开发解决方案&#xff0c;提供在线数据源管理、数据表建模、代码生成等功能。 正文&#xff1a;Jeesite是一个方便实用&#xff0c;适合敏捷开发&#xff0c;提…