calibrate()
performs Platt scaling to calibrate propensity scores as recommended by Gutman et al. (2024). This involves fitting a new propensity score model using logistic regression with the previously estimated propensity score as the sole predictor. Weights are computed using this new propensity score.
Usage
calibrate(x, ...)
# S3 method for default
calibrate(x, treat, s.weights = NULL, data = NULL, ...)
# S3 method for weightit
calibrate(x, ...)
Arguments
- x
A
weightit
object or a vector of propensity scores. Only binary treatments are supported.- ...
Not used.
- treat
A vector of treatment status for each unit. Only binary treatments are supported.
- s.weights
A vector of sampling weights or the name of a variable in
data
that contains sampling weights.- data
An optional data frame containing the variable named in
s.weights
when supplied as a string.
Value
If the input is a weightit
object, the output will be a
weightit
object with the propensity scores replaced with the calibrated propensity scores and the weights replaced by weights computed from the calibrated propensity scores.
If the input is a numeric vector of weights, the output will be a numeric vector of the calibrated propensity scores.
References
Gutman, R., Karavani, E., & Shimoni, Y. (2024). Improving Inverse Probability Weighting by Post-calibrating Its Propensity Scores. Epidemiology, 35(4). doi:10.1097/EDE.0000000000001733
Examples
library("cobalt")
data("lalonde", package = "cobalt")
#Using GBM to estimate weights
(W <- weightit(treat ~ age + educ + married +
nodegree + re74, data = lalonde,
method = "gbm", estimand = "ATT",
criterion = "smd.max"))
#> A weightit object
#> - method: "gbm" (propensity score weighting with GBM)
#> - number of obs.: 614
#> - sampling weights: none
#> - treatment: 2-category
#> - estimand: ATT (focal: 1)
#> - covariates: age, educ, married, nodegree, re74
summary(W)
#> Summary of weights
#>
#> - Weight ranges:
#>
#> Min Max
#> treated 1.0000 || 1.0000
#> control 0.0038 |---------------------------| 10.6104
#>
#> - Units with the 5 most extreme weights by group:
#>
#> 5 4 3 2 1
#> treated 1 1 1 1 1
#> 585 569 592 374 608
#> control 4.3522 5.0089 5.8584 5.8584 10.6104
#>
#> - Weight statistics:
#>
#> Coef of Var MAD Entropy # Zeros
#> treated 0.000 0.00 0.000 0
#> control 2.422 1.06 1.016 0
#>
#> - Effective Sample Sizes:
#>
#> Control Treated
#> Unweighted 429. 185
#> Weighted 62.6 185
#Calibrating the GBM propensity scores
Wc <- calibrate(W)
#Calibrating propensity scores directly
PSc <- calibrate(W$ps, treat = lalonde$treat)