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.
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.
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"
# }
