【问题标题】:Calculating Average Treatment Effect on the Treated (ATET/ATT) with propensity score用倾向评分计算平均治疗效果对被治疗者 (ATET/ATT) 的影响
【发布时间】:2020-08-22 03:36:32
【问题描述】:

我正在尝试使用倾向得分来计算平均治疗效果对被治疗者的影响。我正在使用这些数据来估计母亲在怀孕期间吸烟是否会影响出生体重。

数据包括出生体重列 (dbrwt)、吸烟状况列 (tobacco01) 以及多个协变量列。

我计算了平均治疗效果(ATE)如下:

model1 <- lm(dbrwt ~ tobacco01, data = dfc, weights = weight)

“权重”对象包括通过在其他几个协变量上回归吸烟状况而生成的倾向得分。

现在我已经计算了 ATE,我正在尝试找到一种方法来计算平均治疗效果对治疗的影响 (ATET)。理想情况下,我可以通过修改上述公式来做到这一点。在 Stata 中,有一个简单的“atet”命令,所以我想知道 R 中是否有任何可比的东西。当我搜索时,我没有发现任何可比的东西,特别是当我指定我想要包括倾向得分时。

我也愿意手动执行此操作。 ATE 是整个人口的斜率的平均值(也就是上面烟草01 变量的系数)。 ATET 是怀孕期间吸烟的母亲在人口子集上的斜率平均值。它本质上是在问:如果吸烟人群中的母亲不吸烟,您希望他们的系数是多少?

【问题讨论】:

  • zelig 包有 a function 来执行此操作。您只需要使用zelig() 估计模型
  • @paqmo 我看不到使用此包包含倾向权重的方法。
  • ‘zelig()` 有一个权重参数
  • @paqmo 你知道我能做些什么来解决这个问题吗?我收到此错误: install.packages 中的警告:包“Zelig”不可用(对于 R 版本 3.6.2)

标签: r statistics regression stata propensity-score-matching


【解决方案1】:

您可以通过应用您的统计知识来避免使用包。

倾向得分 (ps) 很可能还不是加权 ATE 回归的权重。您应该使用适当的公式计算权重(参见例如 Morgan 和 Winship 2015,第 7 章)。

# ATE
dfc$w.ate <- with(dfc, ifelse(tobacco01 == 1, 1 / ps, 1 / (1 - ps)))

ate <- lm(dbrwt ~ tobacco01, data=dfc, weights=w.ate)
coef(ate)
# (Intercept)   tobacco01 
#   3817.6932   -178.0539 

还有一个加权 ATT 回归公式。

dfc$w.att <- with(dfc, ifelse(tobacco01 == 1, 1, ps / (1 - ps)))

att <- lm(dbrwt ~ tobacco01, data=dfc, weights=w.att)
coef(att)
# (Intercept)   tobacco01 
#   3843.0671   -334.1448 

玩具数据:

set.seed(42)
n <- 1e3
dfc <- data.frame(dbrwt=rnorm(n, 3500, 500), tobacco01=rbinom(n, 1, .1), ps=runif(n))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2021-09-23
    • 2013-04-24
    • 2022-06-14
    • 2022-05-06
    • 1970-01-01
    相关资源
    最近更新 更多