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

news2024/11/17 13:26:10

目录

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)
 beta
 
 array([ 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.coloradmin.cn/o/1884517.html

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

相关文章

申请一张含100个域名的证书-免费SSL证书

挑战一下,申请一张包含100个域名的证书 首先,我们访问来此加密网站,进入登录页面,输入我的账号密码。 登录后,咱们就可以开始申请证书,首先说一下,咱账号是SVIP哦,只有SVIP才可以申…

拍摄的vlog视频画质模糊怎么办?视频画质高清修复

在短视频逐渐成为主流的今天,许多朋友都会通过vlog的形式记录下自己的生活。但我们会发现,自己拍摄的视频与专业博主拍摄的视频,在画质上就会有所差别,拍摄的vlog视频画质模糊不清晰怎么办? 拍摄的vlog视频画质模糊怎么…

Linux-网络安全私房菜

文章目录 前言入门基本指令篇章字符集设置cdlsdatemkdirtouch-d-m 修改主机名rmshredrename重命名mv移动tar打包与压缩打包但是不压缩打包且压缩更新包文件解压对应的包 zip压缩文件命令cat查看显示行号交互写入(追加)显示空行 more和lesshead和tailhead…

虚拟环境管理

虚拟环境 在使用 Python 时我们一般使用“pip install 第三方包名”来安装第三方包,但是由于pip的特性,系统只能安装每个包的一个版本。而在实际开发中,可能同时开发多个项目,如:上图有三个项目;每个项目需…

【笔记】通过shell脚本自动部署项目(未完成)

然后将gitee仓库上的代码克隆至linux上 如果不知道gitee仓库怎么上传代码移步【笔记】如何在gitee仓库上传idea代码-CSDN博客 写到一半不想写了自己去复习p138-139吧

【QT】输入类控件

目录 Line Edit 核心属性 核心信号 正则表达式 示例:使用正则表达式验证输入框内容 示例:切换输入框密码模式下的显示状态 Text Edit 核心属性 核心信号 示例:获取多行输入框的内容同步显示到label 示例:获取文本的选…

微信小程序template模板引入

如图:temp.wxml是template引入的模板 在two.wxml中: import:是引入temp的页面让template中的内容显示出来在two页面中; include:是显示temp页面内容不在template包裹,template以外的view标签文字和不在view的文字让…

独家首发 | Matlab实现SVM-Transformer多变量回归预测

独家首发 | Matlab实现SVM-Transformer多变量回归预测 目录 独家首发 | Matlab实现SVM-Transformer多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SVM-Transformer多变量回归预测,SVM递归特征消除Transformer多输入单输出回归预测…

GOM引擎源码 完整可编译 带微端 附带基础附件

GOM引擎源码 完整可编译 带微端 附带基础附件 时间紧迫,无暇顾及,无意中得到即公布GameOfMir源码未测试,专业人事自行编译测试!非诚勿扰!源码下载:极速云

已解决org.omg.CORBA.portable.RemarshalException:在CORBA中需要重新编组的正确解决方法,亲测有效!!!

已解决org.omg.CORBA.portable.RemarshalException:在CORBA中需要重新编组的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 检查网络连接 …

递归----计算P函数

注意运算中的符号不能少&#xff01;&#xff01;&#xff01;&#xff01; * 必须体现出&#xff01;&#xff01;&#xff01;&#xff01; #include <stdio.h>double P( int n, double x );int main() {int n;double x;scanf("%d %lf", &n, &x);pri…

MMM高可用性部署

MMM高可用性部署 MMM概述MMMMMM架构 MMM部署实验环境实验拓扑图 数据库安装时间同步搭建 MySQL 多主多从模式修改MySQL配置文件配置主主复制Master1Master2配置复制 配置主从复制 安装配置 MySQL-MMM安装 MySQL-MMM对 MySQL-MMM 进行配置修改代理配置文件修改监控配置文件授权代…

软件著作权申请:开发者的重要保障与助力

一、引言 随着信息技术的飞速发展&#xff0c;软件产业已成为推动经济增长的重要动力。然而&#xff0c;在软件开发过程中&#xff0c;保护创作者的权益、防止抄袭和侵权行为显得尤为重要。软件著作权作为保护软件开发者权益的重要法律工具&#xff0c;其申请和登记流程对于软…

typescript学习回顾(五)

今天来分享一下ts的泛型&#xff0c;最后来做一个练习 泛型 有时候&#xff0c;我们在书写某些函数的时候&#xff0c;会丢失一些类型信息&#xff0c;比如我下面有一个例子&#xff0c;我想提取一个数组的某个索引之前的所有数据 function getArraySomeData(newArr, n:numb…

AI系统:未来科技的驱动力

引言 人工智能&#xff08;Artificial Intelligence, AI&#xff09;是一门研究如何使计算机模拟、延伸和扩展人类智能的学科。自20世纪50年代起&#xff0c;人工智能作为一项科学研究领域开始兴起。早期的AI系统主要集中在简单的任务&#xff0c;如棋类游戏和数学证明。随着计…

NLP篇1

场景&#xff1a;假设给你一篇文章。 目标&#xff1a;说白了&#xff0c;就是数学的分类。但是如何实现分类呢。下面将逐步一 一 分析与拆解。先把目标定好了和整体框架定好了。而不是只见树木而不见森林。 情感分类&#xff08;好评、差评&#xff0c;中性&#xff09; 整体…

Windows 安装 Terraform

Windows 安装 Terraform 下载 Terraform 压缩文件安装 Terraform测试 Terraform 下载 Terraform 压缩文件 访问 https://developer.hashicorp.com/terraform/install&#xff0c;下载 Windows 版安装文件&#xff0c; 安装 Terraform 解压下载 zip 包&#xff0c;然后将解压的…

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用

使用gitlab的CI/CD实现logseq笔记自动发布为单页应用 使用gitlab的CI/CD实现logseq笔记自动发布为单页应用如何实现将logseq的笔记发布成网站使用 logseq-publish-docker 实现手动发布使用gitlab的CI/CD实现自动发布过程中的问题及解决参考资料 使用gitlab的CI/CD实现logseq笔记…

2.IOC

IOC介绍 控制反转&#xff0c;把对象的创建和调用的过程&#xff0c;交给spring进行管理。 使用IOC目的&#xff1a;为了耦合度降低。 IOC底层原理 1&#xff09;xml解析 2&#xff09;工厂模式 3&#xff09;反射 IOC思想基于IOC容器完成&#xff0c;IOC容器底层就是对…

QT的编译过程

qmake -project 用于从源代码生成项目文件&#xff0c;qmake 用于从项目文件生成 Makefile&#xff0c;而 make 用于根据 Makefile 构建项目。 详细解释&#xff1a; qmake -project 这个命令用于从源代码目录生成一个初始的 Qt 项目文件&#xff08;.pro 文件&#xff09;。它…