cph
), parametric survival models (
psm
),
binary and ordinal logistic models (
lrm
) and ordinary least squares (
ols
).
For survival models,
"predicted" means predicted survival probability at a single
time point, and "observed" refers to the corresponding Kaplan-Meier
survival estimate, stratifying on intervals of predicted survival.
For logistic and linear models, a nonparametric calibration curve is
estimated over a sequence of predicted values.
The fit must have specified
x=TRUE, y=TRUE
. The
print
and
plot
methods
for
lrm
and
ols
models (which use
calibrate.default
) print the mean
absolute error in predictions, the mean squared error, and the 0.9 quantile
of the absolute error. Here, error refers to the difference between the
predicted values and the corresponding bias-corrected calibrated values.
Below, the second, third, and fourth invocations of
calibrate
are, respectively, for
ols
and
lrm
,
cph
, and
psm
. The first and second
plot
invocation are
respectively for
lrm
and
ols
fits or all other fits.
calibrate(fit, ...) ## Default S3 method: calibrate(fit, predy, method=c("boot","crossvalidation",".632","randomization"), B=40, bw=FALSE, rule=c("aic","p"), type=c("residual","individual"), sls=.05, pr=FALSE, kint, smoother="lowess", ...) ## S3 method for class 'cph': calibrate(fit, method="boot", u, m=150, cuts, B=40, bw=FALSE, rule="aic", type="residual", sls=0.05, aics=0, pr=FALSE, what="observed-predicted", tol=1e-12, ...) ## S3 method for class 'psm': calibrate(fit, method="boot", u, m=150, cuts, B=40, bw=FALSE,rule="aic", type="residual",sls=.05,aics=0, pr=FALSE,what="observed-predicted",tol=1e-12, maxiter=15, rel.tolerance=1e-5, ...) ## S3 method for class 'calibrate': print(x, ...) ## S3 method for class 'calibrate.default': print(x, ...) ## S3 method for class 'calibrate': plot(x, xlab, ylab, subtitles=TRUE, conf.int=TRUE, ...) ## S3 method for class 'calibrate.default': plot(x, xlab, ylab, xlim, ylim, legend=TRUE, subtitles=TRUE, ...)
ols
,
lrm
,
cph
or
psm
calibrate
cph
fits,
you must have specified
surv=TRUE, time.inc=u
, where
u
is
the constant specifying the time to predict.
u
-time units survival into intervals containing
m
subjects on the average (for survival models only)
m
and
cuts
(for survival models only)
TRUE
to print intermediate results for each re-sample
"observed-predicted"
, meaning to estimate optimism
in this difference. This is preferred as it accounts for skewed
distributions of predicted probabilities in outer intervals. You can
also specify
"observed"
. This argument applies to survival models only.
1e-12
)
psm
, this is passed to
(default is 15 iterations)
psm
(default is 1e-5).
lrm
,
ols
). Default is 50 equally spaced points between the 5th
smallest and the 5th largest predicted values. For
lrm
the
predicted values are probabilities (see
kint
).
kint
to specify the
intercept to use, e.g.,
kint=2
means to calibrate Prob(Y>=q
b), where b is the second level of Y.
y
. The default is to
use
lowess(x, y, iter=0)
.
predab.resample
, such as
group
,
cluster
, and
subset
.
Also, other arguments for
plot
.
FALSE
to suppress subtitles in plot describing method and for
lrm
and
ols
the mean absolute error and original sample size
FALSE
to suppress plotting 0.95 confidence intervals for
Kaplan-Meier estimates
FALSE
to suppress legends (for
lrm
,
ols
only) on the calibration plot, or specify a list with elements
x
and
y
containing the coordinates of the upper left corner of the
legend. By default, a legend will be drawn in the lower right 1/16th of
the plot.
If the fit was created using penalized maximum likelihood estimation,
the same
penalty
and
penalty.scale
parameters are used during
validation.
"calibrate"
or
"calibrate.default"
.
Frank Harrell
Department of Biostatistics
Vanderbilt University
f.harrell@vanderbilt.edu
set.seed(1) d.time <- rexp(200) x1 <- runif(200) x2 <- factor(sample(c('a','b','c'),200,TRUE)) f <- cph(Surv(d.time) ~ pol(x1,2)*x2, x=TRUE, y=TRUE, surv=TRUE, time.inc=2) #or f <- psm(S ~ ...) cal <- calibrate(f, u=2, m=50, B=20) # usually B=200 or 300 plot(cal) y <- sample(0:2, 200, TRUE) x1 <- runif(200) x2 <- runif(200) x3 <- runif(200) x4 <- runif(200) f <- lrm(y ~ x1+x2+x3*x4, x=TRUE, y=TRUE) cal <- calibrate(f, kint=2, predy=seq(.2,.8,length=60), group=y) # group= does k-sample validation: make resamples have same # numbers of subjects in each level of y as original sample plot(cal) #See the example for the validate function for a method of validating #continuation ratio ordinal logistic models. You can do the same #thing for calibrate