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

目录

Regression Theory

Single Variable Linear Regression

Multivariate Linear Regression

 Frisch-Waugh-Lovell Theorem and Orthogonalization


Regression Theory

我不打算太深入地探讨线性回归是如何构建和估计的。不过,一点点理论知识将有助于解释线性回归在因果推理中的作用。首先,回归解决的是最佳线性预测问题。假设 β* 是一个 参数向量:

\beta^\star=argmin E\Big[(Y_i-X_i'\beta)^2\Big]

线性回归可以找到最小化均方误差 (MSE) 的参数。如果将其微分并设为零,就会发现这个问题的线性解如下:

\beta^\star=E[X'X]^{-1}E[X'Y]

也可以用样本估计beta

\hat{\beta}=(X'X)^{-1}X'Y

但不要相信我的话。如果你是那种理解代码胜过理解公式的人,那就自己试试吧。在下面的代码中,我使用 OLS 的代数解来估计你刚才看到的模型的参数(我添加了截距作为最终变量,因此第一个参数估计值将是 β1):

 X_cols = ["credit_limit", "wage", "credit_score1", "credit_score2"]X = risk_data[X_cols].assign(intercep=1)y = risk_data["default"]def regress(y, X):return np.linalg.inv(X.T.dot(X)).dot(X.T.dot(y))beta = regress(y, X)betaarray([ 3.062e-06, -8.821e-05, -4.174e-05, -3.039e-04, 4.0364-01])

如果你回过头来看一下,就会发现这些数字与你之前用 statsmodels 中的 ols 函数估计模型时得到的数字完全相同。

Single Variable Linear Regression

上一节的 β 公式非常通用。不过,研究一下只有一个回归变量的情况还是有好处的。在因果推断中,您经常想要估计一个变量 T 对结果 y 的因果影响,因此,您使用这个单一变量的回归来估计这种影响。

在只有一个回归变量 T 的情况下,与之相关的参数为

\hat{\tau}=\frac{Cov\big(Y_i,T_i\big)}{Var\big(T_i\big)}=\frac{E\big[\big(T_i-\overline{T}\big)\big(Y_i-\overline{Y}\big)\big]}{E\big[\big(T_i-\overline{T}\big)^2\big]}

如果 T 是随机分配的,β1 就是 ATE。重要的是,通过这个简单的公式,您可以了解回归的作用。它是要找出干预和结果是如何共同作用的(用分子中的协方差表示),然后用干预的单位来表示,即除以干预的方差。

Multivariate Linear Regression

原来,除了你之前看到的一般公式之外,还有另一种方法来看待多元线性回归。这另一种方法让我们对回归的作用有了一些了解。

如果你有不止一个回归变量,你可以扩展单变量回归公式以适应这种情况。假设其他变量只是辅助变量,而您真正感兴趣的是估计与 T 相关的参数 τ:

y_{i}=\beta_{0}+\tau T_{i}+\beta_{1}X_{1i}+ . . . +\beta_{k}X_{ki}+u_{i}

\tau可以用以下公式来估计:\hat{\tau}=\frac{Co\nu\left(Y_i,\widetilde{T_i}\right)}{Var\left(\widetilde{T_i}\right)}, 其中\widetilde{T}_i是Ti对所有其他协变量X_{1i}+ . . . +X_{ki}回归的残差。

现在,让我们来体会一下这有多酷。这意味着多元回归的系数是同一回归变量在考虑了模型中其他变量的影响后的二元系数。用因果推理的术语来说,\tau是使用所有其他变量预测 T 后的双变量系数。

这背后有一个很好的直觉。如果能用其他变量预测 T,就意味着它不是随机的。然而,一旦控制了所有干扰变量 X,你就可以让 T 看起来和随机的一样好。为此,你可以使用线性回归从混杂因子中预测它,然后取该回归\widetilde{T}的残差 。根据定义,\widetilde{T}不能被你已经用来预测T的其他变量X来预测。 相当优雅地说,\widetilde{T} 是与 X 中任何其他变量都不相关(不相关)的干预版本。

我知道这很拗口,但实在是太神奇了。事实上,这已经是我答应要教大家的 FWL 定理的工作原理了。所以,如果你还不太理解多元回归部分,也不用担心,因为接下来你将以一种更直观、更形象的方式来复习它。

 Frisch-Waugh-Lovell Theorem and Orthogonalization

FWL 式正交化是您可以使用的第一种主要去杂技术。它是一种简单而强大的方法,可以让非实验数据看起来像是经过随机干预的。FWL 主要是关于线性回归的;FWL 式正交化已经扩展到了更广泛的环境中,你将在第三部分中看到。Frisch-Waugh-Lovell 定理指出,多元线性回归模型可以一次性或分三步进行估计。例如,您可以将违约与信贷限额、工资、信贷评分 1 和信贷评分 2 进行回归,就像您已经做的那样:

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

但是,根据 FWL,您还可以将这一估算细分为
1. 去偏步骤,将干预 T 与混杂因素 X 进行回归,得到干预残差 \tilde{T}=T-\hat{T}
2. 去噪步骤:将结果 Y 与混杂变量 X 进行回归,得到结果残差 Y。
3. 结果模型,将结果残差 Y 与干预残差 T 进行回归,得到结果残差 Y = Y - Y 3.
残差 T,得到 T 对 Y 的因果效应的估计值。

毫不奇怪,这只是重述了 "多元线性回归 "中看到的公式。FWL 定理说明了回归模型估计程序的等价性。该定理还指出,您可以分离线性回归中的除杂成分,这就是前面列表中概述的第一步。为了更直观地了解发生了什么,让我们一步一步来分析。

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

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

相关文章

【HarmonyOS NEXT】鸿蒙如何动态添加组件(NodeController)

NodeController用于实现自定义节点的创建、显示、更新等操作的管理,并负责将自定义节点挂载到NodeContainer上。 说明 本模块首批接口从API version 11开始支持 当前不支持在预览器中使用NodeController。 导入模块 import { NodeController } from "ohos…

时域自相关计算中,使用卷积而不是点积操作的原因

自相关(Auto-Correlation)和卷积(Convolution)是信号处理中的两个重要操作,它们在时域中的应用有所不同。尽管在概念上有所关联,但它们用于不同的目的,尤其是在处理时间序列数据时。以下是自相关…

尚硅谷k8s 2

p54-56 k8s核心实战 service服务发现 Service:将一组 Pods 公开为网络服务的抽象方法。 #暴露Deploy,暴露deploy会出现在svc kubectl expose deployment my-dep --port8000 --target-port80#使用标签检索Pod kubectl get pod -l appmy-depapiVersion: v1 kind: Service metad…

无锁编程——从CPU缓存一致性讲到内存模型(1)

一.前言 1.什么是有锁编程,什么是无锁编程? 在编程中,特别是在并发编程的上下文中,“无锁”和“有锁”是描述线程同步和资源访问控制的两种不同策略。有锁(Locked): 有锁编程是指使用锁(例如互…

Go语言定时器Timer和Ticker到底怎么用

原文链接,可获取更多Go语言学习资料 概述 在日常开发中,我们不可避免的需要使用到定时任务用来处理业务逻辑。在Go语言中内置的有两个定时器,Timer和Ticker,合理的使用这两个定时器可以很好的解决定时任务的需求,同时…

《数据仓库与数据挖掘》自测

试卷一 一、选择题(每题2分,共20分) 1. 数据仓库的主要特征不包括以下哪一项? A. 数据量大 B. 异构数据整合 C. 事务处理 D. 支持决策分析 2. OLAP的核心功能是: A. 事务处理 B. 多维数据分析 C. 数据清洗 D. 数据转…

Python系统教程01

Python 是一门解释性语言,相对更简单、易学,它可以用于解决数学问题、获取与分 析数据、爬虫爬取网络数据、实现复制数学算法等等。 1、print()函数: print()书写时注意所有的符号都是英文符号。print()输出内容时,若要输出字符…

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

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

回溯 | Java | LeetCode 39, 40, 131 做题总结(未完)

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

力扣热100 哈希

哈希 1. 两数之和49.字母异位词分组128.最长连续序列 1. 两数之和 题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。…

算法刷题笔记 模拟栈(C++实现)

文章目录 题目描述基本思路实现代码 题目描述 实现一个栈,栈初始为空,支持四种操作: push x – 向栈顶插入一个数x;pop – 从栈顶弹出一个数;empty – 判断栈是否为空;query – 查询栈顶元素。 现在要对栈…

34. 在排序数组中查找元素的第一个和最后一个位置(中等)

34. 在排序数组中查找元素的第一个和最后一个位置 1. 题目描述2.详细题解(1)朴素二分查找算法(2)改进二分查找算法 3.代码实现3.1 Python  方法一:  方法二:  方法三:优化方法二 3.2 Java 1. 题目描述 题目中转…

Elasticsearch:Painless scripting 语言(二)

这是继上一篇文章 “Elasticsearch:Painless scripting 语言(一)” 的续篇。 使用 field API 访问文档中的字段 警告:Field API 仍在开发中,应视为测试版功能。API 可能会发生变化,此迭代可能不是最终状态。…

53、Flink 测试工具测试用户自定义函数详解

1.测试用户自定义函数 a&#xff09;单元测试无状态、无时间限制的 UDF 示例&#xff1a;无状态的 MapFunction 。 public class IncrementMapFunction implements MapFunction<Long, Long> {Overridepublic Long map(Long record) throws Exception {return record …

Ubuntu20.04 安装 cudatookit 12.2 + cudnn 安装

最简约的部署Ubuntu20.04深度学习环境的教程 1. 安装Ubuntu20.04 系统 B站详细的安装教程 简约安装版 2. 安装Nvidia显卡驱动 我参考了各种资料&#xff0c;重装系统&#xff0c;完美解决开机显示器黑屏无法进入桌面的情况 黑屏问题主要是由linux内核更新导致&#xff0c;…

煤矿ar远程协作平台系统提升了操作的安全性和效率

工业AR远程专家协助系统为企业量身打造大型设施的虚拟布局方案。借助先进的AR增强现实技术&#xff0c;企业能够在虚拟环境中精准模拟并购买适配设备&#xff0c;确保设施的顺畅运行。同时&#xff0c;工业AR远程专家协助系统能提供的协作功能让团队成员能够实时共享虚拟布局&a…

昇思25天学习打卡营第8天|MindSpore-SSD目标检测

SSD目标检测介绍 SSD,全称Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(mean Average Precision)以及59FPS;对于512x512的网络,达到了76.9%mAP ,超…

Mouse Albumin ELISA Kit小鼠白蛋白ELISA试剂盒

白蛋白存在于所有哺乳动物和许多低等脊椎动物的血管内和血管外&#xff0c;是一种由肝脏合成的约67kDa的蛋白质。正常情况下&#xff0c;只有非常微量的白蛋白能逃过肾小球的重吸收&#xff0c;并被排泄到尿液中。ICL的Mouse Albumin ELISA Kit是一种高灵敏度的双抗体夹心法ELI…

基于“香港世界”的SLAM技术介绍

在视觉感知技术中&#xff0c;理解和描述复杂的三维室外场景至关重要&#xff0c;尤其是自动驾驶技术的发展要求对陌生环境具有更强的适应能力和鲁棒性。传统上&#xff0c;使用“曼哈顿世界”和“亚特兰大世界”模型来描述具有垂直和水平结构的城市场景。 当遇到像香港这样地形…

C++:类与面向对象static和this关键字其他关键字

类与面向对象 struct和class (1)struct是C中用户自定义类型&#xff0c;主要功能是对功能相关数据的封装 (2)struct不能直接封装函数&#xff0c;但可以通过封装函数指针来间接封装函数 (3)struct就是class的初级阶段&#xff0c;class在struct基础上做了很多扩展&#xff0c;便…