Cox Survival Estimates
Compute survival probabilities and optional confidence limits for
Cox survival models. If
x=TRUE, y=TRUE were specified to
confidence limits use the correct formula for any combination of
predictors. Otherwise, if
surv=TRUE was specified to
confidence limits are based only on standard errors of
S(t)) at the mean value of $X\beta$. If the model
contained only stratification factors, or if predictions are being
requested near the mean of each covariable, this approximation will be
times is given, at most one observation may be
survest(fit, ...) ## S3 method for class 'cph': survest(fit, newdata, linear.predictors, x, times, fun, loglog=FALSE, conf.int=0.95, type, vartype, conf.type=c("log", "log-log", "plain", "none"), se.fit=TRUE, what=c('survival','parallel'), individual=FALSE, ...)
- a model fit from
- a data frame containing predictor variable combinations for which predictions are desired
- a vector of linear predictor values (centered) for which predictions are desired. If the model is stratified, the "strata" attribute must be attached to this vector (see example).
- a design matrix at which to compute estimates, with any strata attached
as a "strata" attribute. Only one of
xmay be specified. If none is specified, but
- a vector of times at which to get predictions. If omitted, predictions are made at all unique failure times in the original input data.
- set to
TRUEto make the
log-logtransformation of survival estimates and confidence limits.
- any function to transform the estimates and confidence limits (
loglogis a special case)
- set to
0to suppress confidence limits, or e.g.
.95to cause 0.95 confidence limits to be computed
- specifies the basis for computing confidence limits.
"log"is the default as in the
- set to
TRUEto get standard errors of log predicted survival (no matter what
FALSE, confidence limits are suppressed.
- set to
newdataas specifying a covariable path for a single individual (represented by multiple records).
- Normally use
what="survival"to estimate survival probabilities at times that may not correspond to the subjects' own times.
what="parallel"assumes that the length of
timesis the number of subjects (or one), and ca
The result is passed through
x are not specified, to restore
timesis omitted, returns a list with the elements
call(calling statement), and optionally
conf.int. The estimates in this case correspond to one subject. If
timesis specified, the returned list has possible components
upper. These will be matrices (except for
time) if more than one subject is being predicted, with rows representing subjects and columns representing
timeshas only one time, these are reduced to vectors with the number of elements equal to the number of subjects.
# Simulate data from a population model in which the log hazard # function is linear in age and there is no age x sex interaction # Proportional hazards holds for both variables but we # unnecessarily stratify on sex to see what happens n <- 1000 set.seed(731) age <- 50 + 12*rnorm(n) label(age) <- "Age" sex <- factor(sample(c('Male','Female'), n, TRUE)) cens <- 15*runif(n) h <- .02*exp(.04*(age-50)+.8*(sex=='Female')) dt <- -log(runif(n))/h label(dt) <- 'Follow-up Time' e <- ifelse(dt <= cens,1,0) dt <- pmin(dt, cens) units(dt) <- "Year" dd <- datadist(age, sex) options(datadist='dd') Srv <- Surv(dt,e) f <- cph(Srv ~ age*strat(sex), x=TRUE, y=TRUE) #or surv=T survest(f, expand.grid(age=c(20,40,60),sex=c("Male","Female")), times=c(2,4,6), conf.int=.9) f <- update(f, surv=TRUE) lp <- c(0, .5, 1) f$strata # check strata names attr(lp,'strata') <- rep(1,3) # or rep('sex=Female',3) survest(f, linear.predictors=lp, times=c(2,4,6)) # Test survest by comparing to survfit.coxph for a more complex model f <- cph(Srv ~ pol(age,2)*strat(sex), x=TRUE, y=TRUE) survest(f, data.frame(age=median(age), sex=levels(sex)), times=6) age2 <- age^2 f2 <- coxph(Srv ~ (age + age2)*strata(sex)) new <- data.frame(age=median(age), age2=median(age)^2, sex='Male') summary(survfit(f2, new), times=6) new$sex <- 'Female' summary(survfit(f2, new), times=6) options(datadist=NULL)