【因果推断python】35_断点回归1

作者 : admin 本文共1888个字,预计阅读时间需要5分钟 发布时间: 2024-06-15 共1人阅读

目录

酒精会杀死你吗?


我们不会停下来想太多,但大自然的平滑程度令人印象深刻。没有先发芽就不能种树,不能从一个地方传送到另一个地方,伤口需要时间来愈合。即使在社交领域,顺畅似乎也是常态。您无法在一天内发展业务,建立财富需要一致性和辛勤工作,并且需要数年才能了解线性回归的工作原理。在正常情况下,大自然非常有凝聚力,不会跳来跳去。

当智慧和动物的灵魂被抱在一起时,它们就不会分离。

-道德经,老子。

这意味着当我们确实看到跳跃和尖峰时,它们可能是人为的并且通常是人为的情况。这些事件通常伴随着对正常事物方式的反事实:如果发生了一件奇怪的事情,这让我们对如果大自然以不同的方式工作会发生什么有了一些了解。探索这些人工跳跃是回归不连续设计的核心。

基本设置是这样的。假设您有一个干预变量 T 和潜在结果 【因果推断python】35_断点回归1插图 和 【因果推断python】35_断点回归1插图。处理 T 是观察到的运行变量 R 的不连续函数,使得【因果推断python】35_断点回归1插图

换句话说,这就是说当 R 低于阈值 c 时处理为零,否则为 1。这意味着我们可以在 R>c 时观察 【因果推断python】35_断点回归1插图 和在 R<c 时观察 【因果推断python】35_断点回归1插图。为了解决这个问题,请将潜在结果视为我们无法完全观察到的 2 个函数。 【因果推断python】35_断点回归1插图 和 【因果推断python】35_断点回归1插图 都在那里,我们只是看不到。阈值充当一个开关,让我们可以看到其中一个或另一个功能,但不能同时看到两者,就像下图一样:【因果推断python】35_断点回归1插图(1)

断点回归的想法是比较刚好高于和低于阈值的结果,以确定阈值处的干预效果。这被称为 sharp RD 设计,因为在阈值处获得干预的概率从 0 跳到 1,但我们也可以考虑 fuzzy RD 设计,其中概率也会跳跃,但是是一种不那么剧烈的方式。

酒精会杀死你吗?

一个非常相关的公共政策问题是最低饮酒年龄应该是多少。大多数国家,包括巴西,将其设定为 18 岁,但在美国(大多数州),目前是 21 岁。那么,美国是否过于谨慎,应该降低最低饮酒年龄?还是其他国家应该提高法定饮酒年龄?

看待这个问题的一种方法是从 死亡率的角度 (Carpenter and Dobkin, 2009)。从公共政策的角度来看,人们可以争辩说我们应该尽可能地降低死亡率。如果饮酒会大幅增加死亡率,我们应该避免降低最低饮酒年龄。这与降低因饮酒导致的死亡人数的目标是一致的。

为了估计酒精对死亡的影响,我们可以利用法定饮酒年龄本质上是施加了不连续性这一事实。在美国,21 岁以下的人不喝酒(或少喝酒),而 21 岁以上的人则喝酒。这意味着饮酒的概率在 21 岁时会增加,这是我们可以用 RDD 来探索的。

import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
from matplotlib import style
from matplotlib import pyplot as plt
import seaborn as sns
import statsmodels.formula.api as smf

%matplotlib inline

style.use("fivethirtyeight")

为此,我们可以获取一些按年龄汇总的死亡率数据。 每行是一组人的平均年龄和按照所有原因(all)、移动车辆事故(mva)和自杀(suicide)分别统计的平均死亡率。

drinking = pd.read_csv("./data/drinking.csv")
drinking.head()[["agecell", "all", "mva", "suicide"]]

【因果推断python】35_断点回归1插图(2)

为了提升视觉效果(以及我们将在后面看到的另一个重要原因)我们将以阈值 21为中点将 agecell这个变量去中心化。drinking[“agecell”] -= 21

如果我们将多个结果变量(allmvasuicide)与 x 轴上的对应变量一起绘制,图形会提示我们,当我们越过法定饮酒年龄时,死亡率会出现一定跳跃。

plt.figure(figsize=(8,8))
ax = plt.subplot(3,1,1)
drinking.plot.scatter(x="agecell", y="all", ax=ax)
plt.title("Death Cause by Age (Centered at 0)")

ax = plt.subplot(3,1,2, sharex=ax)
drinking.plot.scatter(x="agecell", y="mva", ax=ax)

ax = plt.subplot(3,1,3, sharex=ax)
drinking.plot.scatter(x="agecell", y="suicide", ax=ax);

【因果推断python】35_断点回归1插图(3)

有一些线索,但我们需要的不止这些。在阈值周围,饮酒对死亡率的影响究竟是什么?该估计的标准误差是多少?

本站无任何商业行为
个人在线分享 » 【因果推断python】35_断点回归1
E-->