bal.tab.matchit: Balance Statistics for 'MatchIt' Objects

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/bal.tab.R

Description

Generates balance statistics for matchit objects from MatchIt.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
## S3 method for class 'matchit'
bal.tab(x, 
    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, 
    ...)

Arguments

x

a matchit object; the output of a call to MatchIt::matchit().

method

a character vector containing the method of adjustment. Ignored unless subclassification was used in the original call to matchit(). If "weighting", the subclassification weights will be used and subclasses will be ignored. If "subclassification", balance will be assessed using the subclasses (see bal.tab.subclass for details). Abbreviations allowed.

stats

character; which statistic(s) should be reported. See stats for allowable options. For binary and multi-category treatments, "mean.diffs" (i.e., mean differences) is the default. Multiple options are allowed.

int

logical or numeric; whether or not to include 2-way interactions of covariates included in covs and in addl. If numeric, will be passed to poly as well.

poly

numeric; the highest polynomial of each continuous covariate to display. For example, if 2, squares of each continuous covariate will be displayed (in addition to the covariate itself); if 3, squares and cubes of each continuous covariate will be displayed, etc. If 1, the default, only the base covariate will be displayed. If int is numeric, poly will take on the value of int.

distance

an optional formula or data frame containing distance values (e.g., propensity scores) or a character vector containing their names. If a formula or variable names are specified, bal.tab() will look in the argument to data, if specified. Note that the distance measure (e.g., propensity score) generated by matchit() is automatically included and named "distance".

addl

an optional formula or data frame containing additional covariates for which to present balance or a character vector containing their names. If a formula or variable names are specified, bal.tab() will look first in the argument to data, if specified, and next in the matchit object.

data

an optional data frame containing variables that might be named in arguments to distance, addl, cluster, and imp. Can also be mids object, the output of a call to \pkgfunmicemice from the mice package, containing multiply imputed data sets. In this case, imp is automatically supplied using the imputation variable created from processing the mids object.

continuous

whether mean differences for continuous variables should be standardized ("std") or raw ("raw"). Default "std". Abbreviations allowed. This option can be set globally using \funset.cobalt.options. This argument is used to set std in \funcol_w_smd.

binary

whether mean differences for binary variables (i.e., difference in proportion) should be standardized ("std") or raw ("raw"). Default "raw". Abbreviations allowed. This option can be set globally using \funset.cobalt.options. This argument is used to set std in \funcol_w_smd.

s.d.denom

character; how the denominator for standardized mean differences should be calculated, if requested. See \funcol_w_smd for allowable options. If not specified, bal.tab() will figure out which one is best based on the estimand of the matchit object: if ATT, "treated"; if ATC, "control", otherwise "pooled". Abbreviations allowed.

thresholds

a named vector of balance thresholds, where the name corresponds to the statistic (i.e., in stats) that the threshold applies to. For example, to request thresholds on mean differences and variance ratios, one can set thresholds = c(m = .05, v = 2). Requesting a threshold automatically requests the display of that statistic. See Details.

weights

a named list containing additional weights on which to assess balance. Each entry can be a vector of weights, the name of a variable in data that contains weights, or an object with a \funget.w method.

cluster

either a vector containing cluster membership for each unit or a string containing the name of the cluster membership variable in data or the matchit object. See bal.tab.cluster for details.

imp

either a vector containing imputation indices for each unit or a string containing the name of the imputation index variable in data or the original data set used in the call to matchit(). See bal.tab.imp for details. Not necessary if data is a mids object.

pairwise

whether balance should be computed between the treatment groups or for each treatment against all groups combined. See bal.tab.multi for details.

s.weights

optional; either a vector containing sampling weights for each unit or a string containing the name of the sampling weight variable in data. These function like regular weights except that both the adjusted and unadjusted samples will be weighted according to these weights if weights are used. If s.weights was supplied in the call to matchit(), they will automatically be included and do not need be specified again (though there is no harm if they are).

abs

logical; whether displayed balance statistics should be in absolute value or not.

subset

a logical or numeric vector denoting whether each observation should be included or which observations should be included. If logical, it should be the same length as the variables in the original call to matchit(). NAs will be treated as FALSE. This can be used as an alternative to cluster to examine balance on subsets of the data.

quick

logical; if TRUE, will not compute any values that will not be displayed. Set to FALSE if computed values not displayed will be used later.

...

further arguments to control display of output. See display options for details.

Details

bal.tab.matchit() generates a list of balance summaries for the matchit object given, and functions similarly to MatchIt::summary.matchit(). bal.tab() behaves differently depending on whether subclasses are used in conditioning or not. If they are used, bal.tab() creates balance statistics for each subclass and for the sample in aggregate; see bal.tab.subclass for more information.

The threshold argument controls whether extra columns should be inserted into the Balance table describing whether the balance statistics in question exceeded or were within the threshold. Including these thresholds also creates summary tables tallying the number of variables that exceeded and were within the threshold and displaying the variables with the greatest imbalance on that balance measure. When subclassification is used, the extra threshold columns are placed within the balance tables for each subclass as well as in the aggregate balance table, and the summary tables display balance for each subclass.

Value

If subclassification is used and method is set to "subclassification", an object of class "bal.tab.subclass" containing balance summaries within and across subclasses. See bal.tab.subclass for details.

If matching is used and clusters are not specified, an object of class "bal.tab" containing balance summaries for the matchit object. See \funbal.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.

Author(s)

Noah Greifer

See Also

\fun

bal.tab for details of calculations.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
library(MatchIt); data("lalonde", package = "cobalt")

## Nearest Neighbor matching
m.out1 <- matchit(treat ~ age + educ + race + 
                  married + nodegree + re74 + re75, 
                  data = lalonde, method = "nearest")
                  
bal.tab(m.out1, un = TRUE, m.threshold = .1, 
        v.threshold = 2)

## Subclassification
m.out2 <- matchit(treat ~ age + educ + race + 
                  married + nodegree + re74 + re75, 
                  data = lalonde, method = "subclass")
                  
bal.tab(m.out2, disp.subclass = TRUE)

Example output

 cobalt (Version 4.2.4, Build Date: 2020-11-05 17:30:21 UTC)

Attaching package:MatchItThe following object is masked frompackage:cobalt:

    lalonde

Call
 matchit(formula = treat ~ age + educ + race + married + nodegree + 
    re74 + re75, data = lalonde, method = "nearest")

Balance Measures
                Type Diff.Un V.Ratio.Un Diff.Adj        M.Threshold V.Ratio.Adj
distance    Distance  1.7941     0.9211   0.9739                         0.7566
age          Contin. -0.3094     0.4400   0.0718     Balanced, <0.1      0.4568
educ         Contin.  0.0550     0.4959  -0.1290 Not Balanced, >0.1      0.5721
race_black    Binary  0.6404          .   0.3730 Not Balanced, >0.1           .
race_hispan   Binary -0.0827          .  -0.1568 Not Balanced, >0.1           .
race_white    Binary -0.5577          .  -0.2162 Not Balanced, >0.1           .
married       Binary -0.3236          .  -0.0216     Balanced, <0.1           .
nodegree      Binary  0.1114          .   0.0703     Balanced, <0.1           .
re74         Contin. -0.7211     0.5181  -0.0505     Balanced, <0.1      1.3289
re75         Contin. -0.2903     0.9563  -0.0257     Balanced, <0.1      1.4956
                 V.Threshold
distance        Balanced, <2
age         Not Balanced, >2
educ            Balanced, <2
race_black                  
race_hispan                 
race_white                  
married                     
nodegree                    
re74            Balanced, <2
re75            Balanced, <2

Balance tally for mean differences
                   count
Balanced, <0.1         5
Not Balanced, >0.1     4

Variable with the greatest mean difference
   Variable Diff.Adj        M.Threshold
 race_black    0.373 Not Balanced, >0.1

Balance tally for variance ratios
                 count
Balanced, <2         4
Not Balanced, >2     1

Variable with the greatest variance ratio
 Variable V.Ratio.Adj      V.Threshold
      age      0.4568 Not Balanced, >2

Sample sizes
          Control Treated
All           429     185
Matched       185     185
Unmatched     244       0
Call
 matchit(formula = treat ~ age + educ + race + married + nodegree + 
    re74 + re75, data = lalonde, method = "subclass")

Balance by subclass
 - - - Subclass 1 - - - 
                Type Diff.Adj
distance    Distance   0.2785
age          Contin.  -0.4024
educ         Contin.   0.1142
race_black    Binary   0.0823
race_hispan   Binary   0.1492
race_white    Binary  -0.2315
married       Binary  -0.2877
nodegree      Binary  -0.0003
re74         Contin.  -0.5864
re75         Contin.  -0.1729

 - - - Subclass 2 - - - 
                Type Diff.Adj
distance    Distance   0.1873
age          Contin.  -0.7473
educ         Contin.   0.1183
race_black    Binary   0.0094
race_hispan   Binary  -0.0094
race_white    Binary   0.0000
married       Binary  -0.2473
nodegree      Binary  -0.0121
re74         Contin.  -0.0352
re75         Contin.  -0.0970

 - - - Subclass 3 - - - 
                Type Diff.Adj
distance    Distance  -0.0140
age          Contin.   0.0524
educ         Contin.   0.1372
race_black    Binary   0.0000
race_hispan   Binary   0.0000
race_white    Binary   0.0000
married       Binary   0.3550
nodegree      Binary   0.2191
re74         Contin.  -0.2669
re75         Contin.  -0.0970

 - - - Subclass 4 - - - 
                Type Diff.Adj
distance    Distance  -0.0003
age          Contin.  -0.0499
educ         Contin.  -0.1436
race_black    Binary   0.0000
race_hispan   Binary   0.0000
race_white    Binary   0.0000
married       Binary  -0.1116
nodegree      Binary  -0.0417
re74         Contin.  -0.0073
re75         Contin.  -0.0801

 - - - Subclass 5 - - - 
                Type Diff.Adj
distance    Distance  -0.0224
age          Contin.   0.2640
educ         Contin.  -0.2977
race_black    Binary   0.0000
race_hispan   Binary   0.0000
race_white    Binary   0.0000
married       Binary   0.0000
nodegree      Binary   0.0376
re74         Contin.   0.0190
re75         Contin.   0.1233

 - - - Subclass 6 - - - 
                Type Diff.Adj
distance    Distance   0.0143
age          Contin.   0.5245
educ         Contin.   0.2781
race_black    Binary   0.0000
race_hispan   Binary   0.0000
race_white    Binary   0.0000
married       Binary   0.0000
nodegree      Binary  -0.1290
re74         Contin.  -0.0152
re75         Contin.  -0.2407

Balance measures across subclasses
                Type Diff.Adj
distance    Distance   0.0744
age          Contin.  -0.0609
educ         Contin.   0.0323
race_black    Binary   0.0154
race_hispan   Binary   0.0234
race_white    Binary  -0.0388
married       Binary  -0.0533
nodegree      Binary   0.0097
re74         Contin.  -0.1466
re75         Contin.  -0.0940

Sample sizes by subclass
          1  2  3  4  5  6 All
Control 346 24 17 21 18  3 429
Treated  31 31 29 32 31 31 185
Total   377 55 46 53 49 34 614

cobalt documentation built on March 30, 2021, 5:12 p.m.