【因果推断python】36_断点回归2

目录

RDD 估计

内核加权


RDD 估计

RDD 依赖的关键假设是阈值处潜在结果的平滑性。用比较正式地表述来说,当运行变量从右侧和左侧接近阈值时,潜在结果的极限应该是相同的。

\lim_{r\to c^-}E[Y_{ti}|R_i=r]=\lim_{r\to c^+}E[Y_{ti}|R_i=r]

如果这是真的,我们可以在阈值处找到因果关系

\begin{aligned} \lim_{r\to c^+}E[Y_{ti}|R_i=r]-\lim_{r\to c^-}E[Y_{ti}|R_i=r]& =\lim_{r\to c^+}E[Y_{1i}|R_i=r]-\lim_{r\to c^-}E[Y_{0i}|R_i=r] \\ &=E[Y_{1i}|R_i=r]-E[Y_{0i}|R_i=r] \\ &=E[Y_{1i}-Y_{0i}|R_i=r] \end{aligned}

从其本身意义来说,这是一种局部平均干预效果(LATE),因为我们只能在阈值处知道它。在这种情况下,我们可以将 RDD 视为局部随机试验。对于那些处于阈值附近的人来说,干预可能会采取任何一种方式,有些人可能低于门槛,有些人则可能超过了门槛。在我们的示例中,在同一时间点,有些人刚刚超过 21 岁,有些人刚刚低于 21 岁。决定这一点的是某人是否在几天后出生,这是非常随机的。基于这个原因,RDD 提供了一个非常引人注目的因果故事。它不是 RCT 的黄金标准,但很接近。

现在,要估计阈值处的干预效果,我们需要做的就是估计上面公式中的两个极限值并进行比较。最简单的方法是运行线性回归

为了使其工作,我们将一个高于阈值的虚拟变量与运行变量进行交叉

y_i=\beta_0+\beta_1r_i+\beta_21r_i>c+\beta_31r_i>cr_i

本质上,这与在阈值之上拟合线性回归并在阈值之下拟合另一个线性回归相同。参数 \beta_{0} 是低于阈值的回归的截距,而 \beta_0+\beta_2 是高于阈值的回归的截距。

这就是将运行变量在阈值处取零的技巧发挥作用的地方。在这个预处理步骤之后,阈值变为零。这导致截距 \beta_{0} 成为阈值处的预测值,用于低于它的回归。换句话说,\beta_0=\lim_{r\to c^-}E[Y_{ti}|R_i=r]。同理,\beta_0+\beta_2 是上述结果的极限。威奇的意思是

\lim_{r\to c^+}E[Y_{ti}|R_i=r]-\lim_{r\to c^-}E[Y_{ti}|R_i=r]=\beta_2=E[ATE|R=c]

下面的代码展示了当我们想估计在21 岁时饮酒对死亡造成的影响。

rdd_df = drinking.assign(threshold=(drinking["agecell"] > 0).astype(int))

model = smf.wls("all~agecell*threshold", rdd_df).fit()

model.summary().tables[1]

这个模型告诉我们,随着饮酒,死亡率会增加 7.6627 个百分点。 另一种说法是,酒精会使各种原因的死亡几率增加 8% ((7.6627+93.6184)/93.6184)。 请注意,这也为我们的因果效应估计提供了标准误差。 在这种情况下,效果具有统计显着性,因为 p 值低于 0.01。

如果我们想直观地验证这个模型,我们可以在我们拥有的数据上显示预测值。 您可以看到,就好像我们有 2 个回归模型:一个用于高于阈值的模型,一个用于低于阈值的模型。

ax = drinking.plot.scatter(x="agecell", y="all", color="C0")
drinking.assign(predictions=model.fittedvalues).plot(x="agecell", y="predictions", ax=ax, color="C1")
plt.title("Regression Discontinuity");

如果我们对其他原因做同样的事,这是我们会得到的结果。

plt.figure(figsize=(8,8))

for p, cause in enumerate(["all", "mva", "suicide"], 1):
    ax = plt.subplot(3,1,p)
    drinking.plot.scatter(x="agecell", y=cause, ax=ax)
    m = smf.wls(f"{cause}~agecell*threshold", rdd_df).fit()
    ate_pct = 100*((m.params["threshold"] + m.params["Intercept"])/m.params["Intercept"] - 1)
    drinking.assign(predictions=m.fittedvalues).plot(x="agecell", y="predictions", ax=ax, color="C1")
    plt.title(f"Impact of Alcohol on Death: {np.round(ate_pct, 2)}%")

plt.tight_layout()

RDD 告诉我们,酒精会使自杀和车祸死亡的几率增加 15%,这是一个相当大的数字。如果我们想尽量减少死亡率,这些结果是不降低饮酒年龄的有力论据。

内核加权

回归不连续性在很大程度上依赖于线性回归的外推特性。由于我们正在查看 2 条回归线的开头和结尾处的值,因此我们最好正确设置这些限制。可能发生的情况是,回归可能过于关注拟合其他数据点,而代价是在阈值处拟合不佳。如果发生这种情况,我们可能会得到错误的治疗效果衡量标准。

解决此问题的一种方法是为更接近阈值的点赋予更高的权重。有很多方法可以做到这一点,但一种流行的方法是使用 triangular kernel 重新加权样本

K(R,c,h)=|R-c|\leq h*(1-\frac{|R-c|}h)

这个内核的第一部分是我们是否接近阈值的指示函数。多近?这由带宽参数 hℎ 确定。这个内核的第二部分是一个加权函数。随着我们远离阈值,权重变得越来越小。这些权重除以带宽。如果带宽很大,则权重会以较慢的速度变小。如果带宽很小,权重很快就会变为零。

为了更容易理解,下面是这个内核应用于我们的问题的权重。我在这里将带宽设置为 1,这意味着我们只会考虑来自不超过 22 岁且不低于 20 岁的人的数据。

def kernel(R, c, h):
    indicator = (np.abs(R-c) <= h).astype(float)
    return indicator * (1 - np.abs(R-c)/h)
plt.plot(drinking["agecell"], kernel(drinking["agecell"], c=0, h=1))
plt.xlabel("agecell")
plt.ylabel("Weight")
plt.title("Kernel Weight by Age");

如果我们将这些权重应用于我们最初的问题,酒精的影响会变得更大,至少对于死于"所有原因"的情况是如此。 它从 7.6627 跃升至 9.7004。 结果仍然非常显著。 另外,请注意我使用的是 wls 而不是 ols

model = smf.wls("all~agecell*threshold", rdd_df,
                weights=kernel(drinking["agecell"], c=0, h=1)).fit()

model.summary().tables[1]

ax = drinking.plot.scatter(x="agecell", y="all", color="C0")
drinking.assign(predictions=model.fittedvalues).plot(x="agecell", y="predictions", ax=ax, color="C1")
plt.title("Regression Discontinuity (Local Regression)");

plt.figure(figsize=(8,8))
weights = kernel(drinking["agecell"], c=0, h=1)

for p, cause in enumerate(["all", "mva", "suicide"], 1):
    ax = plt.subplot(3,1,p)
    drinking.plot.scatter(x="agecell", y=cause, ax=ax)
    m = smf.wls(f"{cause}~agecell*threshold", rdd_df, weights=weights).fit()
    ate_pct = 100*((m.params["threshold"] + m.params["Intercept"])/m.params["Intercept"] - 1)
    drinking.assign(predictions=m.fittedvalues).plot(x="agecell", y="predictions", ax=ax, color="C1")
    plt.title(f"Impact of Alcohol on Death: {np.round(ate_pct, 2)}%")

plt.tight_layout()

除了自杀之外,似乎使用核函数加权会使对酒精的负面影响更大。再同样的,如果我们想将死亡率降到最低,我们不应该建议降低法定饮酒年龄,因为酒精对死亡率有明显的影响。

这个简单的案例涵盖了当断点回归完美运行​​时会发生什么。接下来,我们将看到一些我们应该运行的诊断步骤,以检查我们对 RDD 的信任程度,并讨论一个我们非常关心的话题:教育对收入的影响。

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

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

相关文章

统计信号处理基础 习题解答10-16

题目&#xff1a; 对于例10.1&#xff0c;证明由观察数据得到的信息是&#xff1a; 解答&#xff1a; 基于习题10-15的结论&#xff0c;&#xff0c;那么&#xff1a; 而根据习题10-15的结论&#xff1a; 此条件概率也是高斯分布&#xff0c;即&#xff1a; 根据相同的计算&a…

为什么都在避坑抖店?现阶段小白真的很难做起来吗?现状分析

我是王路飞。 如果有想做抖店的&#xff0c;你们可能都发现了一个现象。 那就是现在很多抖店商家都在劝告新手小白&#xff0c;不要入局抖店了&#xff0c;都在劝避坑。 难道现阶段新手小白入局抖音小店&#xff0c;真的很难做起来吗&#xff1f; 我给你们分析下抖店现状&a…

刷题训练之链表

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握链表算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题训…

【Quartus 13.0】EP1C3144I7 部署4*6矩阵键盘

仿照 正点原子 的 Sample 修改 V2手册 P266 没有用这个 给出的手动按键控制的矩阵模块 为 4*6 矩阵键盘外接模块 每一个按键自带led&#xff0c;所以对应的接口是合并在一起的一个引脚 按下后 LED 亮&#xff0c;vice versa 底部 LED*8 目前不清楚有什么用 或许可以变成 16进…

warning LNK4017: DESCRIPTION 语句不支持目标平台;已忽略

文章目录 warning LNK4017: DESCRIPTION 语句不支持目标平台&#xff1b;已忽略概述笔记备注END warning LNK4017: DESCRIPTION 语句不支持目标平台&#xff1b;已忽略 概述 基于ATL的COM DLL导出函数&#xff0c;无法用__declspec(dllexport)直接在函数上标记为导出函数。 只…

基础-01-计算机网络概论

一. 计算机网络的发展与分类 1.计算机网络的形成与发展 计算机网络&#xff1a;计算机技术与通信技术的结合 ICTITCT 2.计算机网络标准阶段 3.计算机网络分类1:通信子网和资源子网 通信子网:通信节点(集线器、交换机、路由器等)和通信链路(电话线、同轴电缆、无线电线路、卫…

省去烦恼!轻松实现一台电脑登录多个微信号的秘诀揭秘!

你知道如何在同一台电脑上登录多个微信号&#xff0c;并实现聚合聊天吗&#xff1f; 今天&#xff0c;我将分享一个多微管理神器——个微管理系统&#xff0c;帮助你解决这一问题&#xff01; 1、多号同时登录&#xff0c;聚合聊天 无论你有多少个微信号&#xff0c;都可以一…

Linux文件系统【真的很详细】

目录 一.认识磁盘 1.1磁盘的物理结构 1.2磁盘的存储结构 1.3磁盘的逻辑存储结构 二.理解文件系统 2.1如何管理磁盘 2.2如何在磁盘中找到文件 2.3关于文件名 哈喽&#xff0c;大家好。今天我们学习文件系统&#xff0c;我们之前在Linux基础IO中研究的是进程和被打开文件…

06.VisionMaster 机器视觉找直线

VisionMaster 机器视觉找直线 直线查找主要用于查找图像中具有某些特征的直线&#xff0c;利用已知特征点形成特征点集&#xff0c;然后拟合成直线。 工具栏&#xff1a;定位-》直线查找 参数设置 海康的这些工具使用上大部分参数是差不多了&#xff0c;以前说过的说不多说了…

Elixir学习笔记——别名、需要、导入和使用

为了便于软件重用&#xff0c;Elixir 提供了三个指令&#xff08;alias、require 和 import&#xff09;以及一个名为 use 的宏&#xff0c;总结如下&#xff1a; # 为模块添加别名&#xff0c;以便可以将其称为 Bar 而不是 Foo.Bar alias Foo.Bar, as: Bar # 需要模块才能使…

2024 年最新使用 Node 搭建QQ开放平台官方 QQ 频道机器人详细教程(更新中)

注册 QQ 开放平台账号 QQ 开放平台是腾讯应用综合开放类平台&#xff0c;包含 QQ 机器人、QQ 小程序、QQ 小游戏 等集成化管理&#xff0c;也就是说你注册了QQ 开放平台&#xff0c;你开发 QQ 机器人还是 QQ 小程序都是在这个平台进行部署上线和管理。 如何注册 QQ 开放平台账…

Internet Download Manager ( 极速下载器 ) 序列号注册码 IDM下载器注册机中文激活破解版

IDM下载器(Internet Download Manager)是一款专业的下载管理软件&#xff0c;它通过多线程技术和智能文件分段技术&#xff0c;有效提升下载速度&#xff0c;并支持断点续传&#xff0c;还具有计划下载功能&#xff0c;用户可以设置特定的下载时间&#xff0c;非常适合需要在特…

C#批量设置海康和大华录像机NVR,GB28181的通道编码.

我经常要把小区海康或者大华的硬盘录像机推送到自己搭建的gb28181监控平台,每次几百个摄像头编码,有点头大,就用了1个多周写了个批量设置海康和大华硬盘录像机的通道编码的程序,海康和大华的SDK简直不是人看的. 太乱了. 大华读取通道编码的代码 /// <summary>/// 获取通道…

虚拟机上安装centos7

目录 1&#xff0c;下载centos镜像2&#xff0c;在VMware中新建虚拟机3&#xff0c;为新创建的虚拟机挂载镜像4&#xff0c;安装centos75&#xff0c;配置网络 1&#xff0c;下载centos镜像 直接下载地址 https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.8.2003/isos/x8…

干部选拔任用的六条原则

在干部选拔任用的过程中&#xff0c;为确保选拔出的干部能够真正符合党和人民的期望&#xff0c;必须遵循以下六条原则&#xff1a; 一、党管干部原则 党管干部原则是指在整个干部选拔任用过程中&#xff0c;党要发挥总揽全局、协调各方的领导作用&#xff0c;确保选拔出的干…

[渗透测试学习] Runner-HackTheBox

Runner-HackTheBox 信息搜集 nmap扫描端口 nmap -sV -v 10.10.11.13扫描结果如下 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0) 80/tcp open http nginx 1.18.0 (Ubuntu) 8000…

Echarts图表:地图都有哪些配置项,一文告诉你

地图是可视化大屏中最常见的组件&#xff0c;echart图表中关于地图的组件非常多&#xff0c;那么该如何进行配置&#xff0c;让地图和自己的设计稿保持一致。贝格前端工场为大家列举一下。 charts地图图表在配置项中有以下常用的配置选项&#xff1a; title&#xff1a;图表标…

TCP协议报头详解

目录 前言 TCP特点 TCP报头 1.源端口和目的端口 2.序号 3.确认号 4.数据偏移 5.保留 6.控制位 ① 紧急URG&#xff08;URGent&#xff09; ② 确认ACK&#xff08;ACKnowledgment&#xff09; ③ 推送PSH&#xff08;PuSH&#xff09; ④复位RST&#xff08;ReSeT&…

【二】【动态规划NEW】91. 解码方法,62. 不同路径,63. 不同路径 II

91. 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可能有多种方法&#xff…

AI Vs 作家?Groqbook: AI写书神器,使用 Groq 和 Llama3 几秒生成一本完整的书籍!

✨点击这里✨&#xff1a;&#x1f680;原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; AI Vs 作家&#xff1f;Groqbook: AI写书神器&#xff0c;使用 Groq 和 Llama3 几秒生成一本完整的…