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

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;

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
FreelanceReinh
Jade | Level 19

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.

View solution in original post

5 REPLIES 5
FreelanceReinh
Jade | Level 19

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.

alberto93
Fluorite | Level 6

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.

 

CIF example.png

Can you plz help? 😭

Sorry to bother you but if you don't mind, please also write code for me. Thank you.

 

FreelanceReinh
Jade | Level 19

@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!

Well21
Calcite | Level 5

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!

FreelanceReinh
Jade | Level 19

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!

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 5 replies
  • 1093 views
  • 0 likes
  • 3 in conversation