Validation of a Fitted Cox or Parametric Survival Model's Indexes of Fit
This is the version of the validate
function specific to models
fitted with cph
or psm
. Also included is a small
function dxy.cens
that retrieves Dxy and its
standard error from the survival
package's
survConcordance.fit
function. This allows for incredibly fast
computation of Dxy or the c-index even for hundreds of
thousands of observations. dxy.cens
negates Dxy
if log relative hazard is being predicted. If y
is a
left-censored Surv
object, times are negated and a
right-censored object is created, then Dxy is negated.
# fit <- cph(formula=Surv(ftime,event) ~ terms, x=TRUE, y=TRUE, \dots) ## S3 method for class 'cph' validate(fit, method="boot", B=40, bw=FALSE, rule="aic", type="residual", sls=.05, aics=0, force=NULL, estimates=TRUE, pr=FALSE, dxy=TRUE, u, tol=1e-9, ...) ## S3 method for class 'psm' validate(fit, method="boot",B=40, bw=FALSE, rule="aic", type="residual", sls=.05, aics=0, force=NULL, estimates=TRUE, pr=FALSE, dxy=TRUE, tol=1e-12, rel.tolerance=1e-5, maxiter=15, ...) dxy.cens(x, y, type=c('time','hazard'))
fit |
a fit derived |
method |
see |
B |
number of repetitions. For |
rel.tolerance,maxiter,bw |
|
rule |
Applies if |
type |
|
sls |
significance level for a factor to be kept in a model, or for judging the residual chi-square. |
aics |
cutoff on AIC when |
force |
see |
estimates |
see |
pr |
|
tol,... |
see |
dxy |
set to |
u |
must be specified if the model has any stratification factors and
|
x |
a numeric vector |
y |
a |
Statistics validated include the Nagelkerke R^2,
Dxy, slope shrinkage, the discrimination index D
[(model L.R. chi-square - 1)/L], the unreliability index
U = (difference in -2 log likelihood between uncalibrated
X beta and
X beta with overall slope calibrated to test sample) / L,
and the overall quality index Q = D - U. g is the
g-index on the log relative hazard (linear predictor) scale.
L is -2 log likelihood with beta=0. The "corrected" slope
can be thought of as shrinkage factor that takes into account overfitting.
See predab.resample
for the list of resampling methods.
matrix with rows corresponding to Dxy, Slope, D,
U, and Q, and columns for the original index, resample estimates,
indexes applied to whole or omitted sample using model derived from
resample, average optimism, corrected index, and number of successful
resamples.
The values corresponding to the row Dxy are equal to 2 * (C - 0.5) where C is the C-index or concordance probability. If the user is correlating the linear predictor (predicted log hazard) with survival time, Dxy is automatically negated.
prints a summary, and optionally statistics for each re-fit (if
pr=TRUE
)
Frank Harrell
Department of Biostatistics, Vanderbilt University
fh@fharrell.com
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 e <- ifelse(dt <= cens,1,0) dt <- pmin(dt, cens) units(dt) <- "Year" S <- Surv(dt,e) f <- cph(S ~ age*sex, x=TRUE, y=TRUE) # Validate full model fit validate(f, B=10) # normally B=150 # Validate a model with stratification. Dxy is the only # discrimination measure for such models, by Dxy requires # one to choose a single time at which to predict S(t|X) f <- cph(S ~ rcs(age)*strat(sex), x=TRUE, y=TRUE, surv=TRUE, time.inc=2) validate(f, u=2, B=10) # normally B=150 # Note u=time.inc
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.