Generates balance statistics for
iptw objects from twang and for
ps.cont objects from twangContinuous.
# S3 method for ps bal.tab(x, stop.method, stats, int = FALSE, poly = 1, distance = NULL, addl = NULL, data = NULL, continuous, binary, s.d.denom, thresholds = NULL, weights = NULL, cluster = NULL, imp = NULL, pairwise = TRUE, s.weights = NULL, abs = FALSE, subset = NULL, quick = TRUE, ...)
a string containing the names of the stopping methods used in the original call to
iptw(). Examples include
bal.tab will assess balance for the weights created by those stopping methods. The names can be abbreviated as long as the abbreviations are specific enough. If no stopping methods are provided,
bal.tab will default to displaying balance for all available stopping methods. Ignored for
bal.tab() for details.
See below for special notes on the
The following arguments have special notes when used with these input objects:
if not specified, for
bal.tab() will use "treated" if the estimand of the call to
ps() is the ATT and "pooled" if the estimand is the ATE; for
bal.tab() will use "treated" if
treatATT was specified in the original call to
mnps and "pooled" otherwise. Use "all" to get the same values computed by
bal.table in twang. Abbreviations allowed.
bal.tab.ps() generates a list of balance summaries for the input object given, and functions similarly to
For binary or continuous point treatments, if clusters are not specified, an object of class
"bal.tab" containing balance summaries for the
ps object. See
bal.tab() for details.
If clusters are specified, an object of class
"bal.tab.cluster" containing balance summaries within each cluster and a summary of balance across clusters. See
bal.tab.cluster for details.
mnps() is used with multi-category treatments, an object of class
"bal.tab.multi" containing balance summaries for each pairwise treatment comparison and a summary of balance across pairwise comparisons. See
bal.tab.multi for details.
twang::bal.table() in twang performs a similar function. The variances used in the denominator of the standardized mean difference are weighted and computed using
survey::svyvar() in twang and are unweighted here (except when
s.weights are specified, in which case
col_w_sd is used). twang also uses "all" as the default
s.d.denom when the estimand is the ATE; the default here is "pooled". For this reason, results may differ slightly between the two packages.
library(twang); data("lalonde", package = "cobalt") #> To reproduce results from prior versions of the twang package, please see the version="legacy" option described in the documentation. ## Using ps() for generalized boosted modeling ps.out <- ps(treat ~ age + educ + married + race + nodegree + re74 + re75, data = lalonde, stop.method = c("ks.mean", "es.mean"), estimand = "ATT", verbose = FALSE) bal.tab(ps.out, stop.method = "ks.mean", un = TRUE, m.threshold = .1, disp.ks = TRUE) #> Balance Measures #> Type Diff.Un KS.Un Diff.Adj M.Threshold KS.Adj #> prop.score Distance 2.8072 0.8294 0.5712 0.2164 #> age Contin. -0.3094 0.1577 0.0538 Balanced, <0.1 0.0980 #> educ Contin. 0.0550 0.1114 -0.0810 Balanced, <0.1 0.0678 #> married Binary -0.3236 0.3236 0.0029 Balanced, <0.1 0.0029 #> race_black Binary 0.6404 0.6404 0.0176 Balanced, <0.1 0.0176 #> race_hispan Binary -0.0827 0.0827 0.0014 Balanced, <0.1 0.0014 #> race_white Binary -0.5577 0.5577 -0.0191 Balanced, <0.1 0.0191 #> nodegree Binary 0.1114 0.1114 0.0637 Balanced, <0.1 0.0637 #> re74 Contin. -0.7211 0.4470 0.1060 Not Balanced, >0.1 0.0591 #> re75 Contin. -0.2903 0.2876 0.1217 Not Balanced, >0.1 0.0941 #> #> Balance tally for mean differences #> count #> Balanced, <0.1 7 #> Not Balanced, >0.1 2 #> #> Variable with the greatest mean difference #> Variable Diff.Adj M.Threshold #> re75 0.1217 Not Balanced, >0.1 #> #> Effective sample sizes #> Control Treated #> Unadjusted 429. 185 #> Adjusted 25.5 185