Calibration plots for right censored data
Calibration plots for risk prediction models in right censored survival and competing risks data
calPlot( object, time, formula, data, splitMethod = "none", B = 1, M, pseudo, type, showPseudo, pseudo.col = NULL, pseudo.pch = NULL, method = "nne", round = TRUE, bandwidth = NULL, q = 10, bars = FALSE, hanging = FALSE, names = "quantiles", showFrequencies = FALSE, jack.density = 55, plot = TRUE, add = FALSE, diag = !add, legend = !add, axes = !add, xlim = c(0, 1), ylim = c(0, 1), xlab, ylab, col, lwd, lty, pch, cause = 1, percent = TRUE, giveToModel = NULL, na.action = na.fail, cores = 1, verbose = FALSE, cex = 1, ... )
object |
A named list of prediction models, where allowed
entries are (1) R-objects for which a predictSurvProb method
exists (see details), (2) a |
time |
The evaluation time point at predicted event probabilities are plotted against pseudo-observed event status. |
formula |
A survival or event history formula. The left hand
side is used to compute the expected event status. If
|
data |
A data frame in which to validate the prediction models
and to fit the censoring model. If |
splitMethod |
Defines the internal validation design:
|
B |
The number of cross-validation steps. |
M |
The size of the subsamples for cross-validation. |
pseudo |
Logical. Determines the method for estimating expected event status:
|
type |
Either "risk" or "survival". |
showPseudo |
If |
pseudo.col |
Colour for pseudo-values. |
pseudo.pch |
Dot type (see par) for pseudo-values. |
method |
The method for estimating the calibration curve(s):
|
round |
If |
bandwidth |
The bandwidth for |
q |
The number of quantiles for |
bars |
If |
hanging |
Barplots only. If |
names |
Barplots only. Names argument passed to |
showFrequencies |
Barplots only. If |
jack.density |
Gray scale for pseudo-observations. |
plot |
If |
add |
If |
diag |
If |
legend |
If |
axes |
If |
xlim |
Limits of x-axis. |
ylim |
Limits of y-axis. |
xlab |
Label for y-axis. |
ylab |
Label for x-axis. |
col |
Vector with colors, one for each element of
object. Passed to |
lwd |
Vector with line widths, one for each element of
object. Passed to |
lty |
lwd Vector with line style, one for each element of
object. Passed to |
pch |
Passed to |
cause |
For competing risks models, the cause of failure or event of interest |
percent |
If TRUE axes labels are multiplied by 100 and thus interpretable on a percent scale. |
giveToModel |
List of with exactly one entry for each entry in
|
na.action |
Passed to |
cores |
Number of cores for parallel computing. Passed as
value of argument |
verbose |
if |
cex |
Default cex used for legend and labels. |
... |
Used to control the subroutines: plot, axis, lines, barplot,
legend. See |
For method "nne" the optimal bandwidth with respect to is obtained with the
function dpik
from the package KernSmooth
for a box
kernel function.
list with elements: time, pseudoFrame and bandwidth (NULL for method quantile).
Thomas Alexander Gerds tag@biostat.ku.dk
library(prodlim) library(lava) library(riskRegression) library(survival) # survival dlearn <- SimSurv(40) dval <- SimSurv(100) f <- coxph(Surv(time,status)~X1+X2,data=dlearn,x=TRUE,y=TRUE) cf=calPlot(f,time=3,data=dval) print(cf) plot(cf) g <- coxph(Surv(time,status)~X2,data=dlearn,x=TRUE,y=TRUE) cf2=calPlot(list("Cox regression X1+X2"=f,"Cox regression X2"=g), time=3, type="risk", data=dval) print(cf2) plot(cf2) calPlot(f,time=3,data=dval,type="survival") calPlot(f,time=3,data=dval,bars=TRUE,pseudo=FALSE) calPlot(f,time=3,data=dval,bars=TRUE,type="risk",pseudo=FALSE) ## show a red line which follows the hanging bars calPlot(f,time=3,data=dval,bars=TRUE,hanging=TRUE) a <- calPlot(f,time=3,data=dval,bars=TRUE,hanging=TRUE,abline.col=NULL) lines(c(0,1,ceiling(a$xcoord)), c(a$offset[1],a$offset,a$offset[length(a$offset)]), col=2,lwd=5,type="s") calPlot(f,time=3,data=dval,bars=TRUE,type="risk",hanging=TRUE) set.seed(13) m <- crModel() regression(m, from = "X1", to = "eventtime1") <- 1 regression(m, from = "X2", to = "eventtime1") <- 1 m <- addvar(m,c("X3","X4","X5")) distribution(m, "X1") <- binomial.lvm() distribution(m, "X4") <- binomial.lvm() d1 <- sim(m,100) d2 <- sim(m,100) csc <- CSC(Hist(time,event)~X1+X2+X3+X4+X5,data=d1) fgr <- FGR(Hist(time,event)~X1+X2+X3+X4+X5,data=d1,cause=1) if ((requireNamespace("cmprsk",quietly=TRUE))){ predict.crr <- cmprsk:::predict.crr cf3=calPlot(list("Cause-specific Cox"=csc,"Fine-Gray"=fgr), time=5, legend.x=-0.3, legend.y=1.35, ylab="Observed event status", legend.legend=c("Cause-specific Cox regression","Fine-Gray regression"), legend.xpd=NA) print(cf3) plot(cf3) b1 <- calPlot(list("Fine-Gray"=fgr),time=5,bars=TRUE,hanging=FALSE) print(b1) plot(b1) calPlot(fgr,time=5,bars=TRUE,hanging=TRUE) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.