【Python实战因果推断】71_图因果模型6

news2024/9/22 5:34:53

目录

Positivity Assumption

An Identification Example with Data

Confounding Bias


Positivity Assumption

调整公式同样强调了正则性(positivity)的重要性。因为你正在对治疗和结果之间的差异在X的条件下求平均,你必须确保对于所有X的分组,治疗组和对照组中都有一定数量的样本,否则差异是没有定义的。更正式地说,治疗的条件概率需要严格大于0且小于1: 1 > P(T|X) > 0。即使正则性条件被违背,识别仍然是可能的,但这将要求你做出可能带来风险的外推。

An Identification Example with Data

由于这可能有些抽象,让我们通过一些具体数据来看看这一切是如何体现的。

为了继续我们的例子,假设你收集了六家公司的数据,其中三家在过去六个月的利润较低(1百万美元),而另外三家利润较高。正如你所猜测的,利润较高的公司更倾向于聘请顾问。三家高利润公司中有两家聘请了顾问,而三家低利润公司中只有一家聘请了顾问(如果样本量过少让你感到困扰,请假设这里的每个数据点实际上代表了10,000家公司):

 df = pd.DataFrame(dict(
 profits_prev_6m=[1.0, 1.0, 1.0, 5.0, 5.0, 5.0],
 consultancy=[0, 0, 1, 0, 1, 1],
 profits_next_6m=[1, 1.1, 1.2, 5.5, 5.7, 5.7],
 ))
 df

如果你仅仅比较聘请了顾问的公司与未聘请顾问的公司在未来六个月的利润(profits_next_6m),你会得到1.66百万美元的利润差额:

 (df.query("consultancy==1")["profits_next_6m"].mean()
 - df.query("consultancy==0")["profits_next_6m"].mean())
 1.666666666666667

但你了解得更多。这并不是咨询服务对公司业绩的因果效应,因为过去表现更好的公司在聘请顾问的群体中被过度代表了。为了获得顾问影响的无偏估计,你需要关注具有类似过往业绩的公司。如你所见,这样得出的结果更加谨慎:

 avg_df = (df
 .groupby(["consultancy", "profits_prev_6m"])
 ["profits_next_6m"]
 .mean())
 avg_df.loc[1] - avg_df.loc[0]
 profits_prev_6m
 1.0 0.15
 5.0 0.20
 Name: profits_next_6m, dtyp

如果你对这些效应取加权平均,其中权重是各组的大小,你最终会得到一个无偏的ATE估计值。在这里,由于两组的规模相等,这只是一个简单的平均值,给出的ATE大约是175,000美元。因此,如果你是一名经理,在决定是否聘请顾问时面对上述数据,你可以得出结论,顾问对未来利润的影响约为175,000美元。当然,为了做到这一点,你必须援引CIA(条件独立性假设)。也就是说,你必须假设过去的业绩是聘请顾问和未来业绩之间唯一的共同原因。

你刚刚经历了一个完整的例子,将你对因果机制的信念编码到一个图中,并使用该图找出你需要对哪些变量进行条件化以估计ATE,甚至在没有随机化治疗的情况下也能做到。然后,你看到了一些数据,按照调整公式估计了ATE,并假设了条件独立性。这里使用的工具相当通用,将会指导你解决许多即将到来的因果问题。

Confounding Bias

第一个重要的偏差来源是混杂偏倚。这是我们迄今为止一直在讨论的偏差,现在我们只是给它起了个名字。当存在一个开放的后门路径,允许关联非因果地流动时,通常是因为治疗和结果共享一个共同的原因,就会发生混杂。例如,假设你在人力资源部门工作,你想知道你们新的管理培训项目是否提高了雇主的参与度。然而,由于培训是自愿的,你认为只有那些已经表现出色的经理才会参加培训,而最需要培训的人却不会参加。当你衡量接受过培训的经理手下团队的参与度时,它远高于那些未参加培训的经理手下团队的参与度。但很难判断这其中有多少是因果关系造成的。由于治疗和结果之间存在共同的原因,无论是否有因果效应,它们都会一起变化。

为了识别那个因果效应,你需要关闭治疗和结果之间的所有后门路径。如果你做到了这一点,剩下的唯一效应就是直接效应T->Y。在我们的例子中,你可以设法控制经理在参加培训之前的素质。在这种情况下,结果的差异将仅归因于培训,因为治疗组和对照组之间经理在培训前的素质将保持一致。简而言之,为了调整混杂偏倚,你需要调整治疗和结果的共同原因:

不幸的是,不可能总是调整所有共同的原因。有时,存在未知的原因或者已知但无法测量的原因。经理素质就是一个例子。尽管付出了所有努力,我们至今仍未弄清楚如何衡量管理质量。如果你无法观察到经理的素质,那么你就无法对其条件化,因此培训对参与度的影响是无法识别的。

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

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

相关文章

【32单片机篇】项目:WIFI天气预报

一、项目需求 使用 ESP8266 通过 HTTP 获取天气数据(心知天气),并显示在 OLED 屏幕上。 按键 1 :循环切换今天/明天/后天天气数据; 按键 2 :更新天气 二、项目框图 三、硬件部分 四、项目源码及实现 1.项…

MySQL是怎样运行的——第1章 初识MySQL

文章目录 1. 1 MySQL的客户端/服务器架构1.2 安装MySQL(略)1.3 启动MySQL服务器程序1.4 启动MySQL客户端程序1.5 客户端与服务器连接的过程1.6 服务器处理客户端请求 1. 1 MySQL的客户端/服务器架构 MySQL的运行过程就是C/S架构。多个客户端程序连接到服…

洛谷 P1868 饥饿的奶牛

原题 题目描述 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字。 现用汉语翻译为: 有 N 个区间,每个区间x,y 表示提供的x∼y 共y−x1 堆优质牧草。你可以选择任意区间但不…

dockerfile定制镜像 docker-compose编排容器

1 dockerfile dockerfile本质上是利用了Linux系统的挂载(UnionFS),将多个目录挂载到同一目录下,实现镜像的层叠式结构,从而实现功能聚合。 1.1 一个最简单的程序 package mainimport "fmt"func main() {f…

【leetcode详解】覆盖所有点的最少矩形数目(C++思路详解)

思路详解: 0. 题目情境并未限制矩形高度,故矩形数目的判断只和点的横坐标有关 1. 为了不重不漏地考虑到所有点,故笔者选择首先将二维数组中的点按横坐标的大小排序 //说明:本来笔者以为需要自定义sort排序,后来发现…

智慧水务项目(三)django(drf)+angular 18 创建系统管理的用户、角色、部门、权限管理等model

一、说明 添加各model 添加requirement.txt中的库 添加env.py中的动态配置 二、env.py全文 import os from smartwater.settings import BASE_DIR# # # ************** mysql数据库 配置 ************** # # # # 数据库地址 DATABASE_ENGINE "django.db.backends.…

SQL查询注意事项

判断字符串长度要用函数CHAR_LENGTH(str),他会返回字符串的长度,如果使用length(str)函数,在对中文字符或特殊字符时,返回的是在当前编码下该字符的字节数。如在mysql中的utf-8编码情况下,length(¥)返回结果…

ASUS/华硕幻14 2021 GA401Q系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows10 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-62 - 判断元素是否可操作

软件测试微信群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 有些页面元素的生命周期如同流星一闪,昙花一现。我们也不知道这个元素在没在页面中出现过,为了捕获这一美好瞬间,让其成为永恒。我们就来判…

HiFi桌搭的新选择,更符合发烧友使用习惯的飞傲K19

飞傲的便携设备很多人都用过,性价比很高,设计也很精致,并且功能上针对不同的需求也有丰富的选择,而在针对耳机的台式设备方面,飞傲同样非常有实力,我最近用了一款飞傲K19,这台设备不仅功能完备&…

ZYNQ SDK/Vitis undefined reference to `sin‘ wave.c

问题 ZYNQ SDK或者VItis在使用到sin函数时编译报错: undefined reference to sin wave.c问题解决: 右键点开C/C Build Settings 选项 在Settings 选项的Libraries 添加 m,点击OK

用Java手写jvm之模拟运行时数据区的虚拟机栈,局部变量表,操作数栈等

写在前面 下图是jvm的运行时数据区内存图: ,本文要模拟的是虚拟机栈的相关内存结构的交互过程。 1:正文 因为我们这里模拟的是线程执行方法调用的过程,所以这里先来定义一个线程对象: public class Thread {// 程…

卸载Windows软件的正确姿势,你做对了吗?

前言 今天有小伙伴突然问我:她把软件都卸载了,但是怎么软件都还在运行? 这个问题估计很多小伙伴都是遇到过的,对于电脑小白来说,卸载Windows软件真的真的真的是一件很难的事情。所以,今天咱们就来讲讲&am…

springboot贫困生认定和资助管理系统-计算机毕业设计源码71367

摘要 本文介绍了一个基于Java的贫困生认定和资助管理系统的设计与实现。该系统旨在通过自动化、智能化的管理方式,提高贫困生认定和资助工作的效率与准确性。系统采用Java作为主要开发语言,结合了数据库技术和Web开发技术,实现了贫困生信息的…

运维之路----计算机基础

目录 ​编辑 一,计算机的组成 1,硬件 2,软件 二,计算机中的一些概念 冯诺依曼体系 二进制 摩尔定律 计算机的分类 1,按照规模分 2,按照功能分 拓扑 存储器的层次结构 并行与并发 缓存 操作系…

实例分割-Yolact/Yolact++训练自己数据集

前言 本文主要用于记录实例分割模型yolact和yolact的环境配置,以及成功训练自己数据集的整个过程~ 注意:这里要重点提醒一下,DCNv2对RTX系列不友好,我第一次使用4090服务器,编译持续有问题,被迫放弃&#…

C++|设计模式(八)|⭐️工厂模式?错!是工厂模式群!

本文内容全部来源于B站,仅做个人学习使用: 【工厂模式?错!是工厂模式群!】 在此之前,笔者曾经发过两篇关于工厂模式的博客: C|设计模式(二)|简单…

软件测试---Jmeter

一、简介 二、安装与启动 (1)安装 安装包:通过百度网盘分享的文件:jmeter环境.rar 链接:https://pan.baidu.com/s/1OB0IP3W7hqUjAGj_5F56sQ

vue3 自定义指令 自动获取节点的width 和 height

想写一个依赖库, 但是需要监听组件的width和height这些数据, 就找到了ResizeObserver这个方法,不想每次使用的时候都要创建和销毁 ResizeObserver, 索性就直接封装成为一个指令用来获取想要的信息, ResizeObserver对象上能够获取的信息还是非常多的, 除了width, height 还有 to…