Data visualization with SAS programming

overlaid KM and PH curves with unwanted connecting lines with SGPLOT

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 6
Accepted Solution

overlaid KM and PH curves with unwanted connecting lines with SGPLOT

Hi, I am using SAS University Edition. I am trying to overlay a KM curve and PH curve to see if they match relatively well. I can overlay them, but the PH curves have lines connecting the starting point and ending point. Can someone help me remove these lines? 

 

proc phreg data=Allhiv33;
class arm;
model (tL,tR)*status(0)=arm;
baseline out=bb covariates=covs survival=s cumhaz=Ht ;
run;

proc lifetest data=allhiv2 outsurv=c ;
time inf_time*delta(0);
strata arm;
run;

data b_new;
set bb;
length Z $27;
if arm="DMPA" then Z="PH DMPA"; 
if arm="IUD" then Z="PH IUD"; 
if arm="Jadelle" then Z="PH Jadelle"; 
run;

data c_new;
set c(rename=(survival=s inf_time=tR));
length Z $27;
if arm="DMPA" then Z="KM DMPA"; 
if arm="IUD" then Z="KM IUD"; 
if arm="Jadelle" then Z="KM Jadelle"; 
run;

data both_arms;
set b_new c_new;
run;

proc sgplot data=both_arms;
series x=tR y=s / group=Z ;
run;
** neither sgplot rids of connecting lines;
proc sgplot data=both_arms;
step y=s x=tR / group=z;
run;

Snip20180422_1.png


Accepted Solutions
Solution
4 weeks ago
SAS Super FREQ
Posts: 4,109

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

Try sorting the data before you plot it:

 

proc sort data=both_arms;
by Z tR;
run;

View solution in original post


All Replies
Esteemed Advisor
Posts: 5,391

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

[ Edited ]

Add missing values to create breaks in the lines:

 

data both_arms;
set b_new c_new;
by Z notsorted;
output;
if last.Z then do;
    call missing(s);
    output;
    end;
run;

proc sgplot data=both_arms;
series x=tR y=s / group=Z break;
run;
PG
Occasional Contributor
Posts: 6

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

Thanks PG for replying and helping me with this. 

I have tried the suggested code and my problem is still persisting. I am playing around with the break option and trying to set different Y values to missing. Do you think I need to change all values of the last arm or tR (time) for the graph to display correctly. Additionally, maybe I need to also set first values to missing?

Thanks again and any more brain power is appreciated, but obviously not assumed.

Solution
4 weeks ago
SAS Super FREQ
Posts: 4,109

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

Try sorting the data before you plot it:

 

proc sort data=both_arms;
by Z tR;
run;
Occasional Contributor
Posts: 6

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

Wow- sorting with the break option worked. Thank you both for helping solve this problem!

SAS Super FREQ
Posts: 4,109

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

I don't think you need the missing values or the BREAK option, but I could be mistaken.

Occasional Contributor
Posts: 6

Re: overlaid KM and PH curves with unwanted connecting lines with SGPLOT

I just tried it again without the break option, and you're right. I just needed to sort my combined dataset. Thanks for the problem solving!

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 6 replies
  • 122 views
  • 3 likes
  • 3 in conversation