Learn R Programming

riskRegression (version 1.3.7)

predictCox: Fast computation of survival probabilities, hazards and cumulative hazards from Cox regression models

Description

Fast routine to get baseline hazards and subject specific hazards as well as survival probabilities from a survival::coxph or rms::cph object

Usage

predictCox(object, newdata = NULL, times, centered = TRUE,
  type = c("hazard", "cumhazard", "survival"), keep.strata = TRUE,
  keep.times = TRUE, keep.newdata = FALSE, se = FALSE, iid = FALSE,
  conf.level = 0.95)

Arguments

object

The fitted Cox regression model object either obtained with coxph (survival package) or cph (rms package).

newdata

A data.frame or data.table containing the values of the predictor variables defining subject specific predictions. Should have the same structure as the data set used to fit the object.

times

Time points at which to evaluate the predictions.

centered

Logical. If TRUE return prediction at the mean values of the covariates fit$mean, if FALSE return a prediction for all covariates equal to zero. in the linear predictor. Will be ignored if argument newdata is used.

type

the type of predicted value. Choices are

  • "hazard" the baseline hazard function when argument newdata is not used and the hazard function when argument newdata is used.

  • "cumhazard" the cumulative baseline hazard function when argument newdata is not used and the cumulative hazard function when argument newdata is used.

  • "survival" the survival baseline hazard function when argument newdata is not used and the cumulative hazard function when argument newdata is used.

Several choices can be combined in a vector of strings that match (no matter the case) strings "hazard","cumhazard", "survival".

keep.strata

Logical. If TRUE add the (newdata) strata to the output. Only if there any.

keep.times

Logical. If TRUE add the evaluation times to the output.

keep.newdata

Logical. If TRUE add the value of the covariates used to make the prediction in the output list.

se

Logical. If TRUE add the standard error corresponding to the output.

iid

Logical. If TRUE add the influence function corresponding to the output.

conf.level

Level of confidence.

Value

A list with some or all of the following elements:

  • times: the time points at which the other elements are evaluated.

  • hazard: When argument newdata is not used the baseline hazard function, otherwise the predicted hazard function.

  • hazard.se: The standard errors of the predicted hazard function.

  • cumhazard: When argument newdata is not used the cumulative baseline hazard function, otherwise the predicted cumulative hazard function.

  • cumhazard.se: The standard errors of the predicted cumulative hazard function.

  • survival: When argument newdata is not used the survival probabilities corresponding to the baseline hazard, otherwise the predicted survival probabilities.

  • survival.se: The standard errors of the predicted survival.

  • strata: The strata variable.

Details

Not working with time varying predictor variables or delayed entry. The centered argument enables us to reproduce the results obtained with the basehaz function from the survival package.

Examples

Run this code
library(survival)

set.seed(10)
d <- sampleData(40,outcome="survival")
nd <- sampleData(4,outcome="survival")
d$time <- round(d$time,1)
fit <- coxph(Surv(time,event)~X1 + strata(X2) + X6,
             data=d, ties="breslow", x = TRUE, y = TRUE)
# table(duplicated(d$time))

predictCox(fit)
predictCox(fit,centered=FALSE,type="hazard")
predictCox(fit,centered=TRUE,type="hazard")
predictCox(fit, newdata=nd, times=c(3,8),se=TRUE)
predictCox(fit, newdata=nd, times = 5,iid=TRUE)

cbind(survival::basehaz(fit),predictCox(fit,type="cumhazard")$cumhazard)

# one strata variable
fitS <- coxph(Surv(time,event)~strata(X1)+X2,
              data=d, ties="breslow", x = TRUE, y = TRUE)

predictCox(fitS)
predictCox(fitS, newdata=nd, times = 1)

# two strata variables
set.seed(1)
d$U=sample(letters[1:5],replace=TRUE,size=NROW(d))
d$V=sample(letters[4:10],replace=TRUE,size=NROW(d))
nd$U=sample(letters[1:5],replace=TRUE,size=NROW(nd))
nd$V=sample(letters[4:10],replace=TRUE,size=NROW(nd))
fit2S <- coxph(Surv(time,event)~X1+strata(U)+strata(V)+X2,
              data=d, ties="breslow", x = TRUE, y = TRUE)

cbind(survival::basehaz(fit2S),predictCox(fit2S,type="cumhazard")$cumhazard)
predictCox(fit2S)
predictCox(fitS, newdata=nd, times = 3)


Run the code above in your browser using DataLab