JM (version 1.4-8)

dynCJM: A Dynamic Discrimination Index for Joint Models


This function computes a dynamic discrimination index for joint models based on a weighted average of time-dependent AUCs.


dynCJM(object, newdata, Dt, …)

# S3 method for jointModel dynCJM(object, newdata, Dt, idVar = "id", t.max = NULL, simulate = FALSE, M = 100, weightFun = NULL, …)



an object inheriting from class jointModel.


a data frame that contains the longitudinal and covariate information for the subjects for which prediction of survival probabilities is required. The names of the variables in this data frame must be the same as in the data frames that were used to fit the linear mixed effects model (using lme()) and the survival model (using coxph()) that were supplied as the two first argument of jointModel. In addition, this data frame should contain a variable that identifies the different subjects (see also argument idVar).


a numeric scalar denoting the time frame within which the occurrence of events is of interest.


the name of the variable in newdata that identifies the different subjects.


a numeric scalar denoting the time maximum follow-up time up to which the dynamic discrimination index is to be calculated. If NULL, it is set equal to max(Time) + 1e-05 where Time denotes the observed event times.


logical; if TRUE, a Monte Carlo approach is used to estimate survival probabilities. If FALSE, a first order estimator is used instead. See survfitJM for mote details.


a numeric scalar denoting the number of Monte Carlo samples; see survfitJM for mote details.


a function of two arguments the first denoting time and the second the length of the time frame of interest, i.e., Dt.

additional arguments; currently none is used.


A list of class dynCJM with components:


a numeric scalar denoting the dynamic discrimination index.


a numeric vector of time points at which the AUC was calculated.


a numeric vector of the estimated AUCs at the aforementioned time points.


a numeric vector of the estimated weights at the aforementioned time points.


a copy of the t.max argument.


a copy of the Dt argument.


the class of object.


the name of object.


(Note: The following contain some math formulas, which are better viewed in the pdf version of the manual accessible at

Function dynC computes the following discrimination index $$\mbox{C}_{dyn}^{\Delta t} = \int_0^{t_{max}} \mbox{AUC}(t, \Delta t) \, \mbox{Pr} \{ {\cal E}(t, \Delta t) \} \; dt \Big / \int_0^{t_{max}} \mbox{Pr} \{ {\cal E}(t, \Delta t) \} \; dt,$$ where $$\mbox{AUC}(t, \Delta t) = \mbox{Pr} \bigl [ \pi_i(t + \Delta t \mid t) < \pi_j(t + \Delta t \mid t) \mid \{ T_i^* \in (t, t + \Delta t] \} \cap \{ T_j^* > t + \Delta t \} \bigr ],$$ and $${\cal E}(t, \Delta t) = \bigl [ \{ T_i^* \in (t, t + \Delta t] \} \cap \{ T_j^* > t + \Delta t \} \bigr ],$$ with \(i\) and \(j\) denote a randomly selected pair subjects, and \(\pi_i(t + \Delta t \mid t)\) and \(\pi_j(t + \Delta t \mid t)\) denote the conditional survival probabilities calculated by survfitJM for these two subjects, for different time windows \(\Delta t\) specified by argument Dt. The upper limit of integral in specified by argument t.max. The integrals in the numerator and denominator are approximated using a 15-point Gauss-Kronrod quadrature rule.

Index \(\mbox{C}_{dyn}^{\Delta t}\) is in the spirit of Harrell's \(c\)-index, that is for the comparable subjects (i.e., the ones whose observed event times can be ordered), we compare their dynamic survival probabilities calculated by survfitJM. As with Harrell's \(c\)-index, \(\mbox{C}_{dyn}^{\Delta t}\) does not take into account censoring, and therefore is expected to mask the true discriminative capability of the joint model under heavy censoring.


Antolini, L., Boracchi, P., and Biganzoli, E. (2005). A time-dependent discrimination index for survival data. Statistics in Medicine 24, 3927--3944.

Harrell, F., Kerry, L. and Mark, D. (1996). Multivariable prognostic models: issues in developing models, evaluating assumptions and adequacy, and measuring and reducing errors. Statistics in Medicine 15, 361--387.

Heagerty, P. and Zheng, Y. (2005). Survival model predictive accuracy and ROC curves. Biometrics 61, 92--105.

Rizopoulos, D. (2012) Joint Models for Longitudinal and Time-to-Event Data: with Applications in R. Boca Raton: Chapman and Hall/CRC.

Rizopoulos, D. (2011). Dynamic predictions and prospective accuracy in joint models for longitudinal and time-to-event data. Biometrics 67, 819--829.

Rizopoulos, D., Murawska, M., Andrinopoulou, E.-R., Lesaffre, E. and Takkenberg, J. (2013). Dynamic predictions with time-dependent covariates in survival analysis: A comparison between joint modeling and landmarking. under preparation.

See Also

survfitJM, aucJM, jointModel


Run this code
# we construct the composite event indicator (transplantation or death)
pbc2$status2 <- as.numeric(pbc2$status != "alive")$status2 <- as.numeric($status != "alive")

# we fit the joint model using splines for the subject-specific 
# longitudinal trajectories and a spline-approximated baseline
# risk function
lmeFit <- lme(log(serBilir) ~ ns(year, 3),
    random = list(id = pdDiag(form = ~ ns(year, 3))), data = pbc2)
survFit <- coxph(Surv(years, status2) ~ drug, data =, x = TRUE)
jointFit <- jointModel(lmeFit, survFit, timeVar = "year", 
    method = "piecewise-PH-aGH")

# dynamic discrimination index up to year 10 using a two-year interval 
dynCJM(jointFit, pbc2, Dt = 2, t.max = 10)
# }

Run the code above in your browser using DataLab