0
votes

I am using MatchIt to try different matching models and achieve balance between treatment and control group.

One of the models I specify uses optimal matching. However, this method often gives worst results than nearest neighbour matching with caliper. This is because it matches all treatment units to a control unit, whereas nearest neighbour allows for discarding such units with the options "discard" or "caliper".

I know that there is no way to implement the caliper directly on optimal matching with MatchIt. However, is there a way to run optimal matching with the units that fall only within the region of common support?

1

1 Answers

0
votes

You can use calipers and common support with optimal matching in MatchIt.

For common support, just use the standard common support argument (i.e., discard). matchit() processes this argument and performs the common support pruning before processing the matching algorithm.

For calipers, you can supply the width of the caliper to the caliper argument. Note that by default, this works differently from the caliper argument when doing nearest neighbor matching, in that it is not in standard deviation units. To ensure it is in standard deviation units, set standardization.scale = sd (yes, no quotes around sd). The reason this is so is that matchit() passes arguments down to fullmatch() in the optmatch package, and while fullmatch() doesn't have a caliper argument, it accepts arguments from match_on(), which does have a caliper argument. I agree that this is quite obscure and it would be nice if the MatchIt documentation was clearer on this.