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

目录

Regression for Dummies

Conditionally Random Experiments

Dummy Variables


Regression for Dummies

回归和正交化固然很好,但归根结底,你必须做出独立性假设。你必须假设,在考虑到某些协变量的情况下,干预看起来与随机分配一样好。这可能相当困难。很难知道模型中是否包含了所有的混杂因素。因此,尽可能推动随机实验是非常有意义的。例如,在银行业的例子中,如果信用额度是随机的就好了,因为这样就可以很直接地估算出信用额度对违约率和客户消费的影响。问题是,这个实验的成本将高得惊人。你将会给风险极高的客户提供随机信用额度,而这些客户很可能会违约并造成巨大损失。

Conditionally Random Experiments

解决这一难题的方法并不是理想的随机对照试验,但却是最理想的方法:分层或有条件随机试验。在这种实验中,实验线不是完全随机的,而是从相同的概率分布中抽取的,因此您需要创建多个局部实验,根据客户的协变量从不同的分布中抽取样本。例如,您知道变量 credit_score1 是客户风险的代理变量。因此,您可以用它来创建风险较高或较低的客户群体,将他们划分为信用分数 1 相似的桶。然后,对于高风险组(信用分数低),您可以从平均分较低的分布中随机抽取信用额度对于低风险客户(信用分数高),您可以从平均分较高的分布中随机抽取信用额度

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

绘制按credit_score1_buckets划分的信用额度直方图,可以看到各行的取样分布不同。得分较高的组别--低风险客户--的直方图向左倾斜,线条较长。风险较高的客户组--低分--的贷款额度分布图向右倾斜,贷款额度较低。这种实验探索的信贷额度与最佳额度相差不大,从而降低了测试成本,使其更易于管理:

这并不意味着条件随机实验比完全随机实验更好。出于这个原因,如果您选择条件随机实验,无论出于什么原因,都要尽量使其接近完全随机实验。这意味着

  • - 组数越少,处理条件随机测试就越容易。在本例中,您只有 5 个组,因为您把 credit_score1 分成了 200 个桶,分数从 0 到 1,000。将不同的组与不同的干预分布结合起来会增加复杂性,因此坚持少分组是个好主意。
  • - 各组间干预分布的重叠越大,你的实验就越轻松。这与阳性假设有关。在这个例子中,如果高风险组获得高线的概率为零,那么您就必须依靠危险的推断才能知道如果他们获得高线会发生什么。

如果把这两条经验法则调到最大值,就会得到一个完全随机的实验,这意味着这两条经验法则都需要权衡:组数越少,重叠度越高,实验就越容易读取,但成本也越高,反之亦然。

Dummy Variables

条件随机实验的好处在于,条件独立性假设更加可信,因为你知道在你选择的分类变量下,各条线是随机分配的。其缺点是,简单地将结果与被处理者进行回归,会产生有偏差的估计值。例如,以下是在不包含混杂因素的情况下估计模型的结果:

default_i=\beta_0+\beta_1\text{lines}_i+e_i

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

如图所示,因果参数 β1 的估计值为负值,这在这里是没有意义的。较高的信用额度可能并不会降低客户的风险。实际情况是,在这个数据中,由于实验的设计方式,风险较低的客户--credit_score1 高的客户--平均获得了更高的额度。

为了对此进行调整,需要在模型中加入随机分配干预的组别。在这种情况下,需要credit_score1_buckets. 进行控制。尽管该组用数字表示,但它实际上是一个分类变量:它代表一个组。因此,控制组本身的方法是创建哑变量。虚拟变量是一个群体的二进制列。如果客户属于该组,则为 1,否则为 0。由于一个客户只能来自一个组,因此最多只有一列虚拟变量为 1,其他列均为 0。如果您有机器学习背景,您可能会知道这是one-hot。它们完全是一回事。

在 pandas 中,你可以使用 pd.get_dummies 函数来创建哑列。在这里,我传递了表示组的列 credit_score1_buckets,并表示我想要创建后缀为 sb(表示分数桶)的哑列。此外,我还删除了第一个虚拟列,即 0 到 200 分桶的虚拟列。这是因为其中一列是多余的。如果我知道所有其他列都是 0,那么我放弃的那一列 一定是 1:

 risk_data_dummies = (
risk_data_rnd.join(pd.get_dummies(risk_data_rnd["credit_score1_buckets"],prefix="sb",drop_first=True))
)

一旦您有了虚拟列,您就可以将它们添加到您的模型中,并再次估计β1:default_i=\beta_0+\beta_1\text{lines}_i+\theta\mathbf{G}_i+e_i

现在,你会得到一个更合理的估计,这至少是积极的,这表明更多的信用额度会增加违约风险。

 model = smf.ols("default ~ credit_limit + sb_200+sb_400+sb_600+sb_800+sb_1000",data=risk_data_dummies).fit()model.summary().tables[1]

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

最后,这里只有一个斜率参数。添加虚拟变量来控制混杂因素后,每个组都有一个截距,但所有组的斜率都是一样的。我们很快就会讨论这个问题,但这个斜率将是各组回归的方差加权平均值。如果绘制每个组的模型预测图,您可以清楚地看到每个组只有一条线,但所有组的斜率相同:

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

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

相关文章

k8s 常用的命令

k8s 常用的操作 查找资源 kubectl get: 获取所有的资源,包括node、namespace、pod 、service、deployment等,可以展示一个或者多个资源。 创建资源 kubectl create :Kubernetes 的清单文件可以用 json 或 yaml 定义。 更新资源 …

SQL Error: 1054, SQLState: 42S22

SQL 错误 1054 通常与 SQL 查询中的未知列有关,SQLState 42S22表示列未找到错误。 解决方式: 检查列名: 确保您在SQL查询中使用的列名实际存在于您查询的表中。可能存在拼写错误或列名错误。验证表名: 确认SQL查询中的表名是否正…

python 获取Shopee虾皮商家店铺商品列表 虾皮api数据采集

此api接口可用于获取虾皮平台商家店铺的商品列表,目前land参数支持id、vn、my、th、sg、ph、tw(印尼、越南、马来、泰国、新加坡、菲律宾、台湾)。 若有需要,请点击文末链接联系我们。 详细采集页面如下 https://shopee.tw/yue…

使用Adobe Acrobat对PDF文档进行数字签名

文章目录 前言一、使用Adobe Acrobat对PDF文档进行数字签名1.使用Adobe Acrobat打开需要进行签名的PDF文档2. 点击【查看更多】3.点击【使用证书】4.点击【数字签名】5.使用鼠标选定一个区域6.选择您需要使用的证书 → 点击【继续】7.点击【签名】8.签名成功 前言 一、使用Ado…

嵌入式C语言中指针与链表的关系详解

假定给你一块非常小的内存,这块内存只有8字节,这里也没有高级语言,没有操作系统,你操作的数据单位是单个字节,你该怎样读写这块内存呢? 注意这里的限定,再读一遍,没有高级语言,没有操作系统,在这样的限制之下,你必须直面内存读写的本质。 这个本质是什么呢? 本质…

C++中constexpr和#define定义常量的区别

在C中,使用 constexpr 来定义常量和使用宏 #define 有几个关键区别: 类型安全:constexpr 常量有类型,宏没有类型。作用域:constexpr 常量遵循C的作用域规则,而宏是文本替换,不遵循作用域规则。…

基于xilinx FPGA的GTX/GTH/GTY位置信息查看方式(如X0Y0在bank几)

目录 1 概述2 参考文档3 查看方式4查询总结: 1 概述 本文用于介绍如何查看xilinx fpga GTX得位置信息(如X0Y0在哪个BANK/Quad)。 2 参考文档 《ug476_7Series_Transceivers》 《pg156-ultrascale-pcie-gen3-en-us-4.4》 3 查看方式 通过…

语音大模型引领自然交互新时代,景联文科技推出高质量语音大模型数据库

近期,OpenAI正式发布语音大模型GPT-4o,可以综合利用语音、文本和视觉信息进行推理,扮演一个个人语音交互助手。 在音频处理方面,它不仅能识别和转录多种口音和方言,改变语音的速度音调和振动,还能进行声音模…

vue中数据响应式选择ref还是reactive?

vue中响应式选择ref还是reactive合适 语法上来说,两者都可以实现响应式,之所以有ref和reactive,是为了更加方便的将不同的数据类型分类处理。 主要区别:reactive只能声明对象/数组,ref可以响应任意数据类型&#xff…

Vue.js 中的 v-if 和 v-show

Vue.js 中的 v-if 和 v-show:详细解析与比较 在 Vue.js 中,v-if 和 v-show 是两个常用的指令,用于控制元素的显示和隐藏。尽管它们都能达到类似的效果,但它们的工作原理和适用场景有着显著的区别。本文将深入探讨这两者之间的异同…

Codeforces Round 952 (Div. 4) G. D-Function 题解 数学 数论

D-Function 题目描述 Let D ( n ) D(n) D(n) represent the sum of digits of n n n. For how many integers n n n where 1 0 l ≤ n < 1 0 r 10^{l} \leq n < 10^{r} 10l≤n<10r satisfy D ( k ⋅ n ) k ⋅ D ( n ) D(k \cdot n) k \cdot D(n) D(k⋅n)k⋅D…

mybatisplus新增数据时生成的雪花id太长前端接收不准确怎么办?

这是后端返回的&#xff1a;1807308955001573377 这是前端接收的&#xff1a;1807308955001573400 返回的long类型超过前端的最大长度了&#xff0c;渲染不了 只需要在WebMvcConfiguration配置类中重写方法&#xff0c;如下 Overrideprotected void configureMessageConver…

深度学习:C++和Python如何对大图进行小目标检测

最近在医美和工业两条线来回穿梭&#xff0c;甚是疲倦&#xff0c;一会儿搞搞医美的人像美容&#xff0c;一会儿搞搞工业的检测&#xff0c;最近新接的一个项目&#xff0c;关于瑕疵检测的&#xff0c;目标图像也并不是很大吧&#xff0c;需要放大后&#xff0c;才能看见细小的…

基于Java的跨平台移动应用开发

基于Java的跨平台移动应用开发 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨基于Java的跨平台移动应用开发&#xff0c;这是一种强大的技术方案…

使用 App Store Connect API 生成和读取分析报告

文章目录 前言安装 API Swift SDK配置 API Swift SDK生成分析报告获取所有可用的报告获取报告的分段下载分段的数据总结 前言 Apple 最近推出了50多个新的分析报告&#xff0c;其中包含数百个新的数据点和指标&#xff0c;以帮助开发者了解他们的应用程序的表现情况。 这些报…

构建安全稳定的应用:Spring Security 实用指南

前言 在现代 Web 应用程序中&#xff0c;安全性是至关重要的一个方面。Spring Security 作为一个功能强大且广泛使用的安全框架&#xff0c;为 Java 应用程序提供了全面的安全解决方案。本文将深入介绍 Spring Security 的基本概念、核心功能以及如何在应用程序中使用它来实现…

相比共享代理,为什么要用独享代理IP?

随着互联网的广泛普及和应用&#xff0c;涉及网络隐私、数据安全和网络访问控制的问题变得越来越重要。代理服务器作为一种常见的网络工具&#xff0c;可以在跨境电商、海外社媒、SEO投放、网页抓取等领域发挥作用&#xff0c;实现匿名访问并加强网络安全。在代理服务器类别中&…

Hadoop:全面深入解析

Hadoop是一个用于大规模数据处理的开源框架&#xff0c;其设计旨在通过集群的方式进行分布式存储和计算。本篇博文将从Hadoop的定义、架构、原理、应用场景以及常见命令等多个方面进行详细探讨&#xff0c;帮助读者全面深入地了解Hadoop。 1. Hadoop的定义 1.1 什么是Hadoop …

CDC模型

引言 聚类是一种强大的机器学习方法&#xff0c;用于根据特征空间中元素的接近程度发现相似的模式。它广泛用于计算机科学、生物科学、地球科学和经济学。尽管已经开发了最先进的基于分区和基于连接的聚类方法&#xff0c;但数据中的弱连接性和异构密度阻碍了其有效性。在这项…

Linux 下的性能监控与分析技巧

在日常的服务器管理和问题诊断过程中&#xff0c;Linux 命令行工具提供了强大的支持。本文通过几个常用的示例&#xff0c;介绍如何快速定位问题、监控服务器性能。 无论你是编程新手还是有一定经验的开发者&#xff0c;理解和掌握这些命令&#xff0c;都将在你的工作中大放异…