BookmarkSubscribeRSS Feed
oakHILLS68
Fluorite | Level 6

I'm doing 1:1 greedy matching using PSMATCH using the following code:

proc psmatch data=one region=allobs;
class grouped sex ClinStageGrp CDCC_TOTAL_BEST FACILITY_TYPE_CD race1 insurance_status location;
psmodel grouped(treated='Neoadjuvant chemo') = sex ClinStageGrp CDCC_TOTAL_BEST
FACILITY_TYPE_CD race1 insurance_status location;
match method=greedy(k=1) exact=(sex race1);
assess ps var=(sex) / varinfo plots=(boxplot barchart) weight=none;
output out(obs=match)=OutOne matchid=matchid;
run;

 

 

I thought I was successful because the following summary indicated that all of my controls were matched.

Matching InformationDifference StatisticMethodControl/Treated RatioOrderCaliper (Logit PS)Matched SetsMatched Obs (Treated)Matched Obs (Control)Total Absolute Difference
Logit of Propensity Score
Greedy Matching
1
Descending
0.233292
1678
1678
1678
12.99654

 

 

However, the following warning appears in the Log:

WARNING: Some treated units have less than the specified K=1 matched controls because there are
not enough available controls for these treated units.

 

Now this is really puzzling because my output data set contains 2 x 1678 = 3356 records.  In other words, twice the number of controls which indicates, to me, 1:1 matching.

 

What's happening here?

 

Thanks.

 

 
1 REPLY 1
MichaelL_SAS
SAS Employee

First off thanks for providing some example code and output, that makes answering the question a lot easier.

 

When using a greedy method that matches without replacement, PROC PSMATCH will print a warning message like the one you are seeing if there are some treated units in the support region that cannot be matched to any control unit. This could occur because of some constraint on the matching (the caliper constraint or variables specified in the EXACT= option) or because there are simply more control units than treated units in the support region. The optimal matching methods in PROC PSMATCH would return an error if there are unmatched treated units in the support region, but for the greedy matching methods the procedure will continue the analysis using the observations it can successfully match.

 

Because the OBS=MATCH option was specified in the OUTPUT statement, the output data set only contains the matched observations. So that is why it contains 3356 observations, one treated unit and one control unit from each of the 1678 matched pairs as indicated in the Matching Information table you provided. 

 

 

 

 

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 1 reply
  • 981 views
  • 2 likes
  • 2 in conversation