Biau David
2010-Nov-13 17:51 UTC
[R] interpretation of coefficients in survreg AND obtaining the hazard function for an individual given a set of predictors
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. 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, dist='weibull', scale=0) mwb <- survreg(slr~as.factor(grade2), data=stc1, dist='weibull', scale=0)> summary(mca)$coefcoef exp(coef) se(coef) z Pr(>|z|) as.factor(grade2 == "high")TRUE 0.2416562 1.273356 0.2456232 0.9838494 0.3251896> summary(mcb)$coefcoef 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? 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 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. [[alternative HTML version deleted]]
David Winsemius
2010-Nov-13 18:55 UTC
[R] interpretation of coefficients in survreg AND obtaining the hazard function for an individual given a set of predictors
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' categoriesNot 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 hazardAnswered by Therneau earlier this week and the next question last month: https://stat.ethz.ch/pipermail/r-help/2010-November/259570.html https://stat.ethz.ch/pipermail/r-help/2010-October/257941.html> 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
Thomas Lumley
2010-Nov-14 22:54 UTC
[R] interpretation of coefficients in survreg AND obtaining the hazard function for an individual given a set of predictors
On Sun, Nov 14, 2010 at 6:51 AM, Biau David <djmbiau at yahoo.fr> 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. > > 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, 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?No. survreg() fits accelerated failure models, not proportional hazards models. The coefficients are logarithms of ratios of survival times, so a positive coefficient means longer survival.> b) how come the intercept coefficient changes (the scale parameter does not > change)?Because you have reversed the order of the factor levels. The coefficient of that variable changes sign and the intercept changes to compensate.> 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 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.No, it's beta'x_i for the accelerated failure parametrization of the Weibull. In terms of the CDF F_i(t) = F_0( exp((t+beta'x_i)/scale) ) So you need to multiply by the scale parameter and change sign to get the log hazard ratios.> 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.As Terry Therneau pointed out recently in the context of the Cox model, there is no such thing as "the" baseline hazard. The baseline hazard is the hazard when all your covariates are equal to zero, and this depends on how you parametrize. In mwa, zero is grade2="low", in mwb, zero is grade2="high", so the hazard at zero has to be different in the two cases. -thomas -- Thomas Lumley Professor of Biostatistics University of Auckland
Reasonably Related Threads
- Re : interpretation of coefficients in survreg AND obtaining the hazard function for an individual given a set of predictors
- interpretation of coefficients in survreg AND obtaining the hazard function
- Re: Trusting and trusted domain (home mapping) problem
- Memory errors using lmer
- Sequence for repeated numbers