Model-averaged propensity scores selected by prognostic-score balance.
psAve implements the propensity score model averaging
method of Kabata, Stuart & Shintani (2024, BMC Medical Research
Methodology). Instead of committing to a single propensity score
model, psave() fits several candidate models (logistic
regression, CART, random forest, gradient boosting, or any
SuperLearner wrapper), and combines them as a convex
mixture whose weights are chosen on a simplex grid to optimize balance
on the prognostic score — the predicted outcome under
the untreated condition, estimated from untreated units only (Hansen
2008). Because the prognostic score summarizes the covariates as
they relate to the outcome, balancing it targets exactly the
covariate directions that drive bias in the treatment effect; in the
paper’s simulations this “Prog (Ave)” strategy achieved the lowest and
most robust bias and RMSE across 16 scenarios. Covariate-balance (SMD,
KS) and prediction-accuracy (log loss) criteria from the paper are also
available.
psAve is a companion to the MatchIt/WeightIt/cobalt ecosystem, not a
replacement for any part of it. The deliverable is a plain numeric
vector of propensity scores, handed to MatchIt::matchit()
as a distance measure or to WeightIt::weightit() as a
propensity score (thin psave_match() /
psave_weight() wrappers do this without retyping the
formula); balance assessment — including prognostic-score balance —
works out of the box via cobalt::bal.tab(); effect
estimation stays where it belongs, in
MatchIt/WeightIt/survey/marginaleffects.
Estimands: ATT (default) and ATE.
# install.packages("remotes")
remotes::install_github("kabajiro/psAve")library(psAve)
data("lalonde", package = "MatchIt")
set.seed(1234)
fit <- psave(treat ~ age + educ + race + married + nodegree + re74 + re75,
data = lalonde, outcome = ~ re78) # defaults: criterion = "prog", ATT
m <- psave_match(fit, method = "nearest") # a genuine matchit object
cobalt::bal.tab(m, distance = data.frame(prog = fit$prog))lalonde matching workflow, interpreting
output, and why using the outcome in the design stage does not bias the
analysis.survey::svyglm() estimator.If you use psAve, please cite the paper:
Kabata, D., Stuart, E. A., & Shintani, A. (2024). Prognostic score-based model averaging approach for propensity score estimation. BMC Medical Research Methodology, 24, 228. doi:10.1186/s12874-024-02350-y
@article{kabata2024prognostic,
author = {Kabata, Daijiro and Stuart, Elizabeth A. and Shintani, Ayumi},
title = {Prognostic score-based model averaging approach for propensity score estimation},
journal = {BMC Medical Research Methodology},
year = {2024},
volume = {24},
pages = {228},
doi = {10.1186/s12874-024-02350-y}
}GPL (>= 2)