3
$\begingroup$

I have different predictors for survival data. How can I compare which predictor set would act as the better set? In other words, how can I compare "albumin" vs "sex+age" below?

I am aware of R's anova() for cox models, and asking for basically different models which are not "nested". I think this two posts are related but I cant wholly understand them.

How to interpret and compare models in Cox regression?

Comparison of Cox models

library(survival)
data(pbc)

pbc <- within(pbc, {
    event <- as.numeric(status %in% c(1,2))# transplant(1) and death(2) are considered events n marked 1
    Surv <- Surv(time, event) # Create a survival vector
                   }   )

coxph.age.sex  <- coxph(Surv ~ age + sex, data = pbc) 
summary( coxph.age.sex)
#Call:
#coxph(formula = Surv ~ age + sex, data = pbc)

#  n= 418, number of events= 186 

#          coef exp(coef)  se(coef)      z Pr(>|z|)   
#age   0.022097  1.022343  0.007271  3.039  0.00237 **
#sexf -0.299952  0.740854  0.209753 -1.430  0.15271   
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#     exp(coef) exp(-coef) lower .95 upper .95
#age     1.0223     0.9781    1.0079     1.037
#sexf    0.7409     1.3498    0.4911     1.118

#Concordance= 0.569  (se = 0.022 )
#Likelihood ratio test= 11.98  on 2 df,   p=0.003
#Wald test            = 12.24  on 2 df,   p=0.002
#Score (logrank) test = 12.29  on 2 df,   p=0.002

coxph.albumin  <- coxph(Surv ~ albumin, data = pbc)
summary( coxph.albumin)
#Call:
#coxph(formula = Surv ~ albumin, data = pbc)
#
# n= 418, number of events= 186 
#
#          coef exp(coef) se(coef)      z Pr(>|z|)    
# albumin -1.4695    0.2300   0.1714 -8.574   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#        exp(coef) exp(-coef) lower .95 upper .95
#albumin      0.23      4.347    0.1644    0.3219

#Concordance= 0.688  (se = 0.021 )
#Likelihood ratio test= 66.6  on 1 df,   p=3e-16
#Wald test            = 73.51  on 1 df,   p=<2e-16
#Score (logrank) test = 72.38  on 1 df,   p=<2e-16

Thank you in advance.

$\endgroup$

1 Answer 1

3
$\begingroup$

Think very carefully about whether you really want to do completely separate models. All regression models run a risk of omitted-variable bias when you omit predictors associated with outcome. With Cox regression, as for logistic regression, this can happen even if the omitted predictor isn't correlated with the included predictors. If your interest is in prediction, then you should include all predictors associated with outcome (provided that you don't over-fit the data). As part of modeling you might then choose to re-evaluate individual predictors among the complete set of predictors, by comparing nested models. That is easily done by standard anova() comparison of the models.

There are ways to compare non-nested Cox models formally, some of which are discussed in this thread. I'm struck, however, that an R package devoted to non-nested model comparison doesn't seem to provide support for Cox models, and the package that provides partial-likelihood comparisons of Cox models doesn't seem to have an official release yet.

If your interest is in prediction, one possibility would be to evaluate the predictive performance. In your example case, the concordance (fraction of pairs of cases in which the predicted and actual event order in time agrees) of the second model is substantially greater than that of the first, indicating superiority of the second model. In general, however, concordance isn't a very sensitive measure for comparing different models.

A better general approach is to repeat the modeling on multiple bootstrapped samples of the data and test performance of each of the model types on the full data set. That's a good way to estimate how well your models might perform on new samples from the population.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.