Simulation and Analysis of Platform Trials with Non-Concurrent Controls.
NCC: Simulation and analysis of platform trials with non-concurrent controls
NCC
package allows users to simulate platform trials and to compare arms using non-concurrent control data.
Design overview
We consider a platform trial evaluating the efficacy of treatment arms compared to a shared control. We assume that treatment arms enter the platform trial sequentially. In particular, we consider a trial starting with at least one initial treatment arm, where a new arm is added after every patients have been recruited to the trial (with ).
We divide the duration of the trial into periods, where the periods are the time intervals bounded by times at which a treatment arm either enters or leaves the platform.
The below figure illustrates the considered trial design.
Functions
This package contains the following functions:
Data generation
Main functions for data generation
datasim_bin()
simulates data with binary outcomesdatasim_cont()
simulates data with continuous outcomes
Auxiliary functions for data generation
get_ss_matrix()
computes sample sizes per arm and periodlinear_trend()
is the linear time trend function, used to generate the trend for each patientsw_trend()
is the step-wise time trend function, used generate the trend for each patientinv_u_trend()
is the inverted-u time trend function, used generate the trend for each patientseasonal_trend()
is the seasonal time trend function, used generate the trend for each patient
Data analysis
Treatment-control comparisons for binary endpoints
Frequentist approaches
fixmodel_bin()
performs analysis using a regression model adjusting for periodsfixmodel_cal_bin()
performs analysis using a regression model adjusting for calendar timepoolmodel_bin()
performs pooled analysissepmodel_bin()
performs separate analysissepmodel_adj_bin()
performs separate analysis adjusting for periods
Bayesian approaches
MAPprior_bin()
performs analysis using the MAP prior approachtimemachine_bin()
performs analysis using the Time Machine approach
Treatment-control comparisons for continuous endpoints
Frequentist approaches
fixmodel_cont()
performs analysis using a regression model adjusting for periodsfixmodel_cal_cont()
performs analysis using a regression model adjusting for calendar timegam_cont()
performs analysis using generalized additive modelmixmodel_cont()
performs analysis using a mixed model adjusting for periods as a random factormixmodel_cal_cont()
performs analysis using a mixed model adjusting for calendar time as a random factormixmodel_AR1_cont()
performs analysis using a mixed model adjusting for periods as a random factor with AR1 correlation structuremixmodel_AR1_cal_cont()
performs analysis using a mixed model adjusting for calendar time as a random factor with AR1 correlation structurepiecewise_cont()
performs analysis using discontinuous piecewise polynomials per periodpiecewise_cal_cont()
performs analysis using discontinuous piecewise polynomials per calendar timepoolmodel_cont()
performs pooled analysissepmodel_cont()
performs separate analysissepmodel_adj_cont()
performs separate analysis adjusting for periodssplines_cont()
performs analysis using regression splines with knots placed according to periodssplines_cal_cont()
performs analysis using regression splines with knots placed according to calendar times
Bayesian approaches
MAPprior_cont()
performs analysis using the MAP prior approachtimemachine_cont()
performs analysis using the Time Machine approach
Running simulations
all_models()
is an auxiliary wrapper function to analyze given dataset (treatment-control comparisons) with multiple modelssim_study()
is a wrapper function to run a simulation study (treatment-control comparisons) for desired scenariossim_study_par()
is a wrapper function to run a simulation study (treatment-control comparisons) for desired scenarios in parallel
Visualization
plot_trial()
visualizes the progress of a simulated trial
For a more detailed description of the functions, see the vignettes in the R-package website (https://pavlakrotka.github.io/NCC/).
Scheme of the package structure
The below figure illustrates the NCC
package functions by functionality.
Installation
To install the latest version of the NCC
package from Github, please run the following code:
# install.packages("devtools")
devtools::install_github("pavlakrotka/NCC", build_vignettes = TRUE)
Documentation
Documentation of all functions as well as vignettes with further description and examples can be found at the package website: https://pavlakrotka.github.io/NCC/
References
[1] Bofill Roig, M., Krotka, P., et al. “On model-based time trend adjustments in platform trials with non-concurrent controls.” BMC medical research methodology 22.1 (2022): 1-16.
[2] Lee, K. M., and Wason, J. “Including non-concurrent control patients in the analysis of platform trials: is it worth it?.” BMC medical research methodology 20.1 (2020): 1-12.
[3] Saville, B. R., Berry, D. A., et al. “The Bayesian Time Machine: Accounting for Temporal Drift in Multi-arm Platform Trials.” Clinical Trials 19.5 (2022): 490-501
Funding
EU-PEARL (EU Patient-cEntric clinicAl tRial pLatforms) project has received funding from the Innovative Medicines Initiative (IMI) 2 Joint Undertaking (JU) under grant agreement No 853966. This Joint Undertaking receives support from the European Union’s Horizon 2020 research and innovation programme and EFPIA and Children’s Tumor Foundation, Global Alliance for TB Drug Development non-profit organisation, Spring works Therapeutics Inc. This publication reflects the authors’ views. Neither IMI nor the European Union, EFPIA, or any Associated Partners are responsible for any use that may be made of the information contained herein.