首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用倾向评分计算平均治疗效果(ATET/ATT)

用倾向评分计算平均治疗效果(ATET/ATT)
EN

Stack Overflow用户
提问于 2020-05-07 00:12:11
回答 1查看 2.5K关注 0票数 0

我试着用倾向评分来计算治疗的平均效果。我用这些数据来估计怀孕期间吸烟的母亲是否会影响出生体重。

数据包括具有出生体重(dbrwt)的列、具有吸烟状态(tobacco01)的列和具有多个协变量的列。

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

代码语言:javascript
复制
model1 <- lm(dbrwt ~ tobacco01, data = dfc, weights = weight)

“体重”对象包括通过在其他几个协变量上回归吸烟状态而产生的倾向分数。

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

我也愿意手动做这件事。ATE是整个人口中斜率的平均值(也就是上面tobacco01变量上的系数)。ATET是怀孕期间吸烟母亲在人口子集上的平均斜率。它本质上是在问:如果没有吸烟,你认为吸烟人口中的母亲的系数是多少?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 07:04:39

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

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

代码语言:javascript
复制
# 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回归公式。

代码语言:javascript
复制
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 

玩具数据:

代码语言:javascript
复制
set.seed(42)
n <- 1e3
dfc <- data.frame(dbrwt=rnorm(n, 3500, 500), tobacco01=rbinom(n, 1, .1), ps=runif(n))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61647644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档