turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- Analytics
- /
- Stat Procs
- /
- how to get the p-value of Hazard Ratio for Cox mod...

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-21-2017 08:03 PM

Hi,

I tried to get p-value for hazard ratio for a Cox model with interaction term, it seems like Harzard Ratio statement doesn' t provide p-value, must I use estimate statement? Appreicate any input!

Thanks,

Teresa

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-21-2017 09:43 PM

In general for interaction terms you need to specify a level ie AT() and then I thought you did get a P-Value?

What does your code currently look like?

Ideally you can replicate your issue with some sample data, data from the documentation will be fine I just don't feel like mocking up data to test this...or someone else will answer

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 06:29 PM

Thanks! Here is the example code for proc phreg. The Hazardratio were used to compute hazard ratio, but p-value will not be displayed in the output. is there any option for Harzardratio statement can provide p-value?

data testp;

input val trt censor var1 var2;

datalines;

3 1 0 2 2

18.9 1 1 1 5

3.6 1 0 2 2

6.5 1 0 2 7

13.5 1 1 1 4

11 1 1 1 1

3.8 1 0 2 3

3.8 1 1 2 4

10.5 1 0 2 3

2.3 1 0 1 8

3.1 1 0 2 6

2.3 1 0 2 2

1 2 1 1 2

3.7 2 1 2 5

7.8 2 1 2 7

2.4 2 0 2 9

2.5 2 1 2 5

6.8 2 0 1 3

6.3 2 0 2 4

2.4 2 1 1 3

1.7 2 0 2 6

7.8 2 0 2 8

16.4 2 1 1 3

3.8 2 0 2 2

;

run;

proc print; run;

proc phreg data=testp;

class trt(ref="2") ;

model aval*censor(1) = trt var2 trt*var2/rl ties=efron ;

hazardratio 'var2' var2/units=10 cl=both;

hazardratio 'trt' trt/ at(var2=1) cl=both alpha=0.10;

run;

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 08:43 PM

The P-Value comes from the ParameterEstimates table.

Or am I missing something?

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 10:20 PM

if interaction term is involved, it only provides the p-value for coefficient estimate. Hazard ratio would be provided in parameterEstimates table.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 10:39 PM

Isn't the HazardRatio the exp(parameterEstimate) especially if Referential coding is used - which you aren't by the way. It's typically how models are run so just making a note of this.

I do think the p-value of the parameter estimate is the same as the hazard ratio, it's a bit tricky to see in your example because you only have two trt. If you have 3, you see that interaction term generates one for each level of your categorical variable to match.

I'll move your question to the Statistical Procedures forum and maybe one of the other more knowledgeable stat's guru's can chime in and correct me

Hazard Ratio calcs according to SAS:

The alternative is to write your own custom CONTRAST statement but that seems like a pain. It would be one way to check things though.

PS. I spent years doing survival analysis but sadly I've spent more years not so I'm getting too rusty to answer these types of questions anymore

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 11:10 PM

Thanks, Reeza.

1. I tried param=ref, the estimates are the same.

2. the p-value for coefficient estimate is the same for HR if the interaction of categorical and continuous variables are involved. But the hazard ration is still not displayed in ParameterEstimate table.

3. if interaction of two categorical variables are involved, there will be several HRs for different levels of categorical variables, the p-value won't be the same (only one p-value of coefficient estimate is displayed in the ParameterEstimates table).

4. I really don't like to use Contrast or Estimate, it is indeed a pain. Thanks for moving the question to statistical forum. I hope some other stat staff could chime in.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 11:11 PM

BTW, this is the code if interaction of two categorical variables is involved.

proc phreg data=testp;

class trt(ref="2") var1(ref="2")/param=ref;

model val*censor(1) = trt var1 trt*var1/rl ties=efron ;

hazardratio 'var1' var1/diff=ref at(trt='1') cl=both;

hazardratio 'var1' var1/diff=ref at(trt='2') cl=both;

hazardratio 'trt' trt/diff=ref at(var1='1') cl=both;

hazardratio 'trt' trt/diff=ref at(var1='2') cl=both;

run;

proc phreg data=testp;

class trt(ref="2") var1(ref="2")/param=ref;

model val*censor(1) = trt var1 trt*var1/rl ties=efron ;

hazardratio 'var1' var1/diff=ref at(trt='1') cl=both;

hazardratio 'var1' var1/diff=ref at(trt='2') cl=both;

hazardratio 'trt' trt/diff=ref at(var1='1') cl=both;

hazardratio 'trt' trt/diff=ref at(var1='2') cl=both;

run;

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 11:18 PM

jojo wrote:

Thanks, Reeza.

1. I tried param=ref, the estimates are the same.

2. the p-value for coefficient estimate is the same for HR if the interaction of categorical and continuous variables are involved. But the hazard ration is still not displayed in ParameterEstimate table.

3. if interaction of two categorical variables are involved, there will be several HRs for different levels of categorical variables, the p-value won't be the same (only one p-value of coefficient estimate is displayed in the ParameterEstimates table).

4. I really don't like to use Contrast or Estimate, it is indeed a pain. Thanks for moving the question to statistical forum. I hope some other stat staff could chime in.

Is #3 correct? Try adding some more levels to your data to see. In your example all your variables are binary so you only need 1 level, but if more are involved there are more estimates in the table.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

03-23-2017 11:47 PM

I added one level to var1, it is three levels categorical variable now.

If the reference group of one categorical variable in the interaction term, HR is just exp(coefficient estimate of the interaction term) in the ParameterEstimate, but for the interaction term that both categorical are non-reference group, the HR calc involved the coefficient of main effect estimate in the ParamerEstimate table, p-value will not be the same as the p-value for the coefficient of the interaction term (attached the output here). Let me know if I am wrong.

data testp;

input val trt censor var1 var2;

datalines;

3 1 0 2 2

18.9 1 1 1 5

3.6 1 0 2 2

6.5 1 0 3 7

13.5 1 1 1 4

11 1 1 1 1

3.8 1 0 2 3

3.8 1 1 2 4

10.5 1 0 2 3

2.3 1 0 1 8

3.1 1 0 2 6

2.3 1 0 3 2

1 2 1 1 2

3.7 2 1 2 5

7.8 2 1 3 7

2.4 2 0 3 9

2.5 2 1 2 5

6.8 2 0 1 3

6.3 2 0 2 4

2.4 2 1 1 3

1.7 2 0 2 6

7.8 2 0 3 8

16.4 2 1 1 3

3.8 2 0 2 2

;

run;

proc print; run;

proc phreg data=testp;

class trt(ref="2")/param=ref ;

model val*censor(1) = trt var2 trt*var2/rl ties=efron ;

hazardratio 'var2' var2/units=10 cl=both;

hazardratio 'trt' trt/ at(var2=1) cl=both alpha=0.10;

run;

ods output ParameterEstimates=est;

proc phreg data=testp;

class trt(ref="2") var1(ref="2")/param=ref;

model val*censor(1) = trt var1 trt*var1/rl ties=efron ;

hazardratio 'var1' var1/diff=ref at(trt='1') cl=both;

hazardratio 'var1' var1/diff=ref at(trt='2') cl=both;

hazardratio 'trt' trt/diff=ref at(var1='1') cl=both;

hazardratio 'trt' trt/diff=ref at(var1='2') cl=both;

run;

data est1;

set est;

exp_est = exp(estimate);

run;

proc print data = est1; run;