我试着用倾向评分来计算治疗的平均效果。我用这些数据来估计怀孕期间吸烟的母亲是否会影响出生体重。
数据包括具有出生体重(dbrwt)的列、具有吸烟状态(tobacco01)的列和具有多个协变量的列。
我计算了平均治疗效果如下:
model1 <- lm(dbrwt ~ tobacco01, data = dfc, weights = weight)“体重”对象包括通过在其他几个协变量上回归吸烟状态而产生的倾向分数。
现在我已经计算了ATE,我试图找到一种方法来计算平均治疗效果(ATET)。理想情况下,我可以通过修改上面的公式来做到这一点。在Stata中,有一个简单的"atet“命令,所以我想知道在R中是否有类似的东西,当我搜索时,我没有发现类似的东西,特别是当我指定要包含倾向分数时。
我也愿意手动做这件事。ATE是整个人口中斜率的平均值(也就是上面tobacco01变量上的系数)。ATET是怀孕期间吸烟母亲在人口子集上的平均斜率。它本质上是在问:如果没有吸烟,你认为吸烟人口中的母亲的系数是多少?
发布于 2020-05-07 07:04:39
您可以通过应用统计知识来避免使用包。
倾向评分(ps)很可能还不是你加权回归的权重.应使用适当的公式计算权重(例如,见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))https://stackoverflow.com/questions/61647644
复制相似问题