【因果推断python】7_线性回归模型1

目录

你需要的只是回归


你需要的只是回归

在处理因果推断时,我们看到每个人有两个潜在的结果:Y_0 是个体如果不接受干预的结果和 Y_1是他或她接受干预的结果。将干预变量 T 设置为 0 或 1 的行为会实现其中一个潜在结果,并使我们不可能知道另一个结果。这导致个体处理效果\tau_i=Y_{1i}-Y_{0i} 是不可知的。

Y_i=Y_{0i}+T_i(Y_{1i}-Y_{0i})=Y_{0i}(1-T_i)+T_iY_{1i}

所以,现在,让我们专注于估计平均因果效应这个更简单的任务。考虑到这一点,我们接受这样一个事实,即有些人对干预的反应比其他人更好,但我们也接受我们无法知道他们是谁的事实。相反,我们将尝试看看,平均而言,干预是否有效。

ATE=E[Y_1-Y_0]

这将为我们提供一个简化的模型,具有固定的处理效果 Y_{1i}=Y_{0i}+\kappa。如果\kappa正的,我们会说,平均而言,干预具有积极的效果。即使有些人会对此做出不良反应,但平均而言,其影响将是积极的。

大家应该还记得,由于偏差的存在,我们不能简单地用平均值的差异 E[Y|T=1]-E[Y|T=0]来估计 E[Y_1-Y_0] 。当受干预与否的两方也受到干预本身以外的因素影响时,往往会出现偏差。下面对它们在潜在结果方面的差异 Y_0的拆解可以看到偏差的影响:E[Y|T=1]-E[Y|T=0]=\underbrace{E[Y_1-Y_0|T=1]}_{ATET}+\underbrace{\{E[Y_0|T=1]-E[Y_0|T=0]\}}_{BIAS}

之前,我们看到了如何通过随机实验,也被称为 随机对照试验 (RCT),的方法来消除偏差。 RCT 迫使接受干预的和未接受干预的人统计上一样,从而消除偏差的影响。我们还看到了如何在我们对干预效果的估计值上设置不确定性水平。也就是说,我们研究了在线教学与面对面教学的情况,其中 T=0代表面对面授课,T=1 代表在线课堂。学生被随机分配到这两种类型的讲座中的一种,然后评估他们在考试中的表现。我们已经建立了一个 A/B 测试函数,可以对两组人群进行比较,并提供平均干预效果的估计值,并为其提供一个置信区间。

现在,我们可以看看如何使用因果推理的主要工具,线性回归,来完成上述这些工作!这么想吧。如果把比较处理过和未处理过的平均值比作甜点里的苹果,那么线性回归就是甜点里的冷奶油提拉米苏。或者,如果直接比较干预和未干预对象的方法像是一条陈年老式的白麦面包,那么线性回归将是由酸面团制作,并由查德·罗伯逊本人亲自烘焙而成的外脆内软的乡村风格面包,好吃的不得了。

让我们看看这种美是如何运作的。在下面的代码中,我们希望将上述线课程与面对面课程的效能比较进行完全相同的分析。但是,与其进行获得置信区间所需的复杂数学运算,我们直接进行回归分析。更具体地说,我们估计以下模型:

y_i=\beta_0+\kappa\textit{Online}_i+u_i

请注意,online 指代干预与否的,因此是一个虚拟变量。当面对面教学时,干预变量值为 0,在线时则为 1。考虑到这一点,我们可以看到通过线性回归将得到 E[Y|T=0]=\beta_0 和 E[Y|T=1]=\beta_0+\kappa。其中\kappa 将是我们的 ATE。

import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
import graphviz as gr
%matplotlib inline

data = pd.read_csv("data/online_classroom.csv").query("format_blended==0")
result = smf.ols('falsexam ~ format_ol', data=data).fit()
result.summary().tables[1]

这个方法确实相当惊人。 我们不仅能够估计 ATE,而且还可以毫不费力地获得置信区间和 P 值! 更重要的是,我们可以看到回归方法做得正是我们希望它做得事情:比较 E[Y|T=0]E[Y|T=1]。 截距正是T=0,E[Y|T=0]时的样本均值,是否在线授课变量对应的系数正是均值的样本差值E[Y|T=1]E[Y|T=0]。 还不相信? 没问题。 你可以亲眼看看:

(data
 .groupby("format_ol")
 ["falsexam"]
 .mean())

format_ol
0    78.547485
1    73.635263
Name: falsexam, dtype: float64

正如预期的那样。如果在截距中加入ATE,即是否在线授课变量的参数估计,则得到处理后的样本均值:

78.547485+(-4.9122)=73.635263

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

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

相关文章

3G/4G无线视频监控系统在吊车操作中的应用

引言 随着科技的快速发展,无线视频监控技术在多个领域得到了广泛应用。在吊车操作中,3G/4G无线视频监控系统以其高效、实时的特性,为操作人员提供了更全面的视觉信息,从而大大提高了操作的安全性。本文将详细介绍3G/4G无线视频监…

Python代码:二十八、密码游戏

1、题目 牛牛和牛妹一起玩密码游戏,牛牛作为发送方会发送一个4位数的整数给牛妹,牛妹接收后将对密码进行破解。 破解方案如下:每位数字都要加上3再除以9的余数代替该位数字,然后将第1位和第3位数字交换,第2位和第4位…

docker 启动关闭,设置仓库地址

1. 配置/etc/docker/daemon.json cat /etc/docker/daemon.json# 内容 {"registry-mirrors": ["https://0nth4654.mirror.aliyuncs.com"],"insecure-registries": ["harbor.domain.io"] }2. 配置systemd启动文件 和方法1配置会有冲突&a…

wampserver安装与汉化

wampserver安装与汉化 文章目录 wampserver安装与汉化一、安装二、汉化1.升级软件并安装补丁 介绍: WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更…

Thread的stop和interrupt的区别

Thread.stop Thread.stop()方法已被废弃。 因为本质上它是不安全的,使用该方法可能会导致数据、资源不一致的问题, public class ThreadDemo {static class MyThread extends Thread {Overridepublic void run() {while (true) {try {Thread.sleep(10…

科研数据分析常见问题

许多使用SPSSAU进行初次科研数据分析的同学,可能对数据分析方法的深层原理和研究思路缺乏全面的把握。因此,当导师针对数据研究方法提出具体问题时,他们可能会感到些许困惑或难以立即给出满意的答复。鉴于此,SPSSAU汇总了一些常见…

语音助手拦截,拦截小秘书

呼叫中心业务场景下会遇到很多的语音助手和语音小秘书,还有一些漏话提醒、语音信箱等;大部分原因是由于主叫号码标记问题导致的局端和终端拦截策略,电话没有真实有效的触达并产生了通信费,这让很多业务场景下通信成本上涨据不完全…

【Springboot】——项目的创建与请求参数应用

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

<PLC><Python>基于pyqt5使用python与汇川PLC进行485串口通讯(自由协议)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…

Python知识点12---Python的I/O操作

提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的流(I/O)操作,最简单的其实就是输入和输出&#x…

flask-slqalchemy使用详解

目录 1、flask-sqlalchemy 1.1、flask_sqlalchemy 与sqlalchemy 的关系 1.1.1、 基本定义与用途 1.2、flask_sqlalchemy 的使用 1.2.1、安装相关的库 1.2.2、项目准备 1.2.3、创建ORM模型 1.2.3.1、使用db.create_all()创建表的示例 1.2.3.2、创建多表关联ORM模型 1.…

每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)

相遇 原题链接登录—专业IT笔试面试备考平台_牛客网 题目描述 运行代码 #include<iostream> using namespace std; int main(){ int a,b; cin>>a>>b; if(ab) { cout<<"p"; } else if(a - b 1 || (a 1 && b 3)){cout <<…

【图像增强处理工具】软件使用说明书

软件使用说明书 软件名称 图像增强处理工具 软件简介 该软件是一个基于 PySide6 和 OpenCV 的图像处理工具,用户可以通过 GUI 界面来执行图像的旋转、平移和镜像操作,并将处理后的图像保存到指定路径。 运行软件须知 确保 ui_form.py 文件在同一目录下,该文件包含了通…

鸿蒙实现汉字转拼音

1.使用三方库 pinyin-pro 地址&#xff1a;OpenHarmony三方库中心仓 亲测可用&#xff0c;一共三个关于 转pinyin的库&#xff0c;一个无法使用&#xff0c;另一个时间太久。 ohpm i pinyin-proimport { pinyin } from pinyin-pro;// 获取带音调拼音 pinyin(汉语拼音); // …

11Linux学习笔记

Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包&#xff08;软件&#xff09;1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包&#xff08;软件&#xff09; 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…

webman-admin多图上传预览和删除

前言 在webmen文档和论坛中都没找到多图上传的示例&#xff0c;自己找了一个&#xff0c;整合了一下凑合用 insert页面 引入css <link rel"stylesheet" href"/app/admin/admin/css/muti-upload.css" />muti-upload.css内容如下 .uploader-list .ha…

H6922 2.8C-40V (最低启动电压2.5V)升压BOOST恒压芯片 5V12V24V升压IC

H6922升压BOOST恒压芯片是一款2.8C-40V &#xff08;最低启动电压2.5V&#xff09;升压BOOST恒压芯片 5V12V24V升压IC 首先&#xff0c;H6922的宽输入电压范围&#xff08;2.8-40V&#xff09;和低启动电压&#xff08;最低2.5V&#xff09;使其能够适应不同复杂的电源环境。无…

Java网络编程(上)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java文件IO&#x1f649; &#x1f439;今日诗词:来如春梦几多时&#xff1f;去似朝云无觅处&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&a…

【前缀和 记忆化搜索】LeetCode1444. 切披萨的方案数

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 记忆化搜索 LeetCode1444. 切披萨的方案数 给你一个 rows x cols 大小的矩形披萨和一个整数 k &#xff0c;矩形包含两种字符&#xff1a; ‘A’ &#xff…

【ARM-Linux篇】u-boot编译

嵌入式Linux系统和PC完整的操作系统的对比如下&#xff1a; 一、u-boot简介 uboot是一种通用的引导加载程序&#xff0c;它可以用于多种嵌入式系统&#xff0c;支持多种操作系统&#xff0c;如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备&#xff08…