Error: A feasible optimal fixed ratio matching that has the specified parameters does not exist.
I am trying to do propensity score matching but I keep getting an error saying "A feasible optimal fixed ratio matching that has the specified parameters does not exist". When I change the keyword OPTIMAL to GREEDY everything works fine.
Below is my code;
PROC PSMATCH DATA = dataset REGION = CS; CLASS drug_group gender age_cat; PS MODEL drug_group(TREATED = 'Medication') = gender age_cat education health_index; MATCH METHOD = OPTIMAL(K=1) EXACT = (gender age_cat) STAT = LPS CALIPER = 0.2; ASSESS LPS VAR = (age_cat education health_index) / WEIGHT = NONE PLOTS =(BOXPLOT BARCHART); OUTPUT OUT(OBS=ALL) = match_data LPS = _lps MATCHID = _matchid; RUN;
I have more patients in the 'Medication' group than the control group. I've tried changing the caliper but that didn't help.
Any help is appreciated. Thank you!
Yes, the caliper introduces a constraint on the matching problem. The caliper requires that any matched observations must have a difference in propensity score values or logits of the propensity score values (in your example code I believe it's the logits that are being compared) less than the caliper value. So it is likely the case that there is again some "treated" observation that cannot be matched due to the caliper constraint (and the constraints coming from the EXACT= option).
Note as discussed in the CALIPER portion of the PROC PSMATCH documentation, by default the caliper value is computed by taking a pooled estimate of the standard deviation of the logits of the propensity scores or propensity scores and multiplying that by the value specified in the CALIPER= option. If you don't specify a value in the CALIPER= option, by default 0.25 used as the multiplier. Specifying CALIPER=. removes the caliper constraint completely. You can also directly specify a caliper value by using the CALIPER(MULT=ONE)= syntax. The caliper value is reported in the "Matching Information" table.
Thanks, Reeza. That's just a typo when I was typing the code in the forum.
There being more observations in the treatment condition than in the control condition is likely the cause. The optimal matching methods in PROC PSMATCH are done without replacement and will return an error if there is a treated observation (in the support region) that cannot be matched. The greedy matching method is also done without replacement but will allow for unmatched treated observations and print a message noting the unmatched treated subjects in the log. Another alternative would be to use matching with replacement, in which case observations in the control condition can be matched to more than one treated observation. Example 96.6 in the PROC PSMATCH documentation demonstrates matching with replacement.
Yes, the caliper introduces a constraint on the matching problem. The caliper requires that any matched observations must have a difference in propensity score values or logits of the propensity score values (in your example code I believe it's the logits that are being compared) less than the caliper value. So it is likely the case that there is again some "treated" observation that cannot be matched due to the caliper constraint (and the constraints coming from the EXACT= option).
Note as discussed in the CALIPER portion of the PROC PSMATCH documentation, by default the caliper value is computed by taking a pooled estimate of the standard deviation of the logits of the propensity scores or propensity scores and multiplying that by the value specified in the CALIPER= option. If you don't specify a value in the CALIPER= option, by default 0.25 used as the multiplier. Specifying CALIPER=. removes the caliper constraint completely. You can also directly specify a caliper value by using the CALIPER(MULT=ONE)= syntax. The caliper value is reported in the "Matching Information" table.
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!
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.