【因果推断python】16_工具变量2

news2024/11/20 19:39:05

目录

出生季度和教育对工资的影响

第一阶段


出生季度和教育对工资的影响

到目前为止,我们一直将这些工具视为一些神奇的变量 Z,它们具有仅通过干预变量影响结果的神奇特性。老实说,好的工具变量来之不易,我们不妨将它们视为奇迹。让我们说它不适合胆小的人。有传言说,芝加哥经济学院的酷孩子们谈论他们是如何在酒吧里想出这种或那种工具变量的。

不过,我们确实有一些有趣的工具示例,可以让事情变得更具体一些。我们将再次尝试估计教育对工资的影响。为此,我们将使用该人的出生季度作为工具 Z

这个想法利用了美国强制出勤法。通常,他们声明孩子必须在他们入学当年的 1 月 1 日之前满 6 岁。因此,年初出生的孩子入学年龄较大。强制出勤法还要求学生在学校上学直到他们年满 16 岁,届时他们在法律上被允许退学。结果是,与年初出生的人相比,年末出生的人平均受教育年限更长。如果我们接受出生季度与能力因素无关,即它不会混淆教育对工资的影响,我们可以将其用作工具。换句话说,我们需要相信出生季度对工资没有影响,除了对教育的影响。如果你不相信占星术,这是一个非常有说服力的论点。

g = gr.Digraph()

g.edge("能力", "教育")
g.edge("能力", "工资")
g.edge("教育", "工资")
g.edge("出生季度", "教育")
g

为了进行这种分析,我们可以使用来自三次十年一次的人口普查的数据,这些数据与Angrist和Krueger 在他们关于IV的文章中使用的数据相同。该数据集包含有关我们的结果变量,即工资取对数的结果,以及我们的干预变量,即受教育年限的信息。它还包含我们的工具变量,即出生季度,以及其他控制变量的数据,例如出生年份和出生状态。

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

第一阶段

在我们使用出生季度作为工具变量之前,我们需要确保它是有效的。这意味着我们支持工具变量的两个假设:

  1. Cov(Z\text{,}T)\neq0。这是说我们应该有一个强大的第一阶段,或者工具变量确实会影响干预变量。
  2. Y\perp Z|T.这是排除限制,声明工具变量Z仅通过干预T影响结果Y。

幸运的是,第一个假设是可以验证的。我们从数据中可以看出Cov(Z,T)不为零。在我们的例子中,如果出生的季度确实是一个工具变量,就像我们所说的那样,我们应该期望在一年中最后一个季度出生的人比年初出生的人有更多的受教育时间。在运行任何统计测试来验证这一点之前,让我们绘制我们的数据并亲眼看到它。

group_data = (data
              .groupby(["year_of_birth", "quarter_of_birth"])
              [["log_wage", "years_of_schooling"]]
              .mean()
              .reset_index()
              .assign(time_of_birth = lambda d: d["year_of_birth"] + (d["quarter_of_birth"])/4))

plt.figure(figsize=(15,6))
plt.plot(group_data["time_of_birth"], group_data["years_of_schooling"], zorder=-1)
for q in range(1, 5):
    x = group_data.query(f"quarter_of_birth=={q}")["time_of_birth"]
    y = group_data.query(f"quarter_of_birth=={q}")["years_of_schooling"]
    plt.scatter(x, y, marker="s", s=200, c=f"C{q}")
    plt.scatter(x, y, marker=f"${q}$", s=100, c=f"white")

plt.title("Years of Education by Quarter of Birth (first stage)")
plt.xlabel("Year of Birth")
plt.ylabel("Years of Schooling");

值得注意的是,在一年中的四分之一之后,学校教育的年份有一个季节性的模式。从图形上我们可以看到,一年中第一季度出生的人的受教育程度几乎总是低于最后一个季度出生的人(毕竟,一旦我们控制了出生年份,那些晚年出生的人通常受教育程度更高)。

为了更严格一点,我们可以将第一阶段作为线性回归运行。我们首先将出生季度转换为虚拟变量:

factor_data = data.assign(**{f"q{int(q)}": (data["quarter_of_birth"] == q).astype(int)
                             for q in data["quarter_of_birth"].unique()})

factor_data.head()

为简单起见,现在只使用最后一个季度,即Q4,作为工具。我们将使用干预变量:受教育年限,对工具变量:出生季度,进行回归。这将向我们展示出生在哪个季度是否确实像我们在上图中看到的那样对教育时间产生了积极影响。我们还需要在这里控制出生年份,我们将添加出生状态作为额外的控制。

first_stage = smf.ols("years_of_schooling ~ C(year_of_birth) + C(state_of_birth) + q4", data=factor_data).fit()

print("q4 parameter estimate:, ", first_stage.params["q4"])
print("q4 p-value:, ", first_stage.pvalues["q4"])

q4 parameter estimate:,  0.10085809272785906
q4 p-value:,  5.464829416638474e-15

看起来,在一年中最后一个季度出生的人平均比在一年中其他季度出生的人多受教育0.1年。p 值接近于零。这结束了关于出生在哪个季度是否导致更多或更少受教育年限的案例。

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

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

相关文章

Leetcode - 周赛400

目录 一,3168. 候诊室中的最少椅子数 二,3169. 无需开会的工作日 三,3170. 删除星号以后字典序最小的字符串 四,3171. 找到按位与最接近 K 的子数组 一,3168. 候诊室中的最少椅子数 本题是一道模拟题,直…

排序方法——《选择排序》

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:Yan. yan.                        …

HCIP-Datacom-ARST自选题库_10_多种协议多选【24道题】

1.如图所示,PE1和PE2之间通过LoopbackO接口建立MP-BGP邻居关系,在配完成之后,发现CE1和CE2之间无法互相学习路由,下列哪些选项会造成该问题的出现? PE1或PE2未在BGP-VPNV4单播地址族视图使能邻居A PE1或PE2上的VPN实例参数配置错…

htb_solarlab

端口扫描 80,445 子域名扫描 木有 尝试使用smbclient连接445端口 Documents目录可查看 将Documents底下的文件下载到本地看看 xlsx文件里有一大串用户信息,包括username和password 先弄下来 不知道在哪登录,也没有子域名,于是返回进行全端…

第N4周:中文文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、预备知识 中文文本分类和英文文本分类都是文本分类,为什么要单独拎出来个中文文本分类呢? 在自然语言处理(NLP&#x…

SickOS1.1 - Shellshock原理和利用过程精讲

SickOS1.1的另一种思路;用另一种方法打透这台机器 Nikto扫描 正常都是-h扫描;有代理就用-useproxy 指向的代理ip:端口 nikto -h 192.168.218.157 -useproxy 192.168.218.157:3128apache版本,有点低,现在都是2.4.54版本了&#x…

PDF批量加水印 与 去除水印实践

本文主要目标是尝试去除水印,但是为了准备测试数据,我们需要先准备好有水印的pdf测试文件。 注意:本文的去水印只针对文字悬浮图片悬浮两种特殊情况,即使是这两种情况也不代表一定都可以去除水印。 文章目录 批量添加透明图片水印…

OpenStreetMap部署(OSM)

参考:https://github.com/openstreetmap/openstreetmap-website/blob/master/DOCKER.md OpenStreeMap 部署 操作系统建议使用 Ubuntu 22 版本 安装 Docker # 更新软件包索引: sudo apt-get update # 允许APT使用HTTPS: sudo apt-get inst…

TypeScript的never类型的妙用

never类型介绍 在 TypeScript 中,"never" 是一个表示永远不会发生的值类型。 使用场景 "never" 类型通常用于以下几种情况: 1、函数返回类型:当一个函数永远不会返回任何值(比如抛出异常或者无限循环&…

使用 MDC 实现日志链路跟踪,包教包会!

在微服务环境中,我们经常使用 Skywalking、Spring Cloud Sleut 等去实现整体请求链路的追踪,但是这个整体运维成本高,架构复杂,本次我们来使用 MDC 通过 Log 来实现一个轻量级的会话事务跟踪功能,需要的朋友可以参考一…

数据库与缓存⼀致性⽅案

数据库与缓存⼀致性⽅案 1、背景2、数据⼀致性⽅案设计3、数据⼀致性⽅案流程图4、关键代码4.1、 处理数据⼀致性的消息队列⼊⼝4.2、数据⼀致性配置的常量信息 1、背景 现有的业务场景下,都会涉及到数据库以及缓存双写的问题,⽆论是先删除缓存&#xf…

2024年度CCF-阿里云瑶池科研基金正式发布

2024年度CCF-阿里云瑶池科研基金正式发布 截止时间:2024年7月1日24:00(北京时间) 欢迎CCF会员积极申报 “CCF-阿里云瑶池科研基金”由CCF与阿里云计算有限公司于2024年联合设立,专注于数据库领域,旨在为领域学者提供…

FarmersWorld农民世界源码开发:0撸卷轴+潮玩模式

一、引言 随着科技的发展,游戏产业日益壮大,一种新型的游戏形式——零撸游戏应运而生。本文将深入探讨FarmersWorld农民世界源码开发,以其独特的0撸卷轴潮玩模式,为玩家带来全新的游戏体验。 二、源码开发的专业性和深度 Farmer…

找出字符串中出现最多次数的字符以及出现的次数

str.charAt(i) 是JavaScript中获取字符串中特定位置字符的方法&#xff0c;表示获取当前的字符。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

进入新公司有焦虑感怎么办?

前因 前两天技术交流群里有童鞋问了一个很有意思的问题&#xff0c;他问如何克服进入新公司的焦虑感&#xff1f;很多热心的童鞋都纷纷支招&#xff0c;比如 “主动干活”、“专注干活”、“让时间冲淡焦虑感”、……等等&#xff0c;这些都很有道理&#xff0c;不过&#xff…

win11右键二级菜单恢复成win10一级菜单

winr输入“cmd”回车&#xff0c;打开cmd窗口&#xff0c;输入如下命令&#xff0c;并回车。reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve提示cuccessfully&#xff0c;表示操作成功。重启电脑即可。 如下…

NEJM新英格兰医学期刊文献在家如何查阅下载

今天收到的求助文献中有一篇是NEJM新英格兰医学期刊中的一篇文献&#xff0c;篇名“Osimertinib after Chemoradiotherapy in Stage III EGFR -Mutated NSCLC” 首先我们先简单了解一下NEJM新英格兰医学期刊&#xff1a; NEJM新英格兰医学期刊&#xff1a;New England Journa…

排序进阶----快速排序

当我们写了插入和希尔排序后&#xff0c;我们就应该搞更难的了吧。大家看名字就知道我们这篇博客的内容了吧。而且从名字上来看。快速排序就很快吧。那么为什么这个排序怎么能叫快速排序啊。我们希尔排序不是很快嘛。那么我们的快速排序肯定是有特殊之处嘞。不然这就太自负了。…

Qt Group宣布更新许可协议

本文翻译自&#xff1a;Qt Group Launches Updates of License Agreements 原文作者&#xff1a;Qt Group产品管理总监Santtu Ahonen 为了简化Qt Group的许可协议并提升整体的可读性&#xff0c;我们对商业合同文档的结构进行了更新。这一变更对Qt Group许可其商业产品和服务的…

SpringCache 缓存 - @Cacheable、@CacheEvict、@CachePut、@Caching、CacheConfig 以及优劣分析

目录 SpringCache 缓存 环境配置 1&#xff09;依赖如下 2&#xff09;配置文件 3&#xff09;设置缓存的 value 序列化为 JSON 格式 4&#xff09;EnableCaching 实战开发 Cacheable CacheEvict CachePut Caching CacheConfig SpringCache 的优势和劣势 读操作…