The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

propensity makes it easy to calculate propensity score weights and use them to estimate causal effects. It supports:
You can learn more in vignette("propensity").
You can install propensity from CRAN with:
install.packages("propensity")You can install the development version of propensity from GitHub with:
# install.packages("pak")
pak::pak("r-causal/propensity")library(propensity)
# Simulate data with a confounder, binary exposure, and binary outcome
n <- 200
x1 <- rnorm(n)
z <- rbinom(n, 1, plogis(0.5 * x1))
y <- rbinom(n, 1, plogis(-0.5 + 0.8 * z + 0.3 * x1))
dat <- data.frame(x1, z, y)
# Step 1: Fit a propensity score model
ps_mod <- glm(z ~ x1, data = dat, family = binomial())
# Step 2: Calculate ATE weights and fit a weighted outcome model
wts <- wt_ate(ps_mod)
outcome_mod <- glm(y ~ z, data = dat, family = binomial(), weights = wts)
# Step 3: Estimate causal effects with correct standard errors
ipw(ps_mod, outcome_mod)
#> Inverse Probability Weight Estimator
#> Estimand: ATE
#>
#> Propensity Score Model:
#> Call: glm(formula = z ~ x1, family = binomial(), data = dat)
#>
#> Outcome Model:
#> Call: glm(formula = y ~ z, family = binomial(), data = dat, weights = wts)
#>
#> Estimates:
#> estimate std.err z ci.lower ci.upper conf.level p.value
#> rd 0.14230 0.07038 2.02194 0.0044 0.28025 0.95 0.0431831 *
#> log(rr) 0.28031 0.10770 2.60262 0.0692 0.49141 0.95 0.0092513 **
#> log(or) 0.57339 0.16200 3.53950 0.2559 0.89090 0.95 0.0004009 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1ipw() uses linearization to account for uncertainty in
the estimated propensity scores when computing standard errors.
Each weight function targets a different population:
| Estimand | Target population | Function |
|---|---|---|
| ATE | Entire population | wt_ate() |
| ATT | Treated units | wt_att() |
| ATU | Untreated units | wt_atu() (alias: wt_atc()) |
| ATO | Overlap population | wt_ato() |
| ATM | Matched population | wt_atm() |
| Entropy | Entropy-balanced population | wt_entropy() |
ATO and ATM weights are bounded by construction, making them a good alternative when ATE weights are highly variable.
vignette("propensity") – Getting started with
propensity score weightingThese binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.