Skip to contents

Finds the largest matched sample with maximum absolute SMD below balance_threshold. Uses an iterative caliper-tightening heuristic over morie_matching_nearest_neighbor; for an exact mixed-integer-programming alternative see designmatch::cardmatch.

Usage

morie_matching_cardinality(
  data,
  treatment,
  covariates,
  balance_threshold = 0.1,
  ps = NULL
)

Arguments

data

Data frame.

treatment

Binary treatment column name.

covariates

Character vector of covariates.

balance_threshold

Maximum absolute SMD tolerated (default 0.1).

ps

Optional propensity scores. When supplied they REPLACE the fitted model and become the matching distance directly, aligned to the rows that survive the NA drop.

Value

A list of class morie_match_result.

References

Zubizarreta, J. R. (2012). Using mixed integer programming for matching in an observational study of kidney failure after surgery. JASA, 107(500), 1360–1371.

Examples

# \donttest{
set.seed(1)
df <- data.frame(y = rnorm(200), d = rbinom(200, 1, 0.4),
                 x1 = rnorm(200), x2 = rnorm(200))
morie_matching_cardinality(df, "d", c("x1", "x2"),
                           balance_threshold = 0.1)
#> $matched_data
#>                y d           x1           x2
#> 1   -0.626453811 1  0.893673702  0.077303123
#> 2    0.183643324 0 -1.047298149 -0.296868642
#> 3   -0.835628612 1  1.971337386 -1.183242240
#> 4    1.595280802 1 -0.383632106  0.011292688
#> 5    0.329507772 1  1.654145302  0.991601036
#> 6   -0.820468384 1  1.512212694  1.593967454
#> 8    0.738324705 1  0.567220915 -0.249610933
#> 9    0.575781352 0 -1.024548480  1.159424527
#> 10  -0.305388387 1  0.323006503 -1.114222348
#> 11   1.511781168 1  1.043612458 -2.528500689
#> 12   0.389843236 0  0.099078487 -0.935902559
#> 13  -0.621240581 1 -0.454136909 -0.967239458
#> 14  -2.214699887 1 -0.655781852  0.047488592
#> 15   1.124930918 1 -0.035922423 -0.403736793
#> 16  -0.044933609 0  1.069161461  0.231496128
#> 17  -0.016190263 0 -0.483974930 -0.422372408
#> 18   0.943836211 0 -0.121010111  0.374118395
#> 19   0.821221195 1 -1.294140004 -0.366005775
#> 20   0.593901321 1  0.494312836  1.190101447
#> 21   0.918977372 0  1.307901520 -0.737327525
#> 22   0.782136301 0  1.497041009  0.290666645
#> 23   0.074564983 1  0.814702731 -0.884849568
#> 24  -1.989351696 0 -1.869788790  0.208006479
#> 25   0.619825748 0  0.482029504 -0.047730172
#> 28  -1.470752384 1  0.170489471  1.180213666
#> 29  -0.478150055 1 -0.864035954  0.681399923
#> 30   0.417941560 1  0.679230774  0.143247631
#> 31   1.358679552 1 -0.327101015 -1.192316444
#> 34  -0.053805041 0  1.364434929 -0.451773753
#> 35  -1.377059557 0 -0.334281365  1.642028213
#> 36  -0.414994563 1  0.732750042 -0.769592322
#> 37  -0.394289954 1  0.946585640  0.303360961
#> 38  -0.059313397 0  0.004398704  1.281737421
#> 39   1.100025372 0 -0.352322306  0.602222795
#> 40   0.763175748 1 -0.529695509 -0.307022265
#> 41  -0.164523596 0  0.739589226 -0.418418103
#> 43   0.696963375 0  0.246210844  0.513481115
#> 44   0.556663199 1 -0.289499367  0.018607400
#> 45  -0.688755695 0 -2.264889356  1.318448972
#> 46  -0.707495157 0 -1.408850456 -0.065832000
#> 47   0.364581962 0  0.916019329 -0.700296078
#> 48   0.768532925 1 -0.191278951  0.537326132
#> 49  -0.112346212 0  0.803283216 -2.201782322
#> 50   0.881107726 0  1.887474463  0.391973744
#> 51   0.398105880 1  1.473881181  0.496960952
#> 52  -0.612026393 0  0.677268492 -0.224874715
#> 53   0.341119691 0  0.379962687 -1.117143165
#> 54  -1.129363096 0 -0.192798426 -0.394994603
#> 55   1.433023702 0  1.577891795  1.549830342
#> 56   1.980399899 1  0.596234109 -0.743514480
#> 58  -1.044134626 1 -0.155642535  0.812245442
#> 59   0.569719627 1 -1.918909820 -0.501310657
#> 60  -0.135054604 0 -0.195258846 -0.510886566
#> 61   2.401617761 0 -2.592327670 -1.215364041
#> 63   0.689739362 0 -0.635543001  0.701239300
#> 66   0.188792300 1  0.612218174  1.096640215
#> 67  -1.804958629 1  0.678340177 -0.247509677
#> 68   1.465554862 0  0.567951972 -0.159901713
#> 69   0.153253338 0 -0.572542604 -0.625778251
#> 70   2.172611670 1 -1.363291256  0.900434636
#> 71   0.475509529 0 -0.388722244 -0.994193629
#> 72  -0.709946431 1  0.277914132  0.849250386
#> 73   0.610726353 1 -0.823081122  0.805702289
#> 74  -0.934097632 0 -0.068840934 -0.467600936
#> 75  -1.253633400 0 -1.167662326  0.848420314
#> 76   0.291446236 0 -0.008309014  0.986769864
#> 77  -0.443291873 1  0.128855402  0.575620289
#> 78   0.001105352 0 -0.145875628  2.024842045
#> 79   0.074341324 0 -0.163910957 -1.962353191
#> 80  -0.589520946 1  1.763552003 -1.164920931
#> 81  -0.568668733 1  0.762586512 -1.376519214
#> 82  -0.135178615 0  1.111431081  0.167679934
#> 83   1.178086997 1 -0.923206953  1.584629079
#> 84  -1.523566800 1  0.164341838  1.677888953
#> 85   0.593946188 0  1.154825187  0.488296698
#> 86   0.332950371 0 -0.056521425  0.878673263
#> 87   1.063099837 0 -2.129360648 -0.144874874
#> 88  -0.304183924 0  0.344845762  0.468971760
#> 89   0.370018810 1 -1.904955446  0.376235477
#> 90   0.267098791 0 -0.811170153 -0.761040275
#> 91  -0.542520031 0  1.324004321 -0.293294934
#> 92   1.207867806 1  0.615636849 -0.134841264
#> 93   1.160402616 0  1.091668956  1.393845816
#> 94   0.700213650 0  0.306604862 -1.036988690
#> 95   1.586833455 0 -0.110158762 -2.114335148
#> 96   0.558486426 0 -0.924312773  0.768278218
#> 98  -0.573265414 0  0.045010598 -0.436106923
#> 99  -1.224612615 1 -0.715128401  0.904705031
#> 100 -0.473400636 0  0.865223100 -0.763086265
#> 101 -0.620366677 0  1.074440958 -0.341066980
#> 102  0.042115873 1  1.895654774  1.502424534
#> 103 -0.910921649 1 -0.602997304  0.528307712
#> 104  0.158028772 1 -0.390867821  0.542191355
#> 105 -0.654584644 0 -0.416222032 -0.136673356
#> 106  1.767287269 1 -0.375657423 -1.136733853
#> 107  0.716707476 0 -0.366630946 -1.496627154
#> 108  0.910174229 1 -0.295677453 -0.223385644
#> 109  0.384185358 1  1.441820410  2.001719228
#> 110  1.682176081 0 -0.697538292  0.221703816
#> 111 -0.635736454 1 -0.388167506  0.164372909
#> 112 -0.461644730 0  0.652536452  0.332623609
#> 113  1.432282239 0  1.124772447 -0.385207999
#> 114 -0.650696353 1 -0.772110803 -1.398754027
#> 115 -0.207380744 1 -0.508086216  2.675740796
#> 116 -0.392807929 0  0.523620590 -0.423686089
#> 117 -0.319992869 1  1.017754227 -0.298601512
#> 120 -0.177330482 1  1.709121032 -0.247303918
#> 121 -0.505957462 1  1.435069572 -0.255510379
#> 122  1.343038825 1 -0.710371146 -1.786938100
#> 123 -0.214579409 0 -0.065067574  1.784662816
#> 124 -0.179556530 0 -1.759468735  1.763586348
#> 125 -0.100190741 0  0.569722972  0.689600222
#> 126  0.712666307 1  1.612346798 -1.100740644
#> 127 -0.073564404 1 -1.637280647  0.714509357
#> 128 -0.037634171 1 -0.779568513 -0.246470317
#> 129 -0.681660479 1 -0.641176934 -0.319786166
#> 130 -0.324270272 1 -0.681131394  1.362644293
#> 131  0.060160440 1 -2.033285596 -1.227882590
#> 133  0.531496193 0 -1.531798140 -0.731194999
#> 134 -1.518394082 0 -0.024997639  0.019752007
#> 135  0.306557861 0  0.592984721 -1.572863915
#> 137 -0.300976127 0  0.892008392  0.715932089
#> 138 -0.528279904 0 -0.025715071  0.465214906
#> 139 -0.652094781 0 -0.647660451 -0.973902306
#> 140 -0.056896778 1  0.646359415  0.559217730
#> 142  1.176583312 1  1.772611185 -0.340484927
#> 143 -1.664972436 1 -0.018259711  0.713033195
#> 145 -1.115920105 0  0.205162903 -0.036402623
#> 147  2.087166546 1 -1.366111931  0.847792797
#> 148  0.017395620 0 -0.424102260 -1.850388849
#> 150 -1.640605534 1 -2.342723120 -0.255248113
#> 151  0.450187101 1  0.961696633  0.060921227
#> 153 -0.318068375 0 -0.752877279  1.829730485
#> 154 -0.929362147 1 -1.555611593 -1.429916216
#> 155 -1.487460310 1 -1.453893738  0.254137143
#> 157  1.000028804 0  0.509369407  0.002415809
#> 158 -0.621266695 0 -2.097882960  0.509665571
#> 159 -1.384426847 1 -1.004361979 -1.084720001
#> 160  1.869290622 1  0.535771722  0.704832977
#> 161  0.425100377 1 -0.453037085  0.330976350
#> 162 -0.238647101 0  2.165368502  0.976327473
#> 163  1.058483049 0  1.245746673 -0.843339880
#> 164  0.886422651 1  0.595498034 -0.970579905
#> 165 -0.619243048 1  0.004884450 -1.771531349
#> 166  2.206102465 1  0.279360782 -0.322470342
#> 167 -0.255027030 0 -0.705906125 -1.338800742
#> 168 -1.424494650 1  0.628017153  0.688156028
#> 169 -0.144399602 0  1.480213960  0.071280652
#> 170  0.207538339 1  1.083429910  2.189752359
#> 171  2.307978399 0 -0.813244257 -1.157707599
#> 173  0.456998805 0 -0.109655699 -0.527368362
#> 174 -0.077152935 0  0.440889371 -1.456628011
#> 175 -0.334000842 1  1.350993980  0.572967370
#> 177  0.787639606 1  0.364384593 -1.055185019
#> 178  2.075245009 0  0.233499835 -0.733111877
#> 179  1.027392439 1  1.193955261  0.210907264
#> 180  1.207908398 1 -0.027909972 -0.998920727
#> 181 -1.231323422 0 -0.357298855  1.077850323
#> 182  0.983895570 1 -1.146814136 -1.198974383
#> 183  0.219924804 1 -0.517420484  0.216637035
#> 184 -1.467250029 0 -0.362123773  0.143087030
#> 185  0.521022743 0  2.350554326 -1.065750091
#> 187  1.464587312 0 -0.166703279 -0.656179477
#> 189 -0.430211754 1 -1.972934934  1.556052636
#> 190 -0.926109497 1  0.514671633 -1.040796434
#> 191 -0.177103961 0 -1.090573584  0.930572409
#> 192  0.402011779 0  2.284659326 -0.075445931
#> 193 -0.731748173 1 -0.885617573 -1.967195349
#> 194  0.830373168 1  0.111106430 -0.755903643
#> 195 -1.208082786 1  3.810276681  0.461149161
#> 196 -1.047984413 1 -1.108909998  0.145106631
#> 197  1.441157707 0  0.307566624 -2.442311321
#> 198 -1.015847465 0 -1.106894472  0.580318685
#> 199  0.411974712 0  0.347653649  0.655051998
#> 
#> $n_treated
#> [1] 87
#> 
#> $n_matched_control
#> [1] 87
#> 
#> $match_pairs
#>     treated_idx control_idx     distance
#> 1             1          45 2.339704e-03
#> 3             3          98 3.540272e-03
#> 4             4         185 1.453433e-03
#> 5             5          38 7.838973e-02
#> 6             6         123 9.362749e-02
#> 8             8         110 6.467675e-03
#> 10           10          87 5.886455e-04
#> 11           11          61 2.760086e-02
#> 13           13          71 2.208290e-04
#> 14           14          21 1.388377e-03
#> 15           15         100 4.632166e-04
#> 19           19          12 3.802549e-03
#> 20           20          50 5.298584e-02
#> 23           23          46 1.343788e-02
#> 28           28         124 3.913746e-02
#> 29           29         157 2.900059e-02
#> 30           30          75 5.797689e-03
#> 31           31         133 3.534101e-03
#> 36           36          24 1.163707e-02
#> 37           37          82 1.515639e-02
#> 40           40          60 1.536325e-02
#> 44           44          41 6.272776e-03
#> 48           48         138 1.397223e-03
#> 51           51         125 3.571626e-02
#> 56           56         173 1.371668e-02
#> 58           58         169 1.993963e-02
#> 59           59         174 4.294561e-03
#> 66           66         137 5.813640e-02
#> 67           67         134 2.484495e-03
#> 70           70         191 2.978721e-02
#> 72           72          22 1.623428e-02
#> 73           73          39 3.636856e-03
#> 77           77          88 4.532204e-03
#> 80           80          74 6.251279e-03
#> 81           81          90 1.795600e-03
#> 83           83          76 5.068188e-02
#> 84           84          35 5.031531e-02
#> 89           89         163 6.316226e-03
#> 92           92          68 9.472779e-03
#> 99           99         112 6.455862e-03
#> 102         102          93 9.206582e-02
#> 103         103          34 4.314330e-02
#> 104         104          18 1.316684e-02
#> 106         106         135 1.124265e-02
#> 108         108          47 7.297940e-04
#> 109         109          78 1.306251e-01
#> 111         111          52 7.126727e-03
#> 114         114         167 1.857317e-02
#> 115         115         162 1.378401e-01
#> 117         117         113 9.521087e-03
#> 120         120          96 6.091332e-03
#> 121         121          25 3.662881e-02
#> 122         122          95 1.928137e-02
#> 126         126          54 2.108394e-03
#> 127         127         145 4.438104e-03
#> 128         128          17 1.265570e-02
#> 129         129         178 1.435457e-02
#> 130         130         181 3.370742e-02
#> 131         131          79 1.404854e-03
#> 140         140         199 4.862865e-03
#> 142         142          91 2.814785e-02
#> 143         143          16 1.088170e-02
#> 147         147         198 3.549427e-02
#> 150         150         139 1.007533e-02
#> 151         151          63 1.550937e-03
#> 154         154         148 6.041891e-03
#> 155         155         158 5.631511e-05
#> 159         159         171 5.965309e-04
#> 160         160         192 1.875675e-02
#> 161         161         101 1.434543e-02
#> 164         164         187 2.645183e-03
#> 165         165          49 2.451659e-02
#> 166         166         116 9.470299e-04
#> 168         168          86 1.741546e-02
#> 170         170          55 9.565551e-02
#> 175         175          85 3.499962e-02
#> 177         177          94 1.014170e-03
#> 179         179          43 1.575069e-02
#> 180         180          53 9.362846e-03
#> 182         182         107 2.499405e-03
#> 183         183         184 2.584181e-03
#> 189         189           9 4.460973e-03
#> 190         190          69 3.433886e-03
#> 193         193         197 4.647290e-04
#> 194         194           2 2.976503e-05
#> 195         195         153 9.484857e-02
#> 196         196         105 1.553479e-03
#> 
#> $method
#> [1] "cardinality"
#> 
#> $details
#> $details$engine
#> [1] "native-nearest (MatchIt algorithm)"
#> 
#> $details$caliper
#> NULL
#> 
#> $details$replace
#> [1] FALSE
#> 
#> $details$n_neighbors
#> [1] 1
#> 
#> $details$alpha
#> [1] 0.05
#> 
#> $details$propensity_logit_sd
#> [1] 0.2393504
#> 
#> $details$balance_threshold
#> [1] 0.1
#> 
#> 
#> attr(,"class")
#> [1] "morie_match_result" "list"              
# }