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;
Try sorting the data before you plot it:
proc sort data=both_arms;
by Z tR;
run;
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;
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.
Try sorting the data before you plot it:
proc sort data=both_arms;
by Z tR;
run;
Wow- sorting with the break option worked. Thank you both for helping solve this problem!
I don't think you need the missing values or the BREAK option, but I could be mistaken.
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!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.