[R] interpretation of coefficients in survreg AND obtaining the hazard function for an individual given a set of predictors

David Winsemius dwinsemius at comcast.net
Sat Nov 13 19:55:10 CET 2010

On Nov 13, 2010, at 12:51 PM, Biau David wrote:

> Dear R help list,
> I am modeling some survival data with coxph and survreg  
> (dist='weibull') using
> package survival. I have 2 problems:
> 1) I do not understand how to interpret the regression coefficients  
> in the
> survreg output and it is not clear, for me, from ?survreg.objects  
> how to.

Have you read:

?survreg.distributions  # linked from survreg help

> Here is an example of the codes that points out my problem:
> - data is stc1
> - the factor is dichotomous with 'low' and 'high' categories

Not an unambiguous description for the purposes of answering your many  
questions. Please provide data or at the very least: str(stc1)

> slr <- Surv(stc1$ti_lr, stc1$ev_lr==1)
> mca <- coxph(slr~as.factor(grade2=='high'), data=stc1)

Not sure what that would be returning since we do not know the  
encoding of grade2. If you want an estimate on a subset wouldn't you  
do the subsetting outside of the formula? (You may be reversing the  
order by offering a logical test for grade2.)

> mcb <- coxph(slr~as.factor(grade2), data=stc1)

You have not provided the data or str(stc1), so it is entirely  
possible that as.factor is superfluous in this call.

> mwa <- survreg(slr~as.factor(grade2=='high'), data=stc1,  
> dist='weibull',
> scale=0)
> mwb <- survreg(slr~as.factor(grade2), data=stc1, dist='weibull',  
> scale=0)
>> summary(mca)$coef
>                                                             coef
> exp(coef)      se(coef)         z                      Pr(>|z|)
> as.factor(grade2 == "high")TRUE 0.2416562  1.273356     0.2456232
> 0.9838494      0.3251896
>> summary(mcb)$coef
>                                       coef             exp(coef)
> se(coef)             z                     Pr(>|z|)
> as.factor(grade2)low -0.2416562 0.7853261     0.2456232     -0.9838494
> 0.3251896
>> summary(mwa)$coef
> (Intercept)     as.factor(grade2 == "high")TRUE
> 7.9068380       -0.4035245
>> summary(mwb)$coef
> (Intercept)     as.factor(grade2)low
> 7.5033135       0.4035245
> No problem with the interpretation of the coefs in the cox model.  
> However, i do
> not understand why
> a) the coefficients in the survreg model are the opposite (negative  
> when the
> other is positive) of what I have in the cox model? are these not  
> the log(HR)
> given the categories of these variable?

Probably because the order of the factor got reversed when you changed  
the covariate to logical and them back to factor.

> b) how come the intercept coefficient changes (the scale parameter  
> does not
> change)?
> 2) My second question relates to the first.
> a) given a model from survreg, say mwa above, how should i do to  
> extract the
> base hazard

Answered by Therneau earlier this week and the next question last month:



> and the hazard of each patient given a set of predictors? With the
> hazard function for the ith individual in the study given by  h_i(t) =
> exp(\beta'x_i)*\lambda*\gamma*t^{\gamma-1}, it doesn't look like to  
> me that
> predict(mwa, type='linear') is \beta'x_i.

> b) since I need the coefficient intercept from the model to obtain  
> the scale
> parameter  to obtain the base hazard function as defined in Collett
> (h_0(t)=\lambda*\gamma*t^{\gamma-1}), I am concerned that this  
> coefficient
> intercept changes depending on the reference level of the factor  
> entered in the
> model. The change is very important when I have more than one  
> predictor in the
> model.
> Any help would be greatly appreciated,
> David Biau.

David Winsemius, MD
West Hartford, CT

More information about the R-help mailing list