Вы можете избежать использования пакетов, применив свои статистические знания.
Оценка склонности (ps
), скорее всего, еще не является весами для вашей взвешенной ATE-регрессии. Вы должны рассчитать веса, используя соответствующие формулы (см., Например, Morgan and 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))