jointModel {JM}R Documentation

Joint Models for Longitudinal and Survival Data

Description

This function fits shared parameter models for the joint modelling of normal longitudinal responses and time-to-event data under a maximum likelihood approach. Various options for the survival model are available.

Usage

jointModel(lmeObject, survObject, timeVar, 
    method = c("weibull-GH", "ch-GH", "ph-GH", "ch-Laplace"), 
    init = NULL, control = list())

Arguments

lmeObject an object inheriting from class lme (see also Note).
survObject an object inheriting from class coxph or class survreg. In the call to coxph() or survreg(), you need to specify the argument x = TRUE such that the design matrix is contained in the object fit. See Examples.
timeVar a character string indicating the time variable in the linear mixed effects model.
method a character string specifying the type of joint model to fit. See Details.
init a list of user-specified initial values. The initial values list must have the following components:
betas
the vector of fixed effects for the linear mixed effects model.
sigma
the measurement error standard deviation for the linear mixed effects model.
D
the variance-covariance matrix of the random effects.
gammas
the vector of baseline covariates for the survival model. For method = "ch-GH" or method = "ch-Laplace" this vector should first contain initial values for the sorted B-spline coefficients used to model the log cumulative baseline hazard.
alpha
the association parameter.
sigma.t
the scale parameter for the Weibull survival model; required only when method = "weibull-GH".
lambda0
a vector of the baseline hazard values at the sorted unique event times; required only when method = "ph-GH".
If the user-specified list of initial values does not contain some of these components or contains components not of the appropriate length, the default initial values are used instead.
control a list of control values with components:
only.EM
logical; if TRUE only the EM algorithm is used in the optimization, otherwise if convergence has not been achieved a quasi-Newton algorithm is initiated. Default is FALSE except for method = "ph-GH" for which only the EM algorithm is available.
iter.EM
the number of EM iterations. Default is 150 except for method = "ph-GH" for which the default is 200.
iter.qN
the number of quasi-Newton iterations. Default is 100.
optimizer
a character string indicating which optimizer to use; options are "optim" (default) and "nlminb".
tol1
tolerance value for convergence in the parameters; see Details. Default is 1e-03.
tol2
tolerance value for convergence in the parameters; see Details. Default is 1e-04.
tol3
tolerance value for convergence in the log-likelihood; see Details. Default is sqrt(.Machine$double.eps).
numeriDeriv
a character string indicating which type of numerical derivative to use to compute the Hessian matrix; options are "fd" (default) denoting the forward difference approximation, and "cd" denoting the central difference approximation.
eps.Hes
tolerance value used in the numerical derivative method. Default is 1e-06; if you choose numeriDeriv = "cd" a larger value (e.g., 1e-04) is suggested.
parscale
the parscale control argument for optim(), or the scale argument for nlminb(). It should be a numeric vector of length equal to the number of parameters. Default is 0.01 for all parameters.
step.max
tolerance value for the maximum step size in the Newton-Raphson algorithm used to update the parameters of the survival submodel for method = "ch-Laplace". Default is 0.1.
backtrackSteps
the number of backtrack steps to use when updating the parameters of the survival submodel under method = "ch-Laplace".
knots
a numeric vector of the knots positions for the log times used in the B-splines approximation of the log cumulative baseline hazard; relevant only when method = "ch-GH" or method = "ch-Laplace". Default is to place lng.in.kn knots (see below) at the quantiles of the uncensored log survival times.
lng.in.kn
the number of internal knots to use in the B-splines approximation of the log cumulative baseline hazard; relevant only when method = "ch-GH" or method = "ch-Laplace". Default is 3.
ord
a positive integer denoting the order of the B-splines used to approximate the log cumulative hazard (default is 4); relevant only when method = "ch-GH" or method = "ch-Laplace".
GHk
the number of Gauss-Hermite quadrature points used to approximate the integrals over the random effects. For method = "weibull-GH" and method = "ch-GH" default is 21 for one- or two-dimensional integration and 11 otherwise. For method = "ph-GH" default is 21 for one-dimensional integration and 11 otherwise.
verbose
logical; if TRUE the parameter estimates and the log-likelihood value are printed during the optimization procedure. Default is FALSE.

Details

The jointModel function fits joint models for longitudinal and survival data. For the longitudinal responses the linear mixed effects model represented by the lmeObject is assumed. For the survival times three options are available. In particular, let t_i denote the time-to-event for the ith sample unit, x_i denote the vector of baseline covariates in survObject, with associated parameter vector gamma, W_i(t) the value of the longitudinal outcome at time point t (i.e., W_i(t) equals the fixed effects part + random effects part of the linear mixed effects model for sample unit i), and α the association parameter. Then, for method = "weibull-GH" a Weibull accelerated failure time model is assumed formulated as:

log t = gamma^T x_i + α W_i(t) + σ_t varepsilon_i,

where varepsilon_i follows an extreme value distribution. For method = "ch-GH" and method = "ch-Laplace" an additive log cumulative hazard model is assumed formulated as:

log Lambda_i(t) = log Lambda_0(t) + gamma^T x_i + α W_i(t),

where Lambda_i(.) and Lambda_0(.) denote the cumulative hazard and cumulative baseline hazard functions, respectively, and log Lambda_0(t) is approximated using B-splines (see Rizopoulos et al., 2008 for more info). Finally, for method = "ph-GH" a time-dependent proportional hazards model is assumed formulated as

λ_i(t) = λ_0(t) exp { gamma^T x_i + α W_i(t) },

where the baseline hazard λ_0(t) is left unspecified (Wulfsohn and Tsiatis, 1997).

For all survival models except for the time-dependent proportional hazards model, the optimization algorithm starts with EM iterations, and if convergence is not achieved, it switches to quasi-Newton iterations (i.e., BFGS in optim() or nlminb(), depending on the value of the optimizer control argument). For the time-dependent proportional hazards model only the EM algorithm is used. During the EM iterations, convergence is declared if either of the following two conditions is satisfied: (i) L(theta^{it}) - L(theta^{it - 1}) < tol_3 { | L(theta^{it - 1}) | + tol_3 } , or (ii) max { | theta^{it} - theta^{it - 1} | / ( | theta^{it - 1} | + tol_1) } < tol_2, where theta^{it} and theta^{it - 1} is the vector of parameter values at the current and previous iterations, respectively, and L(.) is the log-likelihood function. The values for tol_1, tol_2 and tol_3 are specified via the control argument. During the quasi-Newton iterations, the default convergence criteria of either optim() or nlminb() are used.

The required integrals are approximated using the Gauss-Hermite quadrature rule for method = "weibull-GH", method = "ch-GH" and method = "ph-GH", whereas for method = "ch-Laplace" the fully exponential Laplace approximation described in Rizopoulos et al. (2008) is used. This last option is more suitable when high-dimensional random effects vectors are considered (e.g., when modelling nonlinear subject-specific trajectories with splines or high-order polynomials).

Value

See jointModelObject for the components of the fit.

Note

1. The lmeObject should represent a linear mixed model with a simple random effects structure, i.e., only the pdDiag() class is currently allowed.

2. The lmeObject should not contain any within-group correlation structure (i.e., correlation argument of lme()) or within-group heteroscedasticity structure (i.e., weights argument of lme()).

3. It is assumed that the linear mixed effects model lmeObject and the survival model survObject have been fitted to the same subjects. Moreover, it is assumed that the ordering of the subjects is the same for both lmeObject and survObject, i.e., that the first line in the data frame containing the event times corresponds to the first set of lines identified by the grouping variable in the data frame containing the repeated measurements, and so on.

4. In the print and summary generic functions for class jointModel, the estimated coefficients (and standard errors for the summary generic) for the event process are augmented with the element "Assoct" that corresponds to the association parameter α (see Details).

5. The standard errors returned by the summary generic function for class jointModel when method = "ph-GH" are based on the profile score vector (i.e., given the NPMLE for the unspecified baseline hazard). Hsieh et al. (2006) have noted that these standard errors are underestimated.

6. For more examples of jointModel() check the following link: http://wiki.r-project.org/rwiki/doku.php?id=packages:cran:jm.

Author(s)

Dimitris Rizopoulos d.rizopoulos@erasmusmc.nl

References

Henderson, R., Diggle, P. and Dobson, A. (2000) Joint modelling of longitudinal measurements and event time data. Biostatistics 1, 465–480.

Hsieh, F., Tseng, Y.-K. and Wang, J.-L. (2006) Joint modeling of survival and longitudinal data: Likelihood approach revisited. Biometrics 62, 1037–1043.

Rizopoulos, D., Verbeke, G. and Lesaffre, E. (2009) Fully exponential Laplace approximation for the joint modelling of survival and longitudinal data. Journal of the Royal Statistical Society, Series B, to appear.

Tsiatis, A. and Davidian, M. (2004) Joint modeling of longitudinal and time-to-event data: an overview. Statistica Sinica 14, 809–834.

Wulfsohn, M. and Tsiatis, A. (1997) A joint model for survival and longitudinal data measured with error. Biometrics 53, 330–339.

See Also

jointModelObject, anova.jointModel, coef.jointModel, fixef.jointModel, ranef.jointModel, fitted.jointModel, residuals.jointModel, plot.jointModel

Examples

# linear mixed model fit (random intercepts)
fitLME <- lme(log(serBilir) ~ drug * year, random = ~ 1 | id, data = pbc2)
# survival regression fit
fitSURV <- survreg(Surv(years, status2) ~ drug, data = pbc2.id, x = TRUE)
# joint model fit, under the (default) Weibull model
fitJOINT <- jointModel(fitLME, fitSURV, timeVar = "year")
fitJOINT
summary(fitJOINT)

# linear mixed model fit (random intercepts + random slopes)
fitLME <- lme(log(serBilir) ~ drug * year, random = ~ year | id, data = pbc2)
# survival regression fit
fitSURV <- survreg(Surv(years, status2) ~ drug, data = pbc2.id, x = TRUE)
# joint model fit, under the (default) Weibull model
fitJOINT <- jointModel(fitLME, fitSURV, timeVar = "year")
fitJOINT
summary(fitJOINT)

# linear mixed model fit
fitLME <- lme(sqrt(CD4) ~ obstime * drug - drug, 
    random = ~ 1 | patient, data = aids)
# cox model fit
fitCOX <- coxph(Surv(Time, death) ~ drug, data = aids.id, x = TRUE)
# joint model fit, under the additive log cumulative hazard model
fitJOINT <- jointModel(fitLME, fitCOX, 
    timeVar = "obstime", method = "ch-GH")
fitJOINT
summary(fitJOINT)

[Package JM version 0.2-2 Index]