| Literature DB >> 29879902 |
Graeme L Hickey1, Pete Philipson2, Andrea Jorgensen1, Ruwanthi Kolamunnage-Dona3.
Abstract
BACKGROUND: Joint modelling of longitudinal and time-to-event outcomes has received considerable attention over recent years. Commensurate with this has been a rise in statistical software options for fitting these models. However, these tools have generally been limited to a single longitudinal outcome. Here, we describe the classical joint model to the case of multiple longitudinal outcomes, propose a practical algorithm for fitting the models, and demonstrate how to fit the models using a new package for the statistical software platform R, joineRML.Entities:
Keywords: Joint modelling; Longitudinal data; Multivariate data; Software; Time-to-event data
Mesh:
Substances:
Year: 2018 PMID: 29879902 PMCID: PMC6047371 DOI: 10.1186/s12874-018-0502-1
Source DB: PubMed Journal: BMC Med Res Methodol ISSN: 1471-2288 Impact factor: 4.615
The primary argumentsa with descriptions for the mjoint() function in the R package joineRML
| Argument | Description |
|---|---|
| formLongFixed | a list of formulae for the fixed effects component of each longitudinal outcome. The left hand-hand side defines the response, and the right-hand side specifies the fixed effect terms. |
| formLongRandom | a list of one-sided formulae specifying the model for the random effects effects of each longitudinal outcome. |
| formSurv | a formula specifying the proportional hazards regression model (not including the latent association structure). |
| data | a list of data.frame objects for each longitudinal outcome in which to interpret the variables named in the formLongFixed and formLongRandom. The list structure enables one to include multiple longitudinal outcomes with different measurement protocols. If the multiple longitudinal outcomes are measured at the same time points for each patient (i.e. |
| survData | (optional) a data.frame in which to interpret the variables named in the formSurv. If survData is not given, then mjoint() looks for the time-to-event data in data. |
| timeVar | a character string indicating the time variable in the linear mixed effects model. |
| inits | (optional) a list of initial values for some or all of the parameters estimated in the model. |
| control | (optional) a list of control parameters. These allow for the control of |
amjoint() also takes the optional additional arguments verbose, which if TRUE allows for monitoring updates at each MCEM algorithm iteration, and pfs, which if FALSE can force the function not to calculate post-fit statistics such as the BLUPs and associated standard errors of the random effects and approximate standard errors of the model parameters. In general, these arguments are not required
Additional functions with descriptions that can be applied to objects of class mjointa
| Function(s) | Returns |
|---|---|
| logLik, AIC, BIC | the log-likelihood, Akaike information criterion and Bayesian information criterion statistics, respectively |
| coef, fixef | the fixed effects parameter estimates |
| ranef | the BLUPs (and optional standard errors) |
| printa, summaryc | short and long model summary outputs, respectively |
| fitted, resid | the fitted values and raw residuals from the multivariate LMM sub-model, respectively |
| plot b | the MCEM algorithm convergence trace plots |
| sigma | the residual standard errors from the LMM sub-model |
| vcov | the variance-covariance matrix of the main parameters of the fitted model (except the baseline hazard) |
| getVarCov | the random effects variance-covariance matrix |
| confint | the confidence intervals based on asymptotic normality |
| update | specific parts of a fitted model can be updated, e.g. by adding or removing terms from a sub-model, and then re-fitted |
| sampleData | sample data (with or without replacement) from a joint model |
aprint() also applies to objects of class summary.mjoint and bootSE inheriting from the summary() and bootSE() functions, respectively
bplot() also accepts objects of class ranef.mjoint inheriting from the ranef() function, which displays a caterpillar plot (with 95% prediction intervals) for each random effect
csummary() can also take the optional argument of an object of class bootSE inheriting from the function bootSE(), which overrides the approximate SEs and CIs with those from a bootstrap estimation routine
Results of simulation study
| Parameter | True value | Mean estimated value | Empirical SE | Mean SE | Bias | MSE | Coverage |
|---|---|---|---|---|---|---|---|
|
| 0.2500 | 0.2411 | 0.0435 | — | −0.0089 | 0.0020 | — |
|
| 0.0000 | 0.0010 | 0.0136 | — | 0.0010 | 0.0002 | — |
|
| −0.1250 | −0.1212 | 0.0295 | — | 0.0038 | 0.0009 | — |
|
| 0.0000 | −0.0006 | 0.0127 | — | −0.0006 | 0.0002 | — |
|
| 0.0400 | 0.0396 | 0.0072 | — | −0.0004 | 0.0001 | — |
|
| 0.0000 | −0.0002 | 0.0138 | — | −0.0002 | 0.0002 | — |
|
| 0.0000 | −0.0001 | 0.0055 | — | −0.0001 | 0.0000 | — |
|
| 0.2500 | 0.2420 | 0.0400 | — | −0.0080 | 0.0017 | — |
|
| 0.0000 | 0.0007 | 0.0134 | — | 0.0007 | 0.0002 | — |
|
| 0.0400 | 0.0399 | 0.0075 | — | −0.0001 | 0.0001 | — |
|
| 0.0000 | 0.0028 | 0.0612 | 0.0660 | 0.0028 | 0.0038 | 0.9660 |
|
| 1.0000 | 1.0012 | 0.0218 | 0.0229 | 0.0012 | 0.0005 | 0.9500 |
|
| 1.0000 | 1.0010 | 0.0449 | 0.0470 | 0.0010 | 0.0020 | 0.9540 |
|
| 1.0000 | 0.9932 | 0.0897 | 0.0925 | −0.0068 | 0.0081 | 0.9440 |
|
| 0.2500 | 0.2506 | 0.0165 | 0.0171 | 0.0006 | 0.0003 | 0.9560 |
|
| 0.0000 | −0.0026 | 0.0637 | 0.0655 | −0.0026 | 0.0041 | 0.9660 |
|
| −1.0000 | −1.0011 | 0.0229 | 0.0223 | −0.0011 | 0.0005 | 0.9480 |
|
| 0.0000 | 0.0008 | 0.0399 | 0.0472 | 0.0008 | 0.0016 | 0.9700 |
|
| 0.5000 | 0.5061 | 0.0894 | 0.0923 | 0.0061 | 0.0080 | 0.9540 |
|
| 0.2500 | 0.2501 | 0.0162 | 0.0171 | 0.0001 | 0.0003 | 0.9540 |
|
| 0.0000 | 0.0011 | 0.1243 | 0.1392 | 0.0011 | 0.0155 | 0.9720 |
|
| 1.0000 | 1.0487 | 0.2837 | 0.2750 | 0.0487 | 0.0829 | 0.9340 |
|
| −0.5000 | −0.5121 | 0.1936 | 0.2084 | −0.0121 | 0.0376 | 0.9560 |
|
| 1.0000 | 1.0311 | 0.2220 | 0.2145 | 0.0311 | 0.0502 | 0.9400 |
Fig. 1Longitudinal trajectory plots. The black lines show individual subject trajectories, and the coloured lines show smoothed (LOESS) curves stratified by whether the patient experienced the endpoint (blue) or not (red)
Fig. 2Kaplan-Meier curve for overall survival. A pointwise 95% band is shown (dashed lines). In total, 69 patients (of 154) died during follow-up
Fitted multivariate and separate univariate joint models to the PBC data
| joineRML (NR) | joineRML (GN) | Bootstrap | joineR | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Estimate | SE | 95% CId | Estimate | SE | 95% CId | SE | 95% CIe | Estimate | SE | 95% CIe | |
|
| 0.5541 | 0.0858 | (0.3859, 0.7223) | 0.5549 | 0.0846 | (0.3892, 0.7207) | 0.0800 | (0.4264, 0.7435) | 0.5545 | 0.0838 | (0.3802, 0.7031) |
|
| 0.2009 | 0.0201 | (0.1616, 0.2402) | 0.2008 | 0.0201 | (0.1614, 0.2402) | 0.0204 | (0.1669, 0.2468) | 0.1808 | 0.0209 | (0.1430, 0.2324) |
|
| 3.5549 | 0.0356 | (3.4850, 3.6248) | 3.5546 | 0.0357 | (3.4846, 3.6245) | 0.0255 | (3.4972, 3.5904) | 3.5437 | 0.0333 | (3.4418, 3.6095) |
|
| −0.1245 | 0.0101 | (−0.1444, −0.1047) | −0.1246 | 0.0101 | (−0.1444, −0.1047) | 0.0120 | (−0.1489, −0.1063) | −0.0997 | 0.0113 | (−0.1256, −0.0773) |
|
| 0.8304 | 0.0212 | (0.7888, 0.8719) | 0.8301 | 0.0210 | (0.7888, 0.8713) | 0.0196 | (0.7953, 0.8638) | 0.8233 | 0.0220 | (0.7818, 0.8677) |
|
| −0.0577 | 0.0062 | (−0.0699, −0.0456) | −0.0577 | 0.0062 | (−0.0698, −0.0455) | 0.0057 | (−0.0698, −0.0486) | −0.0447 | 0.0052 | (−0.0555, −0.0362) |
|
| 0.0462 | 0.0151 | (0.0166, 0.0759) | 0.0462 | 0.0152 | (0.0165, 0.0759) | 0.0173 | (0.0198, 0.0880) | 0.0575a | 0.0123a | (0.0314, 0.0760)a |
| 0.0413b | 0.0150b | (0.0113, 0.0714)b | |||||||||
| 0.0424c | 0.0157c | (0.0146, 0.0724)c | |||||||||
|
| 0.8181 | 0.2046 | (0.4171, 1.2191) | 0.8187 | 0.2036 | (0.4197, 1.2177) | 0.2153 | (0.5172, 1.4021) | 1.2182 | 0.1654 | (0.9800, 1.5331) |
|
| −1.7060 | 0.6181 | (−2.9173, −0.4946) | −1.6973 | 0.6163 | (−2.9053, −0.4893) | 0.7562 | (−3.3862, −0.5188) | −3.0770 | 0.6052 | (−4.7133, −2.1987) |
|
| −2.2085 | 1.6070 | (−5.3582, 0.9412) | −2.2148 | 1.6133 | (−5.3768, 0.9472) | 1.6094 | (−5.3050, 0.6723) | −7.2078 | 1.2640 | (−10.5247, −5.2616) |
Notation: SE = standard error; CI = confidence interval; NR = one-step Newton-Raphson update for ; GN = one-step Gauss-Newton-like update for
aSeparate model fit for serBilir
bSeparate model fit for albumin
cSeparate model fit for prothrombin
dSEs are calculated from the inverse profile empirical information matrix, and confidence intervals are based on normal approximations of the type , where denote the estimated maximum likelihood estimates
eSEs and confidence intervals are derived from B=100 bootstrap samples, with confidence intervals based on the 2.5% and 97.5% percentiles. NB. one model failed to converge using joineRML within the maximum number of MC iterations, and so SEs and CIs are based on 99 bootstrap samples only