if (FALSE) { # rlang::is_installed(c("cobalt", "lmtest"))
# G-computation of average treatment effects using lalonde
# dataset
data("lalonde", package = "cobalt")
ate_est <- function(data, w) {
fit <- lm(re78 ~ treat * (age + educ + married + race +
nodegree + re74 + re75),
data = data, weights = w)
p0 <- predict(fit, newdata = transform(data, treat = 0))
p1 <- predict(fit, newdata = transform(data, treat = 1))
# Weighted means using bootstrap weights
m0 <- w_mean(p0)
m1 <- w_mean(p1)
c(m0 = m0, m1 = m1, ATE = m1 - m0)
}
set.seed(123, "L'Ecuyer-CMRG")
boot_est <- fwb(lalonde, statistic = ate_est,
R = 199, verbose = FALSE)
summary(boot_est)
# Using `w_*()` data transformations inside a model
# supplied to vcovFWB():
fit <- lm(re78 ~ treat * w_center(age),
data = lalonde)
lmtest::coeftest(fit, vcov = vcovFWB, R = 500)
}
Run the code above in your browser using DataLab