I am running a matching algorithm to matching patients in a treatment group to patients in a control group without replacement. Say there are $n_T$ treatment group patients and $n_C$ control group patients. For each patient $i = 1,\dots, n$ , let $Y_i(0)$ and $Y_i(1)$ denote the potential outcomes, $Z = 0$ or $Z = 1$ indicate assignment to control or treatment, $X_i$ be a vector of covariates. The propensity score is $e_i = \Pr(Z_i = 1 | X_i)$. I plan to match patients on their linear propensity score, $|logit(e_i) - logit(e_j)|$, though I can change this if there are better approaches.

I only need to match a subset of patients on treatment to a control patient, say $m_T$ out of the $n_T$ patients. I need to match without replacement. There are also many more control patients than treatment patients. Ignoring the estimation of causal effects. Is it reasonable to pick the subset of patients with the "best" matches (smallest difference in propensity score) to control patients? Is there a method for picking a subset such that the sum of the propensity distance is minimized?

For a concrete example, imagine I have 50 treatment patients and 200 control patients. I only need to match 25 of the treatment patients to control patients. I would like to find the "best" 25 matches. I believe these 25 patients should be better matched overall than if I had to match all 50 patients.

I have not seen methods to do this, but I would appreciate any suggestions. My only idea so far is to use a greedy algorithm for propensity score matching but stop after $m_T$ patients have been matched. I don't believe this would give me any guarantees on the matches being optimal in any way though.


1 Answer 1


The most straightforward way would be to specify a caliper. A caliper is the maximum distance two units can be apart from each other before they are not allowed to be matched. Any treated units that do not receive a match because there are no remaining units within their caliper are left unmatched and discarded. The tighter the caliper, the more units are discarded. In theory, a very tight caliper indicates that two units must be very close to each other to be matched, but when using the propensity score difference as the distance metric, two units close to each other on the propensity score may not actually be very close in the covariate space. You can tighten the caliper progressively until only the desired number of treated units remain.

Increasingly tightening a caliper can also induce the "propensity score paradox", whereby balance worsens by tightening the caliper after a certain point. This phenomenon was described by King and Nielsen (2019) (don't take the title of the paper too seriously). You can place a caliper on other distance metrics as well, but they are not often used and not implemented in most matching software (although it is in the R package optmatch using the match_on() function).

Another method is to use integer programming to optimize a criterion subject to a constraint on the number of matches. For example, you could request that the sum of the absolute propensity score differences between paired units be minimized subject to the constraint that exactly 25 treated and control unit pairs are formed. You could also add additional constraints on the difference in covariate means in the matched sample, or on how well balanced nominal covariates are in the matched sample. The R package designmatch is well equipped for this and would be your best bet. The total_groups argument in bmatch() controls how many pairs are formed. Rather than using propensity scores, I recommend you use the covariates you want to balance on to create a Mahalanobis distance matrix (possibly including the propensity score as a covariate), which you can do using the distmat() function, and then supply this matrix to the dist_mat argument of bmatch(). This will allow you to avoid the propensity score paradox and ensure close matches on covariate values.

  • 1
    $\begingroup$ Thank you for the thorough answer and links to the software. I have two follow-up questions. They're tangentially related to the original question so I'm accepting your answer. (1) Do you have a reference for how integer programmer is used in matching algorithms? (2) Does Mahalanobis matching work well when you have no reason to believe the covariates are (multivariate) Gaussian distributed? $\endgroup$
    – Eli
    Oct 15, 2020 at 13:52
  • $\begingroup$ 1) See Zubizarreta (2012). Zubizarreta has written extensively about this and is the authority on the subject. He is the author of designmatch. 2) Sometimes; it depends on the dataset, so I can't make a broad recommendation. There is a robust version of the Mahalanobis distance that uses ranks and is implemented in distmat() which you can also try. I mention Mahalanobis distance matching because in my experiments with a toy dataset, it worked better than PS matching even with categorical covariates. $\endgroup$
    – Noah
    Oct 15, 2020 at 17:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.