Compute survival probabilities and optional confidence limits for
Cox survival models. If `x=TRUE, y=TRUE`

were specified to `cph`

,
confidence limits use the correct formula for any combination of
predictors. Otherwise, if `surv=TRUE`

was specified to `cph`

,
confidence limits are based only on standard errors of `log(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
accurate. Unless `times`

is given, at most one observation may be
predicted.

```
survest(fit, …)
# S3 method for 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, ...)
```

fit

a model fit from `cph`

newdata

a data frame containing predictor variable combinations for which predictions are desired

linear.predictors

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).

x

a design matrix at which to compute estimates, with any strata attached
as a "strata" attribute. Only one of `newdata`

,
`linear.predictors`

, or `x`

may be specified. If none is
specified, but `times`

is specified, you will get survival
predictions at all subjects' linear predictor and strata values.

times

a vector of times at which to get predictions. If omitted, predictions are made at all unique failure times in the original input data.

loglog

set to `TRUE`

to make the `log-log`

transformation of survival
estimates and confidence limits.

fun

any function to transform the estimates and confidence limits (`loglog`

is a special case)

conf.int

set to `FALSE`

or `0`

to suppress confidence limits, or e.g. `.95`

to
cause 0.95 confidence limits to be computed

type

see `survfit.coxph`

vartype

see `survfit.coxph`

conf.type

specifies the basis for computing confidence limits. `"log"`

is the
default as in the `survival`

package.

se.fit

set to `TRUE`

to get standard errors of log predicted survival
(no matter what `conf.type`

is).
If `FALSE`

, confidence limits are suppressed.

individual

set to `TRUE`

to have `survfit`

interpret `newdata`

as
specifying a covariable path for a single individual (represented by
multiple records).

what

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 `times`

is the number of
subjects (or one), and causes `survest`

to estimate the ith subject's survival
probability at the ith value of `times`

(or at the scalar value of `times`

).
`what="parallel"`

is used by `val.surv`

for example.

…

unused

If `times`

is omitted, returns a list with the elements
`time`

, `n.risk`

, `n.event`

, `surv`

, `call`

(calling statement), and optionally `std.err`

, `upper`

,
`lower`

, `conf.type`

, `conf.int`

. The estimates in this
case correspond to one subject. If `times`

is specified, the
returned list has possible components `time`

, `surv`

,
`std.err`

, `lower`

, and `upper`

. These will be matrices
(except for `time`

) if more than one subject is being predicted,
with rows representing subjects and columns representing `times`

.
If `times`

has only one time, these are reduced to vectors with
the number of elements equal to the number of subjects.

The result is passed through `naresid`

if `newdata`

,
`linear.predictors`

, and `x`

are not specified, to restore
placeholders for `NA`

s.

# NOT RUN { # 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) # }