BookmarkSubscribeRSS Feed
Bumble_15
Fluorite | Level 6

Hello,

I am conducting an analysis to evaluate the relationship between several binary outcomes (death, blood transfusion, 30-day readmission) and a continuous predictor (number of surgeries done at a hospital). I would also like to adjust my model for covariates (age, sex, cardiac anomaly). My objective is to visually examine whether there exists an inflection point, indicating a number of surgeries, where the probability of the outcome changes. 

 

There is a paper by Ravi et al. (https://www.bmj.com/content/348/bmj.g3284) that conducted an analysis similar to what I'm hoping to do, using restricted cubic spline plots.

 

My current approach was to use PROC LOGISTIC with the EFFECTS function for restricted cubic splines, and then plot the predicted probabilities, but I am having trouble with graphing the output though and could use some help. I also appreciate any feedback on my approach/coding in general.

 

So far, this is what I am using:

proc logistic data = have outdesignonly;
effect spl = spline (surgeries / details naturalcubic basis= tpf(noint) knotmethod= percentiles(3));
class sex (ref=0) cardiac_anomaly (ref=0)/ param=ref;
model blood_transfusion = surgeries age sex cardiac_anomaly;
output out= splineout predicted= fit;
run;

title "Restricted Cubic Spline Regression for Blood Transfusion";
proc sgplot data= splineout noautolegend;
scatter x= surgeries y=fit/ lineattrs= (thickness =3 color=red);
run;

I have chosen 3 knots because my sample is relatively small (n ~500). 

 

Eventually, I would like to be able to plot an overlay plot for the various outcomes, but I am also unclear on how this could be achieved. 

 

Thank you in advance for any suggestions!

2 REPLIES 2
Ksharp
Super User
You didn't include spline effect SPL in your model.
You could try EFFECTPLOT statement of PROC LOGISTIC or PROC PLM.

https://blogs.sas.com/content/iml/2016/03/21/statistical-analysis-stephen-curry-shooting.html

proc logistic data=curry;
where Shot_Distance <= 30;
effect spl = spline(X Y / degree=2);
model Shot_Made(event='Made') = spl / SCALE=NONE AGGREGATE;
effectplot contour / showCLegend;
run;

https://blogs.sas.com/content/iml/2016/06/22/sas-effectplot-statement.html
https://blogs.sas.com/content/iml/2019/02/11/proc-plm-regression-models-sas.html
Bumble_15
Fluorite | Level 6

Thank you for your response.

It seems I'm able to plot the predicted probabilities of my model using Proc PLM and EFFECTPLOT. The code I am using is:

proc logistic data = have;
effect spl= spline(surgeries/ details naturalcubic basis=tpf(noint) knotmethod=percentiles(4));
class sex cardiac_anomaly/ param =ref;
model blood_transfusion (event ='1') = surgeries age sex cardiac_anomaly spl;
store Model;
run;

proc plm source = Model;
effectplot fit (x=surgeries)/ at (sex ='0' cardiac_anomaly ='0');
run;

I would appreciate any feedback on my model; the way I understand it, is that the cubic spline regression predictions are plotted, showing trends within my data. I am unable to share my plots unfortunately, but they do ressemble those in: https://blogs.sas.com/content/iml/2016/06/22/sas-effectplot-statement.html

 

Thank you!

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 839 views
  • 0 likes
  • 2 in conversation