BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
RebeccaB_
Obsidian | Level 7

Hi Everyone, 

 

In my original data set had 37 intervention areas (cases) and I used a logistic regression and PSMATCH to match control ZCTAs at a ratio of 1:2. After performing PSMATCH I have 31 cases and 62 controls (6 intervention areas were not included). I was wondering if the procedure excludes cases if it cannot find appropriately matched controls, and if so, is there a way to override that? Below is my code. 

 

proc logistic data= work.pca_flag descending;
class interven;
model interven= factor1 factor2 factor3 factor4 factor5 factor6 factor7 factor8 factor9 factor10 factor11/ link=logit;
output out=work.PS pred=ps;
run;

 

proc psmatch data=work.ps region=cs;
class interven;
psdata treatvar= interven(treated="intervention") ps=ps;
match method=optimal(k=2) distance=ps caliper=.;
assess lps var=(Employed_civilianover16years Mean_commutetime Median_age PC_income Prcnt_income_wSNAP Prcnt_income_wpublicasst Unemploy_rate ZCAT5 median_income_household persons_sqmile prcnt_AIAN prcnt_Asian prcnt_English_only prcnt_Hispanic prcnt_NOinsurance prcnt_PacificIslander prcnt_agriculture_mining_fishing prcnt_arts_hospitality prcnt_black_NH prcnt_construction prcnt_englessthanwell prcnt_female prcnt_finance_etc prcnt_income_belowpov prcnt_information prcnt_manufacturing prcnt_other_industry prcnt_professional prcnt_publicadmin prcnt_retail prcnt_socialservices prcnt_transportwarehouse prcnt_white_NH prcnt_wholesaletrade prcnt_wprivateinsurance prcnt_wpublicinsurance total_pop);
output out(obs=match)= Outmatch;
run;

 

Thanks!!

1 ACCEPTED SOLUTION

Accepted Solutions
MichaelL_SAS
SAS Employee

Thanks for providing the example code, that makes it much easier to answer your question.

 

I believe the reason there are 6 unmatched treated subjects is the use of the common support region, as requested by the REGION=CS option in the PROC PSMATCH statement. As described in the PROC PSMATCH documentation, only observations in the support region are considered for matching and the common support region can end up excluding subjects from both the treatment and control condition. To ensure that all of the treated subjects are in the support region you could specify that the support region be determined by the propensity score values for the treated subjects (REGION=TREATED) or all of the observations (REGION=ALLOBS). The number of treated subjects in the support region should be displayed I believe both in the "Data Information" table and the "Propensity Score Information" table. 

 

In general the optimal matching methods will return an error message if there is any treated subject in the support region that cannot be matched, whereas the greedy matching method will print a warning message about the unmatched treated subjects but continue to match as many subjects as feasible. 

 

 

View solution in original post

3 REPLIES 3
SteveDenham
Jade | Level 19

Some DATA step manipulation or clever SQL programming would work.  Subset your original dataset so that you have a dataset with only cases, then find the cases that are not in the dataset outmatch.  You could then add these to the outmatch dataset.  They are currently excluded with the option obs=match on the OUTPUT statement.  This will mean that the assessments on the variables in the ASSESS statement would no longer apply, though.

 

SteveDenham

RebeccaB_
Obsidian | Level 7

Thank you for your reply. I just want to make sure I'm understanding the concept correctly. Only 31 ZCTAs are able to find a matched control ZCTA at a 1:2 ratio, and those ZCTAs that are unable to be matched are excluded. 

 

If I add those cases to the Outmatch dataset they obviously wouldn't be matched. Is there another way to do PS matching where I would be able to include all 37 intervention areas? 

MichaelL_SAS
SAS Employee

Thanks for providing the example code, that makes it much easier to answer your question.

 

I believe the reason there are 6 unmatched treated subjects is the use of the common support region, as requested by the REGION=CS option in the PROC PSMATCH statement. As described in the PROC PSMATCH documentation, only observations in the support region are considered for matching and the common support region can end up excluding subjects from both the treatment and control condition. To ensure that all of the treated subjects are in the support region you could specify that the support region be determined by the propensity score values for the treated subjects (REGION=TREATED) or all of the observations (REGION=ALLOBS). The number of treated subjects in the support region should be displayed I believe both in the "Data Information" table and the "Propensity Score Information" table. 

 

In general the optimal matching methods will return an error message if there is any treated subject in the support region that cannot be matched, whereas the greedy matching method will print a warning message about the unmatched treated subjects but continue to match as many subjects as feasible. 

 

 

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
  • 3 replies
  • 1456 views
  • 3 likes
  • 3 in conversation