[R] interpretation of coefficients in survreg AND obtaining the hazard function

Terry Therneau therneau at mayo.edu
Mon Nov 15 15:33:23 CET 2010

1. The weibull is the only distribution that can be written in both a
proportional hazazrds for and an accelerated failure time form.  Survreg
uses the latter.
   In an ACF model, we model the time to failure.  Positive coefficients
are good (longer time to death).
   In a PH model, we model the death rate.  Positive coefficients are
bad (higher death rate).

You are not the first to be confused by the change in sign between the
two models.

2. There are about 5 different ways to parameterize a Weibull
distribution, 1-4 appear in various texts and the acf form is #5.  This
is a second common issue with survreg that strikes only the more
sophisticated users: to understand the output they look up the Weibull
in a textbook, and become even more confused!   

Kalbfliesch and Prentice is a good reference for the acf form.  The
manual page for psurvreg has some information on this, as does the very
end of ?survreg.  The psurvreg page also has an example of how to
extract the hazard function for a Weibull fit.

----Begin included message ----

Dear R help list,

I am modeling some survival data with coxph and survreg (dist='weibull')
package survival. I have 2 problems:

1) I do not understand how to interpret the regression coefficients in
survreg output and it is not clear, for me, from ?survreg.objects how

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

slr <- Surv(stc1$ti_lr, stc1$ev_lr==1)

mca <- coxph(slr~as.factor(grade2=='high'), data=stc1)
mcb <- coxph(slr~as.factor(grade2), data=stc1)
mwa <- survreg(slr~as.factor(grade2=='high'), data=stc1,
mwb <- survreg(slr~as.factor(grade2), data=stc1, dist='weibull',

> summary(mca)$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

> 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
other is positive) of what I have in the cox model? are these not the
given the categories of these variable?
b) how come the intercept coefficient changes (the scale parameter does

2) My second question relates to the first.
a) given a model from survreg, say mwa above, how should i do to extract
base hazard 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
predict(mwa, type='linear') is \beta'x_i.
b) since I need the coefficient intercept from the model to obtain the
parameter  to obtain the base hazard function as defined in Collett 
(h_0(t)=\lambda*\gamma*t^{\gamma-1}), I am concerned that this
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 

Any help would be greatly appreciated,

David Biau.

More information about the R-help mailing list