✅ This will get us the point estimate
❌ This will get NOT us the correct confidence intervals
fit_ipw <- function(split, ...) {
.df <- analysis(split)
# fit propensity score model
propensity_model <- glm(
qsmk ~ sex +
race + age + I(age^2) + education +
smokeintensity + I(smokeintensity^2) +
smokeyrs + I(smokeyrs^2) + exercise + active +
wt71 + I(wt71^2),
family = binomial(),
data = .df
)
# calculate inverse probability weights
.df <- propensity_model |>
augment(type.predict = "response", data = .df) |>
mutate(wts = wt_ate(.fitted, qsmk, exposure_type = "binary"))
# fit correctly bootstrapped ipw model
lm(wt82_71 ~ qsmk, data = .df, weights = wts) |>
tidy()
}
# Bootstrap sampling with apparent sample
# A tibble: 1,001 × 2
splits id
<list> <chr>
1 <split [1566/569]> Bootstrap0001
2 <split [1566/550]> Bootstrap0002
3 <split [1566/569]> Bootstrap0003
4 <split [1566/583]> Bootstrap0004
5 <split [1566/563]> Bootstrap0005
6 <split [1566/572]> Bootstrap0006
7 <split [1566/587]> Bootstrap0007
8 <split [1566/575]> Bootstrap0008
9 <split [1566/575]> Bootstrap0009
10 <split [1566/568]> Bootstrap0010
# ℹ 991 more rows
# Bootstrap sampling with apparent sample
# A tibble: 1,001 × 3
splits id boot_fits
<list> <chr> <list>
1 <split [1566/596]> Bootstrap0001 <tibble [2 × 5]>
2 <split [1566/567]> Bootstrap0002 <tibble [2 × 5]>
3 <split [1566/579]> Bootstrap0003 <tibble [2 × 5]>
4 <split [1566/565]> Bootstrap0004 <tibble [2 × 5]>
5 <split [1566/562]> Bootstrap0005 <tibble [2 × 5]>
6 <split [1566/564]> Bootstrap0006 <tibble [2 × 5]>
7 <split [1566/570]> Bootstrap0007 <tibble [2 × 5]>
8 <split [1566/578]> Bootstrap0008 <tibble [2 × 5]>
9 <split [1566/581]> Bootstrap0009 <tibble [2 × 5]>
10 <split [1566/570]> Bootstrap0010 <tibble [2 × 5]>
# ℹ 991 more rows
12:00
ipw_fit
that fits the propensity score model and the weighted outcome model for the effect between park_extra_magic_morning
and wait_minutes_posted_avg
bootstraps()
and int_t()
functions to estimate the final effect.{survey}
package{survey}
package10:00
sandwich
package to calcualte the uncertainty for your weighted modelsurvey
packageSlides by Dr. Malcom Barret & Dr. Lucy D’Agostino McGowan