可行干预措施因果效应估计导论

可行的干预措施因果效应估计导论

教程首页

教程地址:https://medium.com/towards-data-science/an-introduction-to-estimating-the-causal-effects-of-feasible-interventions-e07ed45136ff

想象一下你正在申请法学院。您已经参加了 LSAT,但分数没有达到您想要的高分。你开始想知道,提高你的 LSAT 分数对你的录取结果(定义为你申请的被录取的学校的比例)有什么影响?

乍一看,这似乎很容易。您可以找到前几年申请者的一些数据,并根据 LSAT 分数对录取结果进行回归。太好了,你有一个衡量标准,即 LSAT 分数与一个人可以预期被录取的学校比例之间的关联。

但。。。这真的回答了你的问题吗?您的估计是否公正?你回想一下线性回归的假设,并意识到你可以被录取的学校比例在 0 到 1 之间,所以它不可能是线性的。您还记得回归系数的预设解释,“X 每增加一个单位,Y 就会增加或减少 β”;如果有人用完了他们的 LSAT 分数,这种解释怎么成立呢?

考虑到这一点,您开始缩小研究范围:如果 LSAT 分数提高一个现实的量,提高 LSAT 分数对法学院录取结果有什么影响?我们可以将其视为一种可行的干预措施,并将其正式定义为修改后的治疗政策- modified treatment policy.。

A modified treatment policy (MTP) is defined as an interve

修改后的治疗策略 (MTP) 被定义为一种可能取决于暴露的自然价值的干预措施。 这与其他因果效应不同,例如平均处理效应 (ATE),其中暴露会确定性地增加(或减少),这通常是不可能的。

对于我们的问题,请考虑 LSAT 分数为的 MTP:

  • 如果个人观察到的 LSAT 分数在 120-150 之间,则增加 10 分

  • 如果在 151–160 之间,则增加 5 分

  • 如果在 161–165 之间,则增加 2 分

  • 如果他们的分数大于 165,则保持不变。

这种干预考虑到观察到的 LSAT 分数越高,提高它就越困难。我们认为这种干预是可行的,因为我们可以想象一种可以带来它的假设干预(即参加 LSAT 预备课程)。相比之下,确定性干预,而且是不可能的干预,是每个人的 LSAT 分数都增加相同数量的干预。

定义感兴趣的 MTP 后,您很快就会意识到标准参数方法无法处理此问题。R 包 lmtp为基于点治疗和纵向修改治疗策略的可行干预措施的非参数随机效应提供了一个估计框架。它支持两个主要估计器,

  • 一个交叉验证的目标最小基于损失的估计器 (CV-TMLE)-a cross-validated targeted minimum loss-based estimator (CV-TMLE)
  • 和一个顺序双倍稳健估计器 (SDR)。这两个估计量都具有双重稳健的特性-sequentially doubly-robust estimator (SDR)。

这很重要,原因有几个,但也许最引人注目的是它允许我们使用机器学习进行估计。因此,lmtp 使用 sl3 包进行集成机器学习¹(也称为超级学习或堆叠泛化)进行估计。超级学习对多个单独机器学习算法的结果进行加权,以创建最佳的模型组合。

应用

让我们使用 lmtp 来回答我们的问题。首先,我们安装并加载必要的包并模拟我们的数据。为简单起见,我们将假设录取仅受 GPA 和 LSAT 分数的影响,并且 GPA 混淆了 LSAT 和录取之间的关系。我们还将假设法学院不对他们的录取人数设置上限。

# 安装所需的R包
# 从GitHub安装lmtp包
# remotes::install_github("nt-williams/lmtp")
# 从GitHub安装sl3包
# remotes::install_github("tlverse/sl3")
# 从CRAN安装future和progressr包
# install.packages(c("future", "progressr"))

# 加载所需的R包
library(lmtp)      # 用于因果推断分析
library(sl3)       # 用于机器学习
library(future)    # 用于并行计算
library(progressr) # 用于进度显示

# 设置随机数种子和样本量
set.seed(6232)     # 设置随机数种子,确保结果可重复
n <- 1000          # 设置样本量为1000

# 生成GPA(平均学分绩点)数据
# 使用正态分布生成GPA,均值3.5,标准差0.25,保留2位小数
gpa <- round(rnorm(n, 3.5, .25), 2)
# GPA下限设为3.0
gpa <- ifelse(gpa < 3, 3, gpa)
# GPA上限设为4.0
gpa <- ifelse(gpa > 4, 4, gpa)

# 生成LSAT(法学院入学考试)分数
# 基于GPA生成LSAT分数,均值149,标准差10
lsat <- round(rnorm(n, 149, 10) + gpa)
# LSAT分数下限设为120
lsat <- ifelse(lsat < 120, 120, lsat)
# LSAT分数上限设为180
lsat <- ifelse(lsat > 180, 180, lsat)

# 计算录取概率
# 根据LSAT分数、GPA及其交互项计算录取概率
admit <- (lsat / 300) + 0.05*gpa + 0.01*lsat*gpa
# 将录取概率标准化到[0,1]区间
admit <- (admit - min(admit)) / (max(admit) - min(admit))

# 将GPA、LSAT分数和录取概率组合成数据框
admissions <- data.frame(gpa, lsat, admit)
构造的测试数据

我提到 lmtp 可以使用集成学习器进行估计,所以让我们进行设置。我们将使用仅截距模型、GLM 和随机森林的集成模型。

# 创建一个学习器堆叠对象,包含以下三个学习器:
# Lrnr_mean: 均值学习器,用于计算目标变量的平均值
# Lrnr_glm: 广义线性模型学习器,用于拟合线性关系
# Lrnr_ranger: 随机森林学习器,用于捕捉非线性关系
lrnrs <- make_learner_stack(Lrnr_mean, 
                           Lrnr_glm, 
                           Lrnr_ranger)

我们还需要一种方法将我们感兴趣的干预传达给 lmtp。我们可以使用 shift 函数来做到这一点。移位函数只是将一个向量作为输入,并返回一个相同长度和类型的向量,但根据我们的干预进行了修改。


# 定义一个分段函数mtp,用于对LSAT分数进行调整
# x: 输入的LSAT分数向量
mtp <- function(x) {
  # 对不同分数段进行不同程度的加分:
  # 150分及以下加10分
  # 151-160分加5分  
  # 161-165分加2分
  # 165分以上保持不变
  (x <= 150)*(x + 10) + 
    (x >= 151 & x <= 160)*(x + 5) + 
    (x >= 161 & x <= 165)*(x + 2) + 
    (x > 165)*x
}

# 显示LSAT分数的前6个值
head(lsat)

# 显示经过mtp函数调整后的前6个LSAT分数
head(mtp(lsat)) 

剩下的就是估计干预的效果。我们将使用 CV-TML 估计器 lmtp_tmle()


plan(multiprocess) # using parallel processing
with_progress({
  psi <- lmtp_tmle(admissions, 
                   trt = "lsat", 
                   outcome = "admit", 
                   baseline = "gpa", 
                   shift = mtp, 
                   outcome_type = "continuous", 
                   learners_outcome = lrnrs,
                   learners_trt = lrnrs)
})
psi

根据我们的 LSAT 治疗政策,我们估计被录取的法学院在人口中的平均比例为 0.495,95% 置信区间为 0.49 至 0.5。我们可以将其与观察到的自然 LSAT 分数下被录取的法学院的平均比例 0.42 正式进行比较。

ref <- mean(admit)
lmtp_contrast(psi, ref = ref)

我们估计我们的治疗政策将使被人群接受的法学院的平均比例增加 0.07,95% 置信区间为 0.06 至 0.08。看起来提高您的分数符合您的最大利益。

最后的考虑

前面的示例应该可以帮助您对什么是修改后的治疗策略以及它们为什么有用建立一些直觉。顺便说一句,这是一个示例数据。

话虽如此,以下是 MTP 实际应用的几个示例:

  • Effects of physical activity in the elderly on cardiovascular morbidity 老年人体能活动对心血管疾病发生率的影响
  • Effects of surgical operating times on post-surgery outcomes 手术时间对术后结局的影响

  • Effects of water quality, sanitation, hand washing, and nutrition interventions on disease outcomes 水质、卫生、洗手和营养干预对疾病结局的影响

外,lmtp 适用于点治疗和纵向设置的二元、连续和生存结果(结果中均存在缺失),并且可以估计确定性治疗效果,例如 ATE。有关使用 lmtp,的深入介绍,我建议您通读示例教程。

如果您想了解更多关于因果推理、修改后的治疗策略以及它们为何如此有用、有针对性的基于最小损失的估计或超级学习者的信息,我推荐以下资源:

  • Díaz Muñoz, I. and van der Laan, M., Population Intervention Causal Effects Based on Stochastic Interventions (2012), Biometrics

  • Díaz, I., Williams, N., Hoffman, K. L. and Schenck, E. J., Non-parametric causal effects based on longitudinal modified treatment policies (2020), arXiv

  • Haneuse, S. and Rotnitzky, A., Estimation of the effect of interventions that modify the received treatment (2013), Statistics in Medicine

  • van der Laan, M. J. and Rose, S. Targeted Learning (2011) Springer Series in Statistics

  • Naimi, A. I. and Balzer, L. B. Stacked generalization: an introduction to super learning (2018), European Journal of Epidemiology

本文由mdnice多平台发布

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容