Code below is the example from SAS GUIDE. I am working on an analysis referring to this example.
But this example only has two covariates affecting the event. But my model has several. How can I plot CIF plot using my variables?
All the variables are categorical except Age and avg_income.. Plz, help!!!!!!!
/*My code*/
proc phreg data=a.new_status plots(overlay=stratum)=cif;
class gout_case(ref='0') sex(ref='1')/param=ref;
model duration*status(0)=case age sex cvd diabe hyp dysli pd hl tbi avg_income/ eventcode(cox)=1;
baseline covariates=a.risk;
run;
/*Example from SAS guide*/
proc format;
value DiseaseGroup 1='ALL'
2='AML-Low Risk'
3='AML-High Risk';
data Bmt;
input Disease T Status @@;
label T='Disease-Free Survival in Days';
format Disease DiseaseGroup.;
datalines;
1 2081 0 1 1602 0 1 1496 0 1 1462 0 1 1433 0
1 1377 0 1 1330 0 1 996 0 1 226 0 1 1199 0
1 1111 0 1 530 0 1 1182 0 1 1167 0 1 418 2
1 383 1 1 276 2 1 104 1 1 609 1 1 172 2
1 487 2 1 662 1 1 194 2 1 230 1 1 526 2
1 122 2 1 129 1 1 74 1 1 122 1 1 86 2
1 466 2 1 192 1 1 109 1 1 55 1 1 1 2
1 107 2 1 110 1 1 332 2 2 2569 0 2 2506 0
2 2409 0 2 2218 0 2 1857 0 2 1829 0 2 1562 0
2 1470 0 2 1363 0 2 1030 0 2 860 0 2 1258 0
2 2246 0 2 1870 0 2 1799 0 2 1709 0 2 1674 0
2 1568 0 2 1527 0 2 1324 0 2 957 0 2 932 0
2 847 0 2 848 0 2 1850 0 2 1843 0 2 1535 0
2 1447 0 2 1384 0 2 414 2 2 2204 2 2 1063 2
2 481 2 2 105 2 2 641 2 2 390 2 2 288 2
2 421 1 2 79 2 2 748 1 2 486 1 2 48 2
2 272 1 2 1074 2 2 381 1 2 10 2 2 53 2
2 80 2 2 35 2 2 248 1 2 704 2 2 211 1
2 219 1 2 606 1 3 2640 0 3 2430 0 3 2252 0
3 2140 0 3 2133 0 3 1238 0 3 1631 0 3 2024 0
3 1345 0 3 1136 0 3 845 0 3 422 1 3 162 2
3 84 1 3 100 1 3 2 2 3 47 1 3 242 1
3 456 1 3 268 1 3 318 2 3 32 1 3 467 1
3 47 1 3 390 1 3 183 2 3 105 2 3 115 1
3 164 2 3 93 1 3 120 1 3 80 2 3 677 2
3 64 1 3 168 2 3 74 2 3 16 2 3 157 1
3 625 1 3 48 1 3 273 1 3 63 2 3 76 1
3 113 1 3 363 2
;
data Risk;
Disease=1; output;
Disease=2; output;
Disease=3; output;
format Disease DiseaseGroup.;
run;
ods graphics on;
proc phreg data=Bmt plots(overlay=stratum)=cif;
class Disease (order=internal ref=first);
model T*Status(0)=Disease / eventcode=1;
Hazardratio 'Pairwise' Disease / diff=pairwise;
baseline covariates=Risk out=out1 cif=_all_ / seed=191;
run;
ods graphics on;
title 'Cause-specific Analysis';
proc phreg data=Bmt plots(overlay)=cif;
class Disease (order=internal ref=first);
model T*Status(0)=Disease / eventcode(cox)=1;
baseline covariates=Risk out=out2 cif=_all_;
run;
Hello @alberto93,
My understanding is that the example uses only one covariate (Disease) and if you have more than that, you'll include those combinations of covariate values in the COVARIATES= dataset (i.e., a.risk in your code) for which you want to see a CIF curve in the plot (and the corresponding estimates in the OUT= dataset, if any). So, a simplified version of your a.risk dataset might look like this:
Obs covset age sex diabe 1 1 60 M 0 2 2 60 M 1 3 3 60 F 1 4 4 70 F 1
Each of the four covariate sets would correspond to one curve in the CIF plot, one for 60-year-old men without diabetes at baseline, one for 60-year-old men with diabetes at baseline, etc., so you could compare some "typical" groups of patients in terms of their CIF. (I've introduced an optional variable covset as a convenient identifier for the combinations, cf. the automatic legend of the CIF plot.) Note that the CIF estimates for these groups can be calculated even if a particular combination of covariate values (e.g. age exactly 60, etc.) doesn't actually occur in the data.
Hello @alberto93,
My understanding is that the example uses only one covariate (Disease) and if you have more than that, you'll include those combinations of covariate values in the COVARIATES= dataset (i.e., a.risk in your code) for which you want to see a CIF curve in the plot (and the corresponding estimates in the OUT= dataset, if any). So, a simplified version of your a.risk dataset might look like this:
Obs covset age sex diabe 1 1 60 M 0 2 2 60 M 1 3 3 60 F 1 4 4 70 F 1
Each of the four covariate sets would correspond to one curve in the CIF plot, one for 60-year-old men without diabetes at baseline, one for 60-year-old men with diabetes at baseline, etc., so you could compare some "typical" groups of patients in terms of their CIF. (I've introduced an optional variable covset as a convenient identifier for the combinations, cf. the automatic legend of the CIF plot.) Note that the CIF estimates for these groups can be calculated even if a particular combination of covariate values (e.g. age exactly 60, etc.) doesn't actually occur in the data.
Thank you for your smart and kind answer!!
You are meaning that each row becomes a line in CIF graph?
What if I want to plot CIF only with lines status=0, status=1. status=2 adjusting with other variables included in the previous question?
I'm trying to check the competing risk between certain disease and death.
So status=1 means having a disease, and status=2 means death before having a disease.
I'm getting confused...
So the graph should be looking like below.
Can you plz help? 😭
Sorry to bother you but if you don't mind, please also write code for me. Thank you.
@alberto93 wrote:
You are meaning that each row becomes a line in CIF graph?
Yes, each row in the COVARIATES= dataset adds one CIF curve to the plot.
@alberto93 wrote:
What if I want to plot CIF only with lines status=0, status=1. status=2 adjusting with other variables included in the previous question?
I'm trying to check the competing risk between certain disease and death.
So status=1 means having a disease, and status=2 means death before having a disease.
Your variable status is not a covariate, hence not suitable for the COVARIATES= dataset. If covariates such as age, sex, diabe, etc. have an impact on the time to disease or death, but you don't want separate CIF curves for different covariate sets, you may want to use "the reference levels for the CLASS variables and the average values for the continuous variables" (according to the documentation of the BASELINE statement) or maybe the DIRADJ option. I've never done this particular type of survival analysis, so can't be more specific, sorry. Good luck!
Hi, may I know if you have solved the problem? I've met the same question and I don't know how to add
more categorical variables to the model and still show only several groups in the CIF curve. Thanks!
Hi @Well21 and welcome to the SAS Support Communities!
If @alberto93 doesn't reply in this old thread (I haven't worked with CIF curves since then), I suggest that you open a new thread describing your problem, ideally in the Statistical Procedures forum. (You can include a link to this old thread if needed.) Thus you will reach a much larger audience. Good luck!
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!
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.
Ready to level-up your skills? Choose your own adventure.