Title: | Power and Sample Size Calculations for Clinical Trials |
---|---|
Description: | Efficient simulation-based power and sample size calculations are supported for a broad class of late-stage clinical trials. The following modules are included in the package: Adaptive designs with data-driven sample size or event count re-estimation, Adaptive designs with data-driven treatment selection, Adaptive designs with data-driven population selection, Optimal selection of a futility stopping rule, Event prediction in event-driven trials, Adaptive trials with response-adaptive randomization (experimental module), Traditional trials with multiple objectives (experimental module). Traditional trials with cluster-randomized designs (experimental module). |
Authors: | Alex Dmitrienko [aut, cre] |
Maintainer: | Alex Dmitrienko <[email protected]> |
License: | GPL-3 |
Version: | 0.13 |
Built: | 2025-02-05 04:56:58 UTC |
Source: | https://github.com/medianasoft/medianadesigner |
The MedianaDesigner package provides efficient simulation-based power and sample size calculations for a broad class of late-stage clinical trials, including Phase II trials, seamless Phase II/III trials and Phase III trials:
Adaptive trials with data-driven sample size or event count re-estimation.
Adaptive trials with data-driven treatment selection.
Adaptive trials with data-driven population selection.
Optimal selection of a futility stopping rule.
Blinded event prediction in event-driven trials.
Adaptive trials with response-adaptive randomization (experimental module).
Traditional trials with multiple objectives (experimental module).
Traditional trials with cluster-randomized designs (experimental module).
For more information on this package, visit https://mediana.us/free-software/. The technical manuals with a detailed description of the statistical methodology implemented in each module are available at https://medianasoft.github.io/MedianaDesigner. Additional information and multiple case studies can be found in the online manual at https://medianasoft.github.io/MedianaDesigner.
Package: | MedianaDesigner |
Type: | Package |
Version: | 0.13 |
Date: | 2023-08-27 |
License: | GPL-3 |
Key functions included in the package:
ADSSMod
: Simulation-based design of adaptive trials with data-driven sample size or event count re-estimation.
ADSSModApp
: Graphical user interface for designing adaptive trials with data-driven sample size or event count re-estimation.
ADTreatSel
: Simulation-based design of adaptive trials with data-driven treatment selection.
ADTreatSelApp
: Graphical user interface for designing adaptive trials with data-driven treatment selection.
ADPopSel
: Simulation-based design of adaptive trials with data-driven population selection.
ADPopSelApp
: Graphical user interface for designing adaptive trials with data-driven population selection.
FutRule
: Simulation-based selection of an optimal futility stopping rule at an interim analysis.
FutRuleApp
: Graphical user interface for an optimal selection of a futility stopping rule.
EventPred
: Blinded simulation-based event prediction in trials with an event-driven design.
EventPredPriorDistribution
: Calculation of the parameters of prior gamma distributions.
EventPredApp
: Graphical user interface for event prediction.
ADRand
: Simulation-based design of adaptive trials with response-adaptive randomization.
ADRandApp
: Graphical user interface for designing adaptive trials with response-adaptive randomization.
MultAdj
: Simulation-based design of traditional trials with multiple objectives.
MultAdjApp
: Graphical user interface for power calculations in traditional trials with multiple objectives.
ClustRand: Simulation-based design of cluster-randomized trials.
ClustRandApp: Graphical user interface for power calculations in cluster-randomized trials.
GenerateReport
: Simulation report for any module.
The package comes with one example data set:
EventPredData
: Example data set to illustrate event prediction in event-driven trials.
Multiple case studies are included in this vignette to illustrate the use of this package for designing clinical trials with data-driven design elements:
ADSSModExample1: Simulation-based design of an adaptive trial with sample size re-estimation (normally distributed endpoint).
ADSSModExample2: Simulation-based design of an adaptive trial with sample size re-estimation (binary endpoint).
ADSSModExample3: Simulation-based design of an adaptive trial with event count re-estimation (time-to-event endpoint).
ADTreatSelExample1: Simulation-based design of an adaptive trial with treatment selection (normally distributed endpoint).
ADTreatSelExample2: Simulation-based design of an adaptive trials with treatment selection (binary endpoint).
ADTreatSelExample3: Simulation-based design of an adaptive trials with treatment selection (time-to-event endpoint).
ADPopSelExample1: Simulation-based design of an adaptive trial with population selection (normally distributed endpoint).
ADPopSelExample2: Simulation-based design of an adaptive trials with population selection (binary endpoint).
ADPopSelExample3: Simulation-based design of an adaptive trials with population selection (time-to-event endpoint).
FutRuleExample1: Simulation-based selection of an optimal futility stopping rule (normally distributed endpoint).
FutRuleExample2: Simulation-based selection of an optimal futility stopping rule (binary endpoint).
FutRuleExample3: Simulation-based selection of an optimal futility stopping rule (time-to-event endpoint).
EventPredExample: Simulation-based event prediction in trials with an event-driven design (time-to-event endpoint).
ADRandExample: Simulation-based design of an adaptive dose-finding trial with response-adaptive randomization (normally distributed endpoint).
MultAdjExample1: Simulation-based power calculations in Phase III trials with multiple dose-placebo comparisons.
MultAdjExample2: Simulation-based power calculations in Phase III trials with multiple endpoints.
MultAdjExample3: Simulation-based power calculations in Phase III trials with multiple endpoints and multiple dose-placebo comparisons.
ClustRandExample1: Simulation-based design of a cluster-randomized trial (normally distributed endpoint).
ClustRandExample2: Simulation-based design of a cluster-randomized trial (binary endpoint).
Mediana (www.mediana.us). We would like to thank multiple individuals, including Thomas Brechenmacher (IQVIA), Douglas McNair (Gates Foundation) and Thomas Peppard (Certara), for their feedback that helped us improve the package and add new features.
Ahn, C., Heo, M., Zhang, S. (2015). Sample Size Calculations for Clustered and Longitudinal Outcomes in Clinical Research. Chapman and Hall/CRC.
Alosh, M., Bretz, F., Huque, M. (2014). Advanced multiplicity adjustment methods in clinical trials. Statistics in Medicine. 33, 693-713.
Bagiella, E., Heitjan, D.F. (2001). Predicting analysis times in randomized clinical trials. Statistics in Medicine. 20, 2055-2063.
Chuang-Stein, C., Kirby, S., French, J., Kowalski, K., Marshall, S., Smith, M. K. (2011). A quantitative approach for making go/no-go decisions in drug development. Drug Information Journal. 45, 187-202.
Dmitrienko, A., Bretz, F., Westfall, P.H., et al. (2009). Multiple testing methodology. Multiple testing problems in pharmaceutical statistics. Dmitrienko, A., Tamhane, A.C., Bretz, F. (editors). New York: Chapman and Hall/CRC Press.
Dmitrienko, A., Tamhane, A.C. (2011). Mixtures of multiple testing procedures for gatekeeping applications in clinical trials. Statistics in Medicine. 30, 1473-1488.
Dmitrienko, A., D'Agostino, R. Sr. (2013). Traditional multiplicity adjustment methods in clinical trials. Statistics in Medicine. 32, 5172-5218.
Dmitrienko, A., Kordzakhia, G., Brechenmacher, T. (2016). Mixture-based gatekeeping procedures for multiplicity problems with multiple sequences of hypotheses. Journal of Biopharmaceutical Statistics. 26, 758-780.
Dmitrienko, A., Paux, G. (2017). Subgroup analysis in clinical trials. Clinical Trial Optimization Using R. Dmitrienko, A., Pulkstenis, E. (editors). Chapman and Hall/CRC Press, New York.
Dmitrienko, A., D'Agostino, R.B. (2018). Multiplicity considerations in clinical trials. New England Journal of Medicine. 378, 2115-2122.
Hayes, R.J., Moulton, L.H. (2009). emphCluster Randomised Trials: A Practical Approach. Chapman and Hall/CRC.
Herson, J. (1979). Predictive probability early termination plans for Phase II clinical trials. Biometrics. 35, 775-783.
Kordzakhia, G., Brechenmacher, T., Ishida, E., Dmitrienko, A., Zheng, W.W., Lie, D.F. (2018). An enhanced mixture method for constructing gatekeeping procedures in clinical trials. Journal of Biopharmaceutical Statistics. 28, 113-128.
Millen, B., Dmitrienko, A., Ruberg, S., Shen, L. (2012). A statistical framework for decision making in confirmatory multi-population tailoring clinical trials. Drug Information Journal. 46, 647-656.
Wang, D., Cui, L., Zhang, L., Yang, B. (2014). An ROC approach to evaluate interim go/no-go decision-making quality with application to futility stopping in the clinical trial designs. New Developments in Statistical Modeling, Inference and Application. Jin, Z., Liu, M., Luo, X. (editors). Springer, New York. 121-147.
Wassmer, G., Brannath, W. (2016). Group Sequential and Confirmatory Adaptive Designs in Clinical Trials. New York: Springer.
This function performs a simulation-based evaluation of operating characteristics for adaptive trials with data-driven population selection. A two-arm Phase III clinical trial with two pre-defined patient populations (overall population and subpopulation of biomarker-positive patients) and two interim analyses is assumed. The first interim analysis supports early stopping for futility in the overall population and the second interim analysis identifies the most promising patient population or populations. For examples of the function call, see ADPopSelExample1, ADPopSelExample2 or ADPopSelExample3.
ADPopSel(parameters)
ADPopSel(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘ADPopSelResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
sim_results |
Data frame containing key descriptive statistics for each simulation run. |
sim_summary |
List containing the key operating characteristics of the adaptive design. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a web application with a Shiny-based graphical user interface to facilitate the process of designing Phase III adaptive trials with two interim analysis to enable a futility assessment and data-driven selection of the most promising patient population or populations. The application supports the same functionality as the ADPopSel
function. For an example of the function call, see ADPopSelExample1.
ADPopSelApp()
ADPopSelApp()
No arguments
No return value, called for side effects
Consider a seamless Phase II/Phase III or Phase III trial with a normally distributed primary efficacy endpoint (a larger value of this endpoint indicates a more favorable outcome). The efficacy and safety profiles of a single dose or regimen of an experimental treatment will be evaluated versus a control in two patient populations, namely, the overall population of patients and a pre-defined subset of patients with a biomarker-positive status. An adaptive design with two interim analyses will be used in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial) to support the following decision rules:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial will be terminated for futility if the predicted probability of success (conditional power) in the overall population is too low
Population selection rule will be applied at the second interim analysis (IA2). The most promising population or populations will be selected for the final analysis (FA).
The following design parameters will be assumed:
A balanced design with 220 enrolled patients per arm will be utilized in this trial.
The prevalence of biomarker-positive patients in the overall population is expected to be 50%.
The patient dropout rate at the end of the treatment period is equal to 10%.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim looks will be taken after 40% and 60% of the patients complete the treatment period or drop out of the trial before completing the treatment period.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 20%.
The influence and interaction thresholds used in the population selection rule are set to 0.1 and 1.3. The conditions based on these thresholds are applied sequentially to determine if the final analysis should be performed in the overall population only, in the biomarker-positive population only or simultaneously in both populations.
The treatment effect assumptions need to be specified within the biomarker-positive population as well as the complementary population (biomarker-negative population). A common effect will be assumed in the control arm, i.e., the mean and standard deviation of the primary efficacy endpoint will be 0 and 1, respectively, in the biomarker-positive and biomarker-negative populations. A stronger treatment effect will be assumed in the biomarker-positive subset compared to the complementary subset, i.e., the mean of 0.4 in biomarker-positive patients and the mean 0.25 in biomarker-negative patients with a common standard deviation of 1.
Key operating characteristics of the proposed adaptive design with population selection will be evaluated using the ADPopSel
function based on 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report for this adaptive design can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADPopSelApp
function.
No arguments
No return value
ADPopSel
, ADPopSelExample2
, ADPopSelExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(220, 220) # Prevalence of biomarker-positive patients in the overall population parameters$prevalence = 0.5 # Patient dropout rate parameters$dropout_rate = 0.1 # Mean and SD in the control arm (biomarker-negative, biomarker-positive) parameters$control_mean = c(0, 0) parameters$control_sd = c(1, 1) # Mean and SD in the treatment arm (biomarker-negative, biomarker-positive) parameters$treatment_mean = c(0.25, 0.4) parameters$treatment_sd = c(1, 1) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.2 # Influence threshold at IA2 parameters$influence = 0.1 # Interaction threshold at IA2 parameters$interaction = 1.3 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADPopSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADPopSel Normally distributed endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(220, 220) # Prevalence of biomarker-positive patients in the overall population parameters$prevalence = 0.5 # Patient dropout rate parameters$dropout_rate = 0.1 # Mean and SD in the control arm (biomarker-negative, biomarker-positive) parameters$control_mean = c(0, 0) parameters$control_sd = c(1, 1) # Mean and SD in the treatment arm (biomarker-negative, biomarker-positive) parameters$treatment_mean = c(0.25, 0.4) parameters$treatment_sd = c(1, 1) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.2 # Influence threshold at IA2 parameters$influence = 0.1 # Interaction threshold at IA2 parameters$interaction = 1.3 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADPopSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADPopSel Normally distributed endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial with a binary primary efficacy endpoint with a higher proportion indicating a more favorable outcome. The efficacy and safety profiles of a single dose or regimen of an experimental treatment will be evaluated versus a control in two patient populations (overall population and biomarker-positive population). An adaptive design with two interim analyses will be used in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial) to support the following decision rules:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial will be terminated for futility if the predicted probability of success (conditional power) in the overall population is too low
Population selection rule will be applied at the second interim analysis (IA2). The most promising population or populations will be selected for the final analysis (FA).
The following design parameters will be assumed:
A balanced design with 120 enrolled patients per arm will be utilized in this trial.
The prevalence of biomarker-positive patients in the overall population is expected to be 40%.
The patient dropout rate at the end of the treatment period is equal to 15%.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim looks will be taken after 40% and 60% of the patients complete the treatment period or drop out of the trial before completing the treatment period.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 20%.
The influence and interaction thresholds used in the population selection rule are set to 0.1 and 1.3. The conditions based on these thresholds are applied sequentially to determine if the final analysis should be performed in the overall population only, in the biomarker-positive population only or simultaneously in both populations.
The treatment effect assumptions are specified within the biomarker-positive and biomarker-negative populations. A common effect will be assumed in the control arm, i.e., the response rate of 10% regardless of the biomarker status, and a strong differential treatment effect will be considered. Specifically, a fairly weak response rate of 25% will be assumed in patients with a biomarker-negative status and a much stronger effect with a response rate of 40% in patients with a biomarker-positive status.
Key operating characteristics of the proposed adaptive design with population selection will be evaluated using the ADPopSel
function based on 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report for this adaptive design can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADPopSelApp
function.
No arguments
No return value
ADPopSel
, ADPopSelExample1
, ADPopSelExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(120, 120) # Prevalence of biomarker-positive patients in the overall population parameters$prevalence = 0.4 # Patient dropout rate parameters$dropout_rate = 0.15 # Response rate in the control arm (biomarker-negative, biomarker-positive) parameters$control_rate = c(0.1, 0.1) # Response rate in the treatment arm (biomarker-negative, biomarker-positive) parameters$treatment_rate = c(0.25, 0.4) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.2 # Influence threshold at IA2 parameters$influence = 0.1 # Interaction threshold at IA2 parameters$interaction = 1.3 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute key characteristics results = ADPopSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADPopSel Binary endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(120, 120) # Prevalence of biomarker-positive patients in the overall population parameters$prevalence = 0.4 # Patient dropout rate parameters$dropout_rate = 0.15 # Response rate in the control arm (biomarker-negative, biomarker-positive) parameters$control_rate = c(0.1, 0.1) # Response rate in the treatment arm (biomarker-negative, biomarker-positive) parameters$treatment_rate = c(0.25, 0.4) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.2 # Influence threshold at IA2 parameters$influence = 0.1 # Interaction threshold at IA2 parameters$interaction = 1.3 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute key characteristics results = ADPopSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADPopSel Binary endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial with a binary primary efficacy endpoint. The efficacy and safety profiles of a single dose or regimen of an experimental treatment will be evaluated versus a control in two patient populations (overall population and biomarker-positive population). An adaptive design with two interim analyses will be used in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial) to support the following decision rules:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial will be terminated for futility if the predicted probability of success (conditional power) in the overall population is too low
Population selection rule will be applied at the second interim analysis (IA2). The most promising population or populations will be selected for the final analysis (FA).
The following design parameters will be assumed:
A balanced design with 230 enrolled patients per arm will be utilized in this trial.
The prevalence of biomarker-positive patients in the overall population is expected to be 40%.
The target number of events in the overall population at FA is set to 300. In addition, the target number of events needs to be defined in the biomarker-positive population in case this population is chosen for the final assessment, this value is equal to 150.
The annual patient dropout rate is equal to 5% (the time to patient dropout is assumed to follow an exponential distribution).
The length of the patient enrollment period is 12 months and the median enrollment time is expected to be 8 months.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim looks will be taken after 40% and 60% of the patients complete the treatment period or drop out of the trial before completing the treatment period.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 10%.
The influence and interaction thresholds used in the population selection rule are set to 0.1 and 1.3. The conditions based on these thresholds are applied sequentially to determine if the final analysis should be performed in the overall population only, in the biomarker-positive population only or simultaneously in both populations.
The treatment effect assumptions are specified within the biomarker-positive and biomarker-negative populations. A common effect will be assumed in the control arm, i.e., the median time of 7.5 months regardless of the biomarker status. The median time of 9.5 months in the treated patients with a biomarker-negative status indicates a weaker treatment effect (hazard ratio of 0.79) whereas the median time of 11 months in the treated patients with a biomarker-positive status corresponds to a much stronger treatment effect (hazard ratio of 0.68).
Key operating characteristics of the proposed adaptive design with population selection will be evaluated using the ADPopSel
function based on 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report for this adaptive design can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADPopSelApp
function.
No arguments
No return value
ADPopSel
, ADPopSelExample1
, ADPopSelExample2
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(230, 230) # Prevalence of biomarker-positive patients in the overall population parameters$prevalence = 0.4 # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median times in the control arm (biomarker-negative, biomarker-positive) parameters$control_time = c(7.5, 7.5) # Median times in the treatment arm (biomarker-negative, biomarker-positive) parameters$treatment_time = c(9.5, 11) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Target event count at FA (overall, biomarker-positive) parameters$event_count = c(300, 150) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Influence threshold at IA2 parameters$influence = 0.1 # Interaction threshold at IA2 parameters$interaction = 1.3 # Enrollment period parameters$enrollment_period = 12 # Median enrollment time parameters$enrollment_parameter = 8 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADPopSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADPopSel Time-to-event endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(230, 230) # Prevalence of biomarker-positive patients in the overall population parameters$prevalence = 0.4 # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median times in the control arm (biomarker-negative, biomarker-positive) parameters$control_time = c(7.5, 7.5) # Median times in the treatment arm (biomarker-negative, biomarker-positive) parameters$treatment_time = c(9.5, 11) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Target event count at FA (overall, biomarker-positive) parameters$event_count = c(300, 150) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Influence threshold at IA2 parameters$influence = 0.1 # Interaction threshold at IA2 parameters$interaction = 1.3 # Enrollment period parameters$enrollment_period = 12 # Median enrollment time parameters$enrollment_parameter = 8 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADPopSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADPopSel Time-to-event endpoint.docx", fileext=".docx"))
This function performs a simulation-based evaluation of operating characteristics for multi-stage adaptive Phase II trials that employ response-adaptive randomization. Patients are assigned to receive placebo or one of several doses of the experimental treatment. The efficacy data at the end of each stage are used to update the randomization scheme for the next stage with the ultimate goal of assigning most patients to the most effective doses. For an example of the function call, see ADRandExample.
ADRand(parameters)
ADRand(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘ADRandResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
sim_results |
List with multiple data frames containing key descriptive statistics for each simulation run. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a web application with a Shiny-based graphical user interface to facilitate the process of designing dose-finding Phase II trials with response-adaptive randomization. The application supports the same functionality as the ADRand
function. For an example of the function call, see ADRandExample.
ADRandApp()
ADRandApp()
No arguments
No return value, called for side effects
Consider a Phase II trial to be conducted to evaluate the efficacy and safety profiles of several doses of an experimental treatment compared to placebo. The trial will be conducted for the treatment of cognitive impairment in patients with schizophrenia. The primary endpoint is a continuous, normally distributed endpoint (MCCB overall composite score) with a larger value indicating favorable effect. The treatment effect will be evaluated at 3 months after randomization, i.e., the treatment period will 3-month long. A multi-stage adaptive design will be employed in the trial to evaluate the dose-response relationship for the treatment while assigning most patients to the best performing doses. This will be accomplished using a response-adaptive randomization approach.
The following design parameters will be used in this example:
A total of 320 patients will be enrolled in the trial.
Patients will be randomly assigned to placebo and four doses of the experimental treatment (20 mg, 50 mg, 100 mg or 250 mg).
A four-stage design will be utilized with 80 patients enrolled in each stage. A balanced randomization approach will be used in the first stage of the trial and the randomization ratios in the dosing groups will be updated at the end of each stage. The randomization ratio for the placebo group will be fixed at 20% throughout the trial.
Patients will be enrolled over the period of 24 months with the median enrollment time (time point by which 50% of the patients will be enrolled into the trial) of 18 months.
The patient dropout rate will be set to 10% at the end of the treatment period.
Dose-response modeling at the end of each stage will be performed using the MCPMod approach based on four dose-response models (linear, exponential, Emax and logistic models). Non-linear parameters of these models will be specified as shown below (note that no parameter needs to be specified for the linear model). The rule for updating the randomization scheme will be based on the posterior probability of achieving a clinically meaningful improvement over placebo in each dosing group. The threshold for clinically meaningful improvement will be set at 1.5.
Operating characteristics of the response-adaptive design will be evaluated using the ADRand
function. As shown below, a list of all design and decision rule parameters (parameters
) will be created and then passed to this function. It's important to note that, due to the use of Bayesian calculations, the simulation process will be rather slow. It is recommended to take advantage of parallel calculations by setting the number of cores (ncores
) to a larger value as shown below.
A simulation report for this adaptive design can be created by calling the GenerateReport
function. The same functionality is also available via a Shiny-based application that can be launched by calling the ADRandApp
function.
No arguments
No return value
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Dose levels in the trial parameters$dose_levels = c(0, 20, 50, 100, 250) # Total number of enrolled patients in each trial stage parameters$stage_sample_size = c(80, 80, 80, 80) # Length of the treatment period (months) parameters$treatment_period = 3 # Length of the patient enrollment period (months) parameters$enrollment_period = 24 # Median enrollment time (months) parameters$enrollment_parameter = 18 # Patient dropout rate parameters$dropout_rate = 0.1 # Mean and SD for the primary endpoint in the placebo group parameters$control_mean = 1.5 parameters$control_sd = 4 # Mean and SD for the primary endpoint in the dosing groups parameters$treatment_mean = c(2, 2.5, 3, 3.5) parameters$treatment_sd = c(4, 4, 4, 4) # Fixed randomization ratio in the placebo group parameters$ratio_placebo = 0.2 # Threshold for clinically meaningful improvement over placebo parameters$delta = 1.5 # Balance parameter for adaptive randomization parameters$balance = 2 # Non-linear parameters of the candidate dose-response models used in the MCPMod method # for modeling the dose-response relationship # Non-linear parameter of the exponential model (delta) parameters$exponential_model_parameter = 100 # Non-linear parameter of the Emax model (ED50) parameters$emax_model_parameter = 200 # Non-linear parameters of the logistic model (ED50 and delta) parameters$logistic_model_parameters = c(125, 25) # One-sided Type I error rate parameters$alpha = 0.025 # Number of cores for parallel calculations parameters$ncores = 1 # Number of simulations, you should prefer more (use large values!) parameters$nsims = 10 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute operating characteristics results = ADRand(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADRand Normally distributed endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Dose levels in the trial parameters$dose_levels = c(0, 20, 50, 100, 250) # Total number of enrolled patients in each trial stage parameters$stage_sample_size = c(80, 80, 80, 80) # Length of the treatment period (months) parameters$treatment_period = 3 # Length of the patient enrollment period (months) parameters$enrollment_period = 24 # Median enrollment time (months) parameters$enrollment_parameter = 18 # Patient dropout rate parameters$dropout_rate = 0.1 # Mean and SD for the primary endpoint in the placebo group parameters$control_mean = 1.5 parameters$control_sd = 4 # Mean and SD for the primary endpoint in the dosing groups parameters$treatment_mean = c(2, 2.5, 3, 3.5) parameters$treatment_sd = c(4, 4, 4, 4) # Fixed randomization ratio in the placebo group parameters$ratio_placebo = 0.2 # Threshold for clinically meaningful improvement over placebo parameters$delta = 1.5 # Balance parameter for adaptive randomization parameters$balance = 2 # Non-linear parameters of the candidate dose-response models used in the MCPMod method # for modeling the dose-response relationship # Non-linear parameter of the exponential model (delta) parameters$exponential_model_parameter = 100 # Non-linear parameter of the Emax model (ED50) parameters$emax_model_parameter = 200 # Non-linear parameters of the logistic model (ED50 and delta) parameters$logistic_model_parameters = c(125, 25) # One-sided Type I error rate parameters$alpha = 0.025 # Number of cores for parallel calculations parameters$ncores = 1 # Number of simulations, you should prefer more (use large values!) parameters$nsims = 10 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute operating characteristics results = ADRand(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADRand Normally distributed endpoint.docx", fileext=".docx"))
This function performs a simulation-based evaluation of operating characteristics for adaptive trials with data-driven sample size re-estimation (normally distributed or binary endpoints) or event count re-estimation (time-to-event endpoint). A two-arm Phase III clinical trial with two interim analyses is assumed. The first interim analysis supports early stopping for futility and the second interim analysis supports an option to increase the number of patients or number of events in the trial. For examples of the function call, see ADSSModExample1, ADSSModExample2 or ADSSModExample3.
ADSSMod(parameters)
ADSSMod(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘ADSSModResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
sim_results |
Data frame containing key descriptive statistics for each simulation run. |
sim_summary |
List containing the key operating characteristics of the adaptive design. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a Shiny-based graphical user interface to facilitate the process of designing Phase III adaptive trials with two interim analysis to enable a futility assessment and sample size/event count re-estimation. The application supports the same functionality as the ADSSMod
function. For an example of the function call, see ADSSModExample1.
ADSSModApp()
ADSSModApp()
No arguments
No return value, called for side effects
Consider a seamless Phase II/Phase III or Phase III trial with a normally distributed primary efficacy endpoint. A larger value of the endpoint corresponds to a more favorable outcome. A single dose or regimen of an experimental treatment will be compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial may be stopped due to futility if a significant treatment effect is unlikely to be established at the final analysis (FA), i.e., the predicted probability of success (conditional power) is very low at this interim analysis.
Sample size re-estimation rule will be applied at the second interim analysis (IA2). The total number of patients in the trial will be increased to boost the probability of success if the predicted probability of success (conditional power) is lower than expected at this interim analysis.
The following design parameters will be assumed:
A balanced design with 120 enrolled patients per arm will be utilized.
The patient dropout rate is equal to 5%, i.e., 5% of the patients are expected to be lost to follow up by the end of the treatment period.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim looks will be taken after 40% and 60% of the patients complete the treatment period or drop out of the trial before completing the treatment period.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 10%, i.e., the trial will be terminated for futility if conditional power does not exceed 10%.
The promising interval at IA2 ranges from 50% to 90%, i.e., the sample size in the trial will be increased if conditional power is greater than 50% and less than 90%.
The target conditional power at IA2 is set to 90%, i.e., the sample size will be increased to ensure conditional power of 90% up a pre-defined cap. The maximum increase is equal to 30% of the original sample size.
Finally, the mean effects in the control and treatment arms are assumed to be equal to 0 and 0.3, respectively, with a common standard deviation of 1.
Key operating characteristics of this adaptive design will be evaluated using the ADSSMod
function with 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADSSModApp
function.
No arguments
No return value
ADSSMod
, ADSSModExample2
, ADSSModExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(120, 120) # Patient dropout rate parameters$dropout_rate = 0.05 # Mean and SD in the control arm parameters$control_mean = 0 parameters$control_sd = 1 # Mean and SD in the treatment arm parameters$treatment_mean = 0.3 parameters$treatment_sd = 1 # Information fractions at IA1, IA2, FA (before sample size adjustment) # and FA (after sample size adjustment) parameters$info_frac = c(0.4, 0.6, 1, 1.3) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Promising interval for conditional power at IA2 parameters$promising_interval = c(0.5, 0.9) # Target conditional power for increasing the sample size at IA2 parameters$target_power = 0.9 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADSSMod(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADSSMod Normally distributed endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(120, 120) # Patient dropout rate parameters$dropout_rate = 0.05 # Mean and SD in the control arm parameters$control_mean = 0 parameters$control_sd = 1 # Mean and SD in the treatment arm parameters$treatment_mean = 0.3 parameters$treatment_sd = 1 # Information fractions at IA1, IA2, FA (before sample size adjustment) # and FA (after sample size adjustment) parameters$info_frac = c(0.4, 0.6, 1, 1.3) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Promising interval for conditional power at IA2 parameters$promising_interval = c(0.5, 0.9) # Target conditional power for increasing the sample size at IA2 parameters$target_power = 0.9 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADSSMod(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADSSMod Normally distributed endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial where the primary efficacy endpoint is binary with a higher proportion indicating a more favorable outcome. A single dose or regimen of an experimental treatment will be compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial may be stopped due to futility if a significant treatment effect is unlikely to be established at the final analysis (FA).
Sample size re-estimation rule will be applied at the second interim analysis (IA2). The total number of patients in the trial will be increased to boost the probability of success if conditional power is lower than expected at this interim analysis.
The following design parameters will be assumed:
A trial design with a 1:2 randomization ratio will be used. A hundred patients will be enrolled in the control arm and twice as many patients will be enrolled in the experimental treatment arm.
The patient dropout rate at the end of the treatment period is equal to 10%.
The information fractions at IA1 and IA2 are set to 40% and 60%.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 20%.
The promising interval at IA2 ranges from 50% to 90%.
The target conditional power at IA2 is set to 90% and the total sample size in the trial could be increased up to 40%.
The response rates for the primary efficacy endpoint are assumed to be 10% (control arm)and 25% (experimental treatment arm).
Key operating characteristics of this adaptive design will be evaluated using the ADSSMod
function with 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADSSModApp
function.
No arguments
No return value
ADSSMod
, ADSSModExample1
, ADSSModExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(100, 200) # Patient dropout rate parameters$dropout_rate = 0.1 # Response rate in the control arm parameters$control_rate = 0.1 # Response rate in the treatment arm parameters$treatment_rate = 0.25 # Information fractions at IA1, IA2, FA (before sample size adjustment) # and FA (after sample size adjustment) parameters$info_frac = c(0.4, 0.6, 1, 1.4) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.2 # Promising interval for conditional power at IA2 parameters$promising_interval = c(0.5, 0.9) # Target conditional power for increasing the sample size at IA2 parameters$target_power = 0.9 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADSSMod(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADSSMod Binary endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(100, 200) # Patient dropout rate parameters$dropout_rate = 0.1 # Response rate in the control arm parameters$control_rate = 0.1 # Response rate in the treatment arm parameters$treatment_rate = 0.25 # Information fractions at IA1, IA2, FA (before sample size adjustment) # and FA (after sample size adjustment) parameters$info_frac = c(0.4, 0.6, 1, 1.4) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.2 # Promising interval for conditional power at IA2 parameters$promising_interval = c(0.5, 0.9) # Target conditional power for increasing the sample size at IA2 parameters$target_power = 0.9 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADSSMod(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADSSMod Binary endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial where the primary efficacy endpoint is a time-to-event endpoint, e.g., the time to disease progression or death. A single regimen of an experimental treatment will be compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial may be stopped due to futility if a significant treatment effect is unlikely to be established at the final analysis (FA).
Event count re-estimation rule will be applied at the second interim analysis (IA2). The target number of events of interest will be increased to improve the probability of success if conditional power is lower than expected at this interim analysis.
The following design parameters will be assumed:
A balanced design with 220 enrolled patients per arm will be used in the trial.
The original number of events at FA is set to 300.
The annual patient dropout rate is equal to 5% (the time to patient dropout is assumed to follow an exponential distribution).
The length of the patient enrollment period is 12 months and the median enrollment time is anticipated to be 8 months, i.e., 50% of the patients are expected to be enrolled into the trial by the 8-month milestone.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim analyses will be performed after 40% and 60% of the original number of events have been accrued.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 10%.
The promising interval at IA2 ranges from 50% to 90%.
The target conditional power at IA2 is set to 90% and the target number of events could be increased up to 30%.
The median event times, e.g., median survival times, are assumed to be 7.5 months and 10.5 months in the control and experimental treatment arms, respectively. If the time to the event of interest is exponentially distributed, these assumptions correspond to a hazard ratio of 0.71.
Key operating characteristics of this adaptive design will be evaluated using the ADSSMod
function with 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADSSModApp
function.
No arguments
No return value
ADSSMod
, ADSSModExample1
, ADSSModExample2
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(220, 220) # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median time in the control arm parameters$control_time = 7.5 # Median time in the treatment arm parameters$treatment_time = 10.5 # Target event count at FA (before event count adjustment) parameters$event_count = 300 # Information fractions at IA1, IA2, FA (before event count adjustment) # and FA (after event count adjustment) parameters$info_frac = c(0.4, 0.6, 1, 1.3) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Promising interval for conditional power at IA2 parameters$promising_interval = c(0.5, 0.9) # Target conditional power for increasing the number of events at IA2 parameters$target_power = 0.9 # Enrollment period parameters$enrollment_period = 12 # Median enrollment time parameters$enrollment_parameter = 8 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADSSMod(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADSSMod Time-to-event endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(220, 220) # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median time in the control arm parameters$control_time = 7.5 # Median time in the treatment arm parameters$treatment_time = 10.5 # Target event count at FA (before event count adjustment) parameters$event_count = 300 # Information fractions at IA1, IA2, FA (before event count adjustment) # and FA (after event count adjustment) parameters$info_frac = c(0.4, 0.6, 1, 1.3) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Promising interval for conditional power at IA2 parameters$promising_interval = c(0.5, 0.9) # Target conditional power for increasing the number of events at IA2 parameters$target_power = 0.9 # Enrollment period parameters$enrollment_period = 12 # Median enrollment time parameters$enrollment_parameter = 8 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADSSMod(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADSSMod Time-to-event endpoint.docx", fileext=".docx"))
This function performs a simulation-based evaluation of operating characteristics for adaptive trials with data-driven treatment selection. A multi-arm Phase III clinical trial with several doses or regimens of an experimental treatment versus control and two interim analyses is assumed. The first interim analysis supports early stopping for futility and the second interim analysis enables adaptive treatment selection to identify the best performing treatment. For examples of the function call, see ADTreatSelExample1, ADTreatSelExample2 or ADTreatSelExample3.
ADTreatSel(parameters)
ADTreatSel(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘ADTreatSelResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
sim_results |
Data frame containing key descriptive statistics for each simulation run. |
sim_summary |
List containing the key operating characteristics of the adaptive design. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a web application with a Shiny-based graphical user interface to facilitate the process of designing Phase III adaptive trials with two interim analysis to enable a futility assessment and data-driven selection of the best treatment arm. The application supports the same functionality as the ADTreatSel
function. For an example of the function call, see ADTreatSelExample1.
ADTreatSelApp()
ADTreatSelApp()
No arguments
No return value, called for side effects
Consider a seamless Phase II/Phase III or Phase III trial with a normally distributed primary efficacy endpoint with a larger value indicating a more favorable outcome. The efficacy and safety profiles of two treatments, e.g., two doses of an experimental treatment, will be evaluated in this trial compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). A treatment arm may be dropped due to futility if the treatment-specific conditional power is too low. The trial will be terminated for futility if all treatment arms are dropped.
Treatment selection rule will be applied at the second interim analysis (IA2). The best performing treatment will be selected for the final analysis (FA) and the remaining treatment will be dropped at this interim analysis.
The following design parameters will be assumed:
A balanced design with 200 enrolled patients per trial arm will be utilized in the trial.
The patient dropout rate at the end of the treatment period is equal to 5%.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim looks will be taken after 40% and 60% of the patients complete the treatment period or drop out of the trial before completing the treatment period.
The futility threshold at IA1 is set to 25%, which means that a treatment arm will be dropped at this interim analysis if conditional power does not exceed 25%. The mean effect and standard deviation are assumed to be 0 and 1 in the control arm. The mean effects in the two treatment arms are assumed to be equal to 0.25 and 0.3, respectively, with a common standard deviation of 1.
To address multiplicity induced by the data-driven treatment selection, the Hochberg procedure will be applied at the final analysis.
Key operating characteristics of this adaptive design with a treatment selection option at the second interim look will be evaluated using the ADTreatSel
function based on 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report for this adaptive design can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADTreatSelApp
function.
No arguments
No return value
ADTreatSel
, ADTreatSelExample2
, ADTreatSelExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, two treatments) parameters$sample_size = c(200, 200, 200) # Patient dropout rate parameters$dropout_rate = 0.05 # Mean and SD in the control arm parameters$control_mean = 0 parameters$control_sd = 1 # Means and SDs in the multiple treatment arms parameters$treatment_mean = c(0.25, 0.30) parameters$treatment_sd = c(1, 1) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.25 # Number of treatments to be selected at the second interim analysis parameters$treatment_count = 1 # Multiple testing procedure to be used in the trial parameters$mult_test = "Hochberg" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADTreatSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADTreatSel Normally distributed endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, two treatments) parameters$sample_size = c(200, 200, 200) # Patient dropout rate parameters$dropout_rate = 0.05 # Mean and SD in the control arm parameters$control_mean = 0 parameters$control_sd = 1 # Means and SDs in the multiple treatment arms parameters$treatment_mean = c(0.25, 0.30) parameters$treatment_sd = c(1, 1) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.25 # Number of treatments to be selected at the second interim analysis parameters$treatment_count = 1 # Multiple testing procedure to be used in the trial parameters$mult_test = "Hochberg" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADTreatSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADTreatSel Normally distributed endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial with a binary primary efficacy endpoint. This endpoint represents a success rate and thus a higher proportion corresponds to a more favorable outcome. The efficacy and safety profiles of three treatments, e.g., three doses of an experimental treatment, will be evaluated in this trial compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). A treatment arm may be dropped due to futility if the treatment-specific conditional power is too low. The trial will be terminated for futility if all treatment arms are dropped.
Treatment selection rule will be applied at the second interim analysis (IA2). Two best performing treatments will be selected for the final analysis (FA) and patient enrollment will be discontinued in the third treatment arm after the second interim analysis.
The following design parameters will be assumed:
A balanced design with 150 enrolled patients per trial arm will be utilized in the trial.
The patient dropout rate at the end of the treatment period is equal to 10%.
The information fractions at IA1 and IA2 are set to 40% and 60%.
The futility threshold for each treatment arm at IA1 is set to 15%. The response rates for the primary endpoint are assumed to be 10% in the control arm and 25% in each treatment arm.
To protect the overall Type I error rate in the trial, the Hochberg procedure will be used at the final analysis.
Key operating characteristics of this adaptive design with a treatment selection option at the second interim look will be evaluated using the ADTreatSel
function based on 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report for this adaptive design can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADTreatSelApp
function.
No arguments
No return value
ADTreatSel
, ADTreatSelExample1
, ADTreatSelExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, three treatments) parameters$sample_size = c(150, 150, 150, 150) # Patient dropout rate parameters$dropout_rate = 0.1 # Response rate in the control arm parameters$control_rate = 0.1 # Response rates in the treatment arms parameters$treatment_rate = c(0.25, 0.25, 0.25) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.15 # Number of treatments to be selected at the second interim analysis parameters$treatment_count = 2 # Multiple testing procedure to be used in the trial parameters$mult_test = "Hochberg" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADTreatSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADTreatSel Binary endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, three treatments) parameters$sample_size = c(150, 150, 150, 150) # Patient dropout rate parameters$dropout_rate = 0.1 # Response rate in the control arm parameters$control_rate = 0.1 # Response rates in the treatment arms parameters$treatment_rate = c(0.25, 0.25, 0.25) # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.15 # Number of treatments to be selected at the second interim analysis parameters$treatment_count = 2 # Multiple testing procedure to be used in the trial parameters$mult_test = "Hochberg" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADTreatSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADTreatSel Binary endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial with a time-to-event primary efficacy endpoint. Two regimens of an experimental treatment will be evaluated in this trial compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). A treatment arm may be dropped due to futility if the treatment-specific conditional power is too low. The trial will be terminated for futility if all treatment arms are dropped.
Treatment selection rule will be applied at the second interim analysis (IA2). The best performing treatment will be selected for the final analysis (FA) and the other treatment will be dropped at this interim analysis.
The following design parameters will be assumed:
A balanced design with 180 enrolled patients per arm will be used in the trial.
The target number of events at FA is set to 450.
The annual patient dropout rate is equal to 5% (the time to patient dropout is assumed to follow an exponential distribution).
The length of the patient enrollment period is 24 months and the median enrollment time is expected to be 18 months.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim analyses will be performed after 40% and 60% of the original number of events have been accrued.
The futility threshold for each treatment arm at IA1 is set to 10%. The median event times are assumed to be 7.5 months in the control arms and 10.5 months in both treatment arms, respectively. Under the assumption of exponentially distributed event times, these assumptions correspond to a hazard ratio of 0.71 in each treatment arm.
To control the overall Type I error rate in the trial, the Hochberg procedure will be applied at the final analysis.
Key operating characteristics of this adaptive design with a treatment selection option at the second interim look will be evaluated using the ADTreatSel
function based on 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report for this adaptive design can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ADTreatSelApp
function.
No arguments
No return value
ADTreatSel
, ADTreatSelExample1
, ADTreatSelExample2
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, two treatments) parameters$sample_size = c(180, 180, 180) # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median time in the control arm parameters$control_time = 7.5 # Median times in the treatment arms parameters$treatment_time = c(10.5, 10.5) # Target event count at FA parameters$event_count = 450 # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Enrollment period parameters$enrollment_period = 24 # Median enrollment time parameters$enrollment_parameter = 18 # Number of treatments to be selected at the second interim analysis parameters$treatment_count = 1 # Multiple testing procedure to be used in the trial parameters$mult_test = "Hochberg" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADTreatSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADTreatSel Time-to-event endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, two treatments) parameters$sample_size = c(180, 180, 180) # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median time in the control arm parameters$control_time = 7.5 # Median times in the treatment arms parameters$treatment_time = c(10.5, 10.5) # Target event count at FA parameters$event_count = 450 # Information fractions at IA1, IA2, FA parameters$info_frac = c(0.4, 0.6, 1) # Futility threshold for conditional power at IA1 parameters$futility_threshold = 0.1 # Enrollment period parameters$enrollment_period = 24 # Median enrollment time parameters$enrollment_parameter = 18 # Number of treatments to be selected at the second interim analysis parameters$treatment_count = 1 # Multiple testing procedure to be used in the trial parameters$mult_test = "Hochberg" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ADTreatSel(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ADTreatSel Time-to-event endpoint.docx", fileext=".docx"))
This function performs a simulation-based evaluation of operating characteristics for cluster-randomized trials with normally distributed or binary endpoints. A multi-arm clinical trial is assumed (control arm and several treatment arms). For examples of the function call, see ClustRandExample1 or ClustRandExample2.
ClustRand(parameters)
ClustRand(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘ClustRandResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
pval_results |
Data frame containing the convergence flags and p-values for each simulation run. |
coef_results |
Data frame containing the convergence flags and model parameter estimares for each simulation run. The data frame is created if the descriptive statistics are requested ( |
cluster_size_results |
Data frame containing the cluster sizes for each simulation run if the cluster sizes are random ( |
sim_summary |
List containing the key operating characteristics of the cluster-randomized design. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a web application with a Shiny-based graphical user interface to facilitate the process of designing a two-arm cluster-randomized trial (treatment and control arms). The application supports the same functionality as the ClustRand
function. For an example of the function call, see ClustRandExample1.
ClustRandApp()
ClustRandApp()
No arguments
No return value, called for side effects
Consider a seamless Phase II/Phase III or Phase III trial with a normally distributed primary efficacy endpoint. A larger value of the endpoint corresponds to a more favorable outcome. A single dose or regimen of an experimental treatment will be compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial may be stopped due to futility if a significant treatment effect is unlikely to be established at the final analysis (FA), i.e., the predicted probability of success (conditional power) is very low at this interim analysis.
Sample size re-estimation rule will be applied at the second interim analysis (IA2). The total number of patients in the trial will be increased to boost the probability of success if the predicted probability of success (conditional power) is lower than expected at this interim analysis.
The following design parameters will be assumed:
A balanced design with 120 enrolled patients per arm will be utilized.
The patient dropout rate is equal to 5%, i.e., 5% of the patients are expected to be lost to follow up by the end of the treatment period.
The information fractions at IA1 and IA2 are set to 40% and 60%, i.e., the first and second interim looks will be taken after 40% and 60% of the patients complete the treatment period or drop out of the trial before completing the treatment period.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 10%, i.e., the trial will be terminated for futility if conditional power does not exceed 10%.
The promising interval at IA2 ranges from 50% to 90%, i.e., the sample size in the trial will be increased if conditional power is greater than 50% and less than 90%.
The target conditional power at IA2 is set to 90%, i.e., the sample size will be increased to ensure conditional power of 90% up a pre-defined cap. The maximum increase is equal to 30% of the original sample size.
Finally, the mean effects in the control and treatment arms are assumed to be equal to 0 and 0.3, respectively, with a common standard deviation of 1.
Key operating characteristics of this adaptive design will be evaluated using the ClustRand
function with 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ClustRandApp
function.
No arguments
No return value
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Lower" # Number of completers in the trial arms (control, multiple treatments) parameters$sample_size = c(100, 100) # Cluster scheme parameters$cluster_scheme = "Fixed" # Vector of cluster sizes in the control arm parameters$control_cluster_size = rep(10, 10) # Vector of cluster sizes in the treatment arm parameters$treatment_cluster_size = rep(10, 10) # Mean in the control arm parameters$control_mean = 1 # Intra-cluster correlation coefficient in the control arm parameters$control_icc = 0.6 # Between-cluster standard deviation in the control arm parameters$control_between_cluster_sd = 1.2 # Mean in the treatment arm parameters$treatment_mean = 0.3 # Intra-cluster correlation coefficient in the treatment arm parameters$treatment_icc = 0.6 # Between-cluster standard deviation in the treatment arm parameters$treatment_between_cluster_sd = 1.2 # Data analysis method (generalized estimating equations (GEE) # or generalized linear mixed effects model (GLMEM)) parameters$method_type = "GEE" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations parameters$nsims = 10 # Number of cores for parallel calculations parameters$ncores = 1 # Compute descriptive statistics (arm-specific effects, ICC, cluster sizes) for each simulation run parameters$descriptive_statistics = TRUE # Run simulations to compute operating characteristics results = ClustRand(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ClustRand Normally distributed endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of favorable outcome parameters$direction = "Lower" # Number of completers in the trial arms (control, multiple treatments) parameters$sample_size = c(100, 100) # Cluster scheme parameters$cluster_scheme = "Fixed" # Vector of cluster sizes in the control arm parameters$control_cluster_size = rep(10, 10) # Vector of cluster sizes in the treatment arm parameters$treatment_cluster_size = rep(10, 10) # Mean in the control arm parameters$control_mean = 1 # Intra-cluster correlation coefficient in the control arm parameters$control_icc = 0.6 # Between-cluster standard deviation in the control arm parameters$control_between_cluster_sd = 1.2 # Mean in the treatment arm parameters$treatment_mean = 0.3 # Intra-cluster correlation coefficient in the treatment arm parameters$treatment_icc = 0.6 # Between-cluster standard deviation in the treatment arm parameters$treatment_between_cluster_sd = 1.2 # Data analysis method (generalized estimating equations (GEE) # or generalized linear mixed effects model (GLMEM)) parameters$method_type = "GEE" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations parameters$nsims = 10 # Number of cores for parallel calculations parameters$ncores = 1 # Compute descriptive statistics (arm-specific effects, ICC, cluster sizes) for each simulation run parameters$descriptive_statistics = TRUE # Run simulations to compute operating characteristics results = ClustRand(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ClustRand Normally distributed endpoint.docx", fileext=".docx"))
Consider a seamless Phase II/Phase III or Phase III trial where the primary efficacy endpoint is binary with a higher proportion indicating a more favorable outcome. A single dose or regimen of an experimental treatment will be compared to a control. An adaptive design with two interim analyses will be employed in the trial (the first interim analysis may correspond to the end of the Phase II portion of the trial). The following decision rules will be applied at the interim looks:
Futility stopping rule will be applied at the first interim analysis (IA1). The trial may be stopped due to futility if a significant treatment effect is unlikely to be established at the final analysis (FA).
Sample size re-estimation rule will be applied at the second interim analysis (IA2). The total number of patients in the trial will be increased to boost the probability of success if conditional power is lower than expected at this interim analysis.
The following design parameters will be assumed:
A trial design with a 1:2 randomization ratio will be used. A hundred patients will be enrolled in the control arm and twice as many patients will be enrolled in the experimental treatment arm.
The patient dropout rate at the end of the treatment period is equal to 10%.
The information fractions at IA1 and IA2 are set to 40% and 60%.
In addition, the following decision rules will be considered at the two interim analyses:
The futility threshold at IA1 is set to 20%.
The promising interval at IA2 ranges from 50% to 90%.
The target conditional power at IA2 is set to 90% and the total sample size in the trial could be increased up to 40%.
The response rates for the primary efficacy endpoint are assumed to be 10% (control arm)and 25% (experimental treatment arm).
Key operating characteristics of this adaptive design will be evaluated using the ClustRand
function with 10,000 simulation runs. To invoke this function, a list of all design and decision rule parameters (parameters
) needs to be created as shown below. A comprehensive simulation report can be generated by calling the GenerateReport
function and a graphical user interface can be launched using the ClustRandApp
function.
No arguments
No return value
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Lower" # Number of completers in the trial arms (control, multiple treatments) parameters$sample_size = c(100, 100) # Cluster scheme (fixed or random cluster sizes) parameters$cluster_scheme = "Fixed" # Vector of cluster sizes in the control arm parameters$control_cluster_size = rep(10, 10) # Vector of cluster sizes in the treatment arm parameters$treatment_cluster_size = rep(10, 10) # Response rate in the control arm parameters$control_rate = 0.6 # Intracluster correlation coefficient in the control arm parameters$control_icc = 0.3 # Response rate in the treatment arms parameters$treatment_rate = 0.3 # Intracluster correlation coefficient in the treatment arms parameters$treatment_icc = 0.3 # Data analysis method (generalized estimating equations (GEE) # or generalized linear mixed effects model (GLMEM)) parameters$method_type = "GLMEM" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations parameters$nsims = 10 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ClustRand(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ClustRand Binary endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Lower" # Number of completers in the trial arms (control, multiple treatments) parameters$sample_size = c(100, 100) # Cluster scheme (fixed or random cluster sizes) parameters$cluster_scheme = "Fixed" # Vector of cluster sizes in the control arm parameters$control_cluster_size = rep(10, 10) # Vector of cluster sizes in the treatment arm parameters$treatment_cluster_size = rep(10, 10) # Response rate in the control arm parameters$control_rate = 0.6 # Intracluster correlation coefficient in the control arm parameters$control_icc = 0.3 # Response rate in the treatment arms parameters$treatment_rate = 0.3 # Intracluster correlation coefficient in the treatment arms parameters$treatment_icc = 0.3 # Data analysis method (generalized estimating equations (GEE) # or generalized linear mixed effects model (GLMEM)) parameters$method_type = "GLMEM" # One-sided alpha level parameters$alpha = 0.025 # Number of simulations parameters$nsims = 10 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to compute operating characteristics results = ClustRand(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("ClustRand Binary endpoint.docx", fileext=".docx"))
This function performs event forecasting in trials with an event-driven design. Blinded event data at an interim analysis are used to forecast the number of events at pre-defined time points in the future. For an example of the function call, see EventPredExample.
EventPred(parameters)
EventPred(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘EventPredResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
interim_analysis |
Data frame containing the event information from the interim analysis data set. |
predictions |
Data frame containing the event prediction information at the future time points. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a web application with a Shiny-based graphical user interface to facilitate the process of event forecasting in a Phase II or Phase III clinical trial with an event-driven design. The application supports the same functionality as the EventPred
function. For an example of the function call, see EventPredExample.
This application prompts the user to upload a data set in a CSV (comma-separated values) format with blinded patient enrollment, event and patient dropout data. The data set is required to include four variables (enrollment
, time
, event
and dropout
) with a single record per patient, see for example the EventPredData
data set.
EventPredApp()
EventPredApp()
No arguments
No return value, called for side effects
Example data set based on a Phase III oncology trial with an overall survival endpoint to illustrate event prediction in event-driven trials.
data(EventPredData)
data(EventPredData)
No arguments
A data set with 150 records (one record per patient) and 4 variables:
enrollment
Time of the patient's enrollment (months).
time
Time of the patient's death or last contact if the event is censored relative to the patient's enrollment (months).
event
Event indicator (1 if the patient died and 0 otherwise).
dropout
Patient dropout indicator (1 if the patient dropped out of the trial/was lost to follow up and 0 otherwise).
No return value
Consider a Phase III trial in an oncology population that is being conducted to investigate the efficacy of an experimental treatment versus a control (best supportive care). The primary efficacy analysis evaluates the survival benefit of this treatment. Blinded data, including patient enrollment, event and patient dropout information, will be reviewed periodically throughout the trial to predict the number of events at pre-defined time points in the future.
Assume that the current snapshot of data required for event prediction is included in the EventPredData
data set. This data set contains blinded patient enrollment, event and patient dropout information on 150 patients at 12 months after the study start. The blinded data, along with relevant prior information, will support the calculation of the predicted number of events and 95% predictive intervals up to the 24-month milestone.
Prior information needs to be provided for the event hazard rate, patient dropout hazard rate and patient enrollment rate. These parameters are assumed to follow gamma distributions. The shape and rate parameters of the gamma distributions could be specified directly or by invoking the EventPredPriorDistribution
function. This function facilitates the process of prior specifications by allowing the user to provide the expected value of a parameter of interest, e.g., the event hazard rate, as well as the uncertainty parameter. The latter quantifies the amount of variability around the expected value, e.g., the uncertainty parameter of 0.1 corresponds to a low standard deviation and thus defines a high-confidence prior distribution. The expected values of the event and patient enrollment hazard rates will be computed using the assumptions that the expected median event and dropout times are equal to 15 and 80 months, respectively (the expected median dropout time corresponds to an annual dropout rate of 10%). The expected patient enrollment rate will be set to 35 patients per month. A common uncertainty parameter of 0.3 will be used for the the event hazard rate, patient dropout hazard rate and patient enrollment rate. This uncertainty parameter will define medium-confidence prior distributions for the three parameters of interest.
A summary of event predictions can be generated by calling the EventPred
function. The calculations will be performed using 1,000 simulation runs. A list of all required parameters (parameters
) needs to be created as shown below and then passed to this function. A simulation report can be generated using the GenerateReport
function and a graphical user interface can be launched using the EventPredApp
function.
No arguments
No return value
# List of all parameters parameters = list() # Load the built-in data set with the patient enrollment, event and dropout # information (EventPredData) parameters$data_set = EventPredData # Future time points for computing event predictions parameters$time_points = seq(from = 12, to = 24, by = 1) # Prior distribution for the event hazard rate based on the # expected median time of 15 months and the uncertainty parameter of 0.3 parameters$event_prior_distribution = EventPredPriorDistribution(expected = log(2) / 15, uncertainty = 0.3) # Prior distribution for the patient dropout hazard rate based on the # expected median time of 80 months and the uncertainty parameter of 0.3 parameters$dropout_prior_distribution = EventPredPriorDistribution(expected = log(2) / 80, uncertainty = 0.3) # Prior distribution for the patient enrollment rate based on the # expected enrollment rate of 35 patients per month and the uncertainty # parameter of 0.3 parameters$enrollment_prior_distribution = EventPredPriorDistribution(expected = 35, uncertainty = 0.3) # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Forecast the number of events at the pre-defined time points results = EventPred(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("EventPred.docx", fileext=".docx"))
# List of all parameters parameters = list() # Load the built-in data set with the patient enrollment, event and dropout # information (EventPredData) parameters$data_set = EventPredData # Future time points for computing event predictions parameters$time_points = seq(from = 12, to = 24, by = 1) # Prior distribution for the event hazard rate based on the # expected median time of 15 months and the uncertainty parameter of 0.3 parameters$event_prior_distribution = EventPredPriorDistribution(expected = log(2) / 15, uncertainty = 0.3) # Prior distribution for the patient dropout hazard rate based on the # expected median time of 80 months and the uncertainty parameter of 0.3 parameters$dropout_prior_distribution = EventPredPriorDistribution(expected = log(2) / 80, uncertainty = 0.3) # Prior distribution for the patient enrollment rate based on the # expected enrollment rate of 35 patients per month and the uncertainty # parameter of 0.3 parameters$enrollment_prior_distribution = EventPredPriorDistribution(expected = 35, uncertainty = 0.3) # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Forecast the number of events at the pre-defined time points results = EventPred(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("EventPred.docx", fileext=".docx"))
This function can be used for calculating the parameters of prior gamma distributions for the event hazard rate, patient dropout hazard rate and patient enrollment rate in the EventPred
function. For an example of the function call, see EventPredExample.
EventPredPriorDistribution(expected, uncertainty)
EventPredPriorDistribution(expected, uncertainty)
expected |
Numeric value defining the expected value of the event hazard rate, patient dropout hazard rate or patient enrollment rate. This value must be positive. |
uncertainty |
Numeric value defining the amount of uncertainly around the expected value defined above. As a general guideline, the uncertainty parameters of 0.1, 0.3 and 0.5 define high-confidence, medium-confidence and low-confidence prior distributions. This value must be between 0 and 1. |
The function returns a numeric vector with the shape and rate parameters of the prior gamma distribution.
This function evaluates operating characteristics of a multi-arm trial design with a single interim analysis. A futility stopping rule will be applied at this interim look and the trial will be stopped early for futility if the predicted probability of success (conditional power) is less than a pre-defined futility threshold in all treatment arms. An optimal value of the futility threshold is derived by maximizing the sensitivity and specificity rates. For examples of the function call, see FutRuleExample1, FutRuleExample2 or FutRuleExample3.
FutRule(parameters)
FutRule(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘FutRuleResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
sim_summary |
List containing the operating characteristics of the futility stopping rule. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
This function creates a web application with a Shiny-based graphical user interface to facilitate the process of defining an optimal futility stopping rule at an interim analysis in a Phase II or Phase III clinical trial. The application supports the same functionality as the FutRule
function. For an example of the function call, see FutRuleExample1.
FutRuleApp()
FutRuleApp()
No arguments
No return value, called for side effects
FutRule
FutRule
Consider a multi-arm Phase II or Phase III trial with a single interim analysis and assume that the primary efficacy endpoint is normally distributed and a larger value indicates to a more favorable outcome. A futility assessment will be performed for each treatment arm at this interim look using the predicted probability of success (conditional power). A treatment arm will be dropped at this decision point if conditional power is below a pre-defined threshold. An optimal value of this futility threshold can be found by computing the sensitivity and specificity rates associated with the futility stopping rule and then identifying the threshold that simultaneously maximizes both rates.
The following design parameters will be assumed in the trial:
Two treatments (two doses of an experimental treatment) will be compared to a control in this trial and a balanced design with 100 enrolled patients per trial arm will be utilized.
The patient dropout rate at the end of the treatment period is assumed to be 5%.
The information fraction at the interim analysis is 50%.
The calculations will be performed under the following set of treatment effect assumptions:
The mean and standard deviation of the primary efficacy endpoint in the control arm are set to 0 and 1, respectively.
The mean values in the two treatment arms are assumed to be equal to 0.25 and 0.3 with a common standard deviation of 1.
Operating characteristics of the futility stopping rule such as the sensitivity and specificity rates as well as an optimal futility threshold will be computed using the FutRule
function based on 1,000 simulation runs. A list of all trial design parameters (parameters
) needs to be set up as shown below and passed to this function. A detailed simulation report can be generated using the GenerateReport
function and a graphical user interface can be launched by calling the FutRuleApp
function.
No arguments
No return value
FutRule
, FutRuleExample2
, FutRuleExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Number of enrolled patients (control, two treatments) parameters$sample_size = c(100, 100, 100) # Direction of favorable outcome parameters$direction = "Higher" # Patient dropout rate parameters$dropout_rate = 0.05 # Mean and SD in the control arm parameters$control_mean = 0 parameters$control_sd = 1 # Means and SDs in the treatment arms parameters$treatment_mean = c(0.25, 0.30) parameters$treatment_sd = c(1, 1) # Information fraction parameters$info_frac = 0.5 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute characteristics of the futility stopping rule results = FutRule(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("FutRule Normally distributed endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Number of enrolled patients (control, two treatments) parameters$sample_size = c(100, 100, 100) # Direction of favorable outcome parameters$direction = "Higher" # Patient dropout rate parameters$dropout_rate = 0.05 # Mean and SD in the control arm parameters$control_mean = 0 parameters$control_sd = 1 # Means and SDs in the treatment arms parameters$treatment_mean = c(0.25, 0.30) parameters$treatment_sd = c(1, 1) # Information fraction parameters$info_frac = 0.5 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute characteristics of the futility stopping rule results = FutRule(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("FutRule Normally distributed endpoint.docx", fileext=".docx"))
Consider a Phase II or Phase III trial with three treatment arms that correspond to two doses of an experimental treatment versus a control and assume that the primary efficacy endpoint is a binary endpoint (response rate, i.e., a higher value indicates a more favorable outcome). A futility assessment will be performed for each treatment arm at an interim look using conditional power and a treatment arm will be dropped if conditional power is below a pre-defined futility threshold. An optimal value of the futility threshold can be found by computing the sensitivity and specificity rates associated with the futility stopping rule and then identifying the threshold that simultaneously maximizes both rates.
The following design parameters will be assumed in the trial:
A balanced design with 75 enrolled patients per trial arm will be utilized.
The patient dropout rate at the end of the treatment period is assumed to be 5%.
An early interim analysis with the information fraction of 30% will be conducted.
The calculations will be performed under the following set of treatment effect assumptions:
The control response rate is set to 35%.
The response rates in the three treatment arms are set to 45%, 50% and 55%.
Operating characteristics of the futility stopping rule (sensitivity and specificity rates) and an optimal futility threshold will be computed using the FutRule
function based on 1,000 simulation runs. A list of all trial design parameters (parameters
) needs to be set up as shown below and passed to this function. A detailed simulation report can be generated using the GenerateReport
function and a graphical user interface can be launched by calling the FutRuleApp
function.
No arguments
No return value
FutRule
, FutRuleExample1
, FutRuleExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, three treatments) parameters$sample_size = c(75, 75, 75, 75) # Dropout rate parameters$dropout_rate = 0.05 # Response rate in the control arm parameters$control_rate = 0.35 # Response rates in the treatment arms parameters$treatment_rate = c(0.45, 0.5, 0.55) # Information fraction parameters$info_frac = 0.3 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute characteristics of the futility stopping rule results = FutRule(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("FutRule Binary endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, three treatments) parameters$sample_size = c(75, 75, 75, 75) # Dropout rate parameters$dropout_rate = 0.05 # Response rate in the control arm parameters$control_rate = 0.35 # Response rates in the treatment arms parameters$treatment_rate = c(0.45, 0.5, 0.55) # Information fraction parameters$info_frac = 0.3 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute characteristics of the futility stopping rule results = FutRule(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("FutRule Binary endpoint.docx", fileext=".docx"))
Consider a Phase III trial with a time-to-event primary efficacy endpoint. A single regimen of an experimental treatment will be evaluated versus a control. A futility assessment will be conducted at an interim look using conditional power and the trial will be stopped for futility if conditional power in the single treatment arm is below a pre-defined futility threshold. An optimal value of the futility threshold can be found by computing the sensitivity and specificity rates associated with the futility stopping rule and then identifying the threshold that simultaneously maximizes both rates.
The following design parameters will be assumed in the trial:
A balanced design with 125 enrolled patients per trial arm will be used.
The target number of events at the final analysis is 175.
The annual patient dropout rate is equal to 5% (the time to patient dropout is assumed to follow an exponential distribution).
The length of the patient enrollment period is 12 months and the median enrollment time is expected to be 9 months.
A late interim analysis with the information fraction of 60% will be conducted.
The calculations will be performed assuming the median event times of 7.5 months and 10.5 months in the control and treatment arms, respectively.
Operating characteristics of the futility stopping rule (sensitivity and specificity rates) and an optimal futility threshold will be computed using the FutRule
function based on 1,000 simulation runs. A list of all trial design parameters (parameters
) needs to be set up as shown below and passed to this function. A detailed simulation report can be generated using the GenerateReport
function and a graphical user interface can be launched by calling the FutRuleApp
function.
No arguments
No return value
FutRule
, FutRuleExample1
, FutRuleExample2
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(125, 125) # Target event count at the final analysis parameters$event_count = 175 # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median time in the control arm parameters$control_time = 7.5 # Median time in the treatment arm parameters$treatment_time = 10.5 # Information fraction parameters$info_frac = 0.6 # Enrollment period parameters$enrollment_period = 12 # Median enrollment time parameters$enrollment_parameter = 9 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute characteristics of the futility stopping rule results = FutRule(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("FutRule Time-to-event endpoint.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Time-to-event" # Direction of favorable outcome parameters$direction = "Higher" # Number of enrolled patients (control, treatment) parameters$sample_size = c(125, 125) # Target event count at the final analysis parameters$event_count = 175 # Annual patient dropout rate parameters$dropout_rate = 0.05 # Median time in the control arm parameters$control_time = 7.5 # Median time in the treatment arm parameters$treatment_time = 10.5 # Information fraction parameters$info_frac = 0.6 # Enrollment period parameters$enrollment_period = 12 # Median enrollment time parameters$enrollment_parameter = 9 # One-sided alpha level parameters$alpha = 0.025 # Number of simulations, you should prefer more parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Remove this parameter in your code: parameters$withoutCharts = TRUE # Run simulations to compute characteristics of the futility stopping rule results = FutRule(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("FutRule Time-to-event endpoint.docx", fileext=".docx"))
This function creates a detailed simulation report in a Microsoft Word format. For examples of the function call, see ADSSModExample1, ADTreatSelExample1, ADPopSelExample1, FutRuleExample1, EventPredExample and ADRandExample.
GenerateReport(results, report_filename)
GenerateReport(results, report_filename)
results |
Object created by a simulation function, e.g., |
report_filename |
Character value defining the report's filename. The report is saved in the current working directory. |
No return value, called for side effects
This function supports power calculations for a broad class of Phase III clinical trials with multiple objectives, including
Trials with a single source of multiplicity, i.e., trials with a single endpoint and several dose-control comparisons, or two-arm trials with several endpoints.
Trials with several sources of multiplicity, i.e., trials with several endpoints and several dose-placebo comparisons.
A fixed-sample design is assumed in this setting. Most commonly used multiplicity adjustments are supported for trials with a single source of multiplicity. In addition, global testing procedures can be applied in two-arm trials with several endpoints. Popular gatekeeping procedures are supported in the advanced multiplicity problems with several sources. For examples of the function call, see MultAdjExample1, MultAdjExample2 or MultAdjExample3.
MultAdj(parameters)
MultAdj(parameters)
parameters |
List of the trial design and other parameters. The required elements are defined below:
|
The function returns an object of class ‘MultAdjResults’. This object is a list with the following components:
parameters |
List containing the user-specified parameters. |
sim_results |
Data frame containing the raw and adjusted p-values generated by the hypothesis tests for each simulation run. The first set of n columns correspond to the raw p-values for the n null hypotheses and the next set of n columns correspond to the adjusted p-values for the n null hypotheses. |
sim_summary |
List containing the power calculation results for the specified multiple testing procedure, global testing procedure or gatekeeping procedure. |
A detailed summary of the simulation results can be created using the GenerateReport
function.
MultAdjApp
, MultAdjExample1
, MultAdjExample2
, MultAdjExample3
This function creates a web application with a Shiny-based graphical user interface to perform power calculations in traditional trials with multiple objectives. The application supports the same functionality as the MultAdj
function. For an example of the function call, see MultAdjExample1.
MultAdjApp()
MultAdjApp()
No arguments
No return value, called for side effects
MultAdj
, MultAdj
, MultAdjExample2
, MultAdjExample3
Consider a Phase III trial in patients with rheumatoid arthritis that will be conducted to investigate the efficacy and safety of three doses of an experimental treatment versus placebo. The three doses will be labeled as the low, medium and high doses. The primary efficacy endpoint is a binary endpoint based on the American College of Rheumatology response criteria (ACR50). The endpoint represents the proportion of patients who experience a symptomatic improvement after 26 weeks of treatment and thus a higher value of the endpoint indicates a beneficial effect.
A multiplicity adjustment will be applied to address Type I error rate inflation cased by the evaluation of three dose-placebo comparisons. The adjustment will rely on the fixed-sequence procedure with the following sequence of dose-placebo comparisons:
High dose versus placebo.
Medium dose versus placebo.
Low dose versus placebo.
Each comparison in this sequence will be evaluated at a one-sided alpha of 0.025 (provided the preceding comparison was significant) to control the overall Type I error rate at a one-sided 2.5% level.
The following design parameters will be used in this example:
A total of 440 patients will be enrolled in the trial and randomly assigned to placebo and three doses of the experimental treatment using an equal randomization approach.
The patient dropout rate at the end of the 26-week treatment period is expected be 20%.
Power calculations will be performed in this trial using the MultAdj
function. A list of all design and multiplicity adjustment parameters (parameters
) needs to be created and then passed to this function. A simulation report can be created by calling the GenerateReport
function. Power calculations can also be performed in this trial using a Shiny-based application with a graphical user interface that can be launched by calling the MultAdjApp
function.
No arguments
No return value
MultAdjApp
, MultAdj
, MultAdjExample2
, MultAdjExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of beneficial effect parameters$direction = "Higher" # Number of dose-placebo comparisons parameters$n_comparisons = 3 # Number of endpoints parameters$n_endpoints = 1 # Number of enrolled patients (placebo, low dose, medium dose and high dose) parameters$sample_size = c(110, 110, 110, 110) # Patient dropout rate parameters$dropout_rate = 0.2 # Endpoint information parameters$control_rate = 0.3 parameters$treatment_rate = c(0.5, 0.55, 0.6) # Multiple testing procedure parameters$mult_test = "Fixed-sequence" # Hypothesis testing sequence (the null hypotheses of no effect will be # tested in the following sequence: H3 [high dose versus placebo], H2 [medium dose # versus placebo] and H1 [low dose versus placebo]) parameters$sequence = c(3, 2, 1) # Overall one-sided Type I error rate parameters$alpha = 0.025 # Number of simulations parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to perform power calculations results = MultAdj(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("MultAdj Multiple dose-placebo comparisons.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Binary" # Direction of beneficial effect parameters$direction = "Higher" # Number of dose-placebo comparisons parameters$n_comparisons = 3 # Number of endpoints parameters$n_endpoints = 1 # Number of enrolled patients (placebo, low dose, medium dose and high dose) parameters$sample_size = c(110, 110, 110, 110) # Patient dropout rate parameters$dropout_rate = 0.2 # Endpoint information parameters$control_rate = 0.3 parameters$treatment_rate = c(0.5, 0.55, 0.6) # Multiple testing procedure parameters$mult_test = "Fixed-sequence" # Hypothesis testing sequence (the null hypotheses of no effect will be # tested in the following sequence: H3 [high dose versus placebo], H2 [medium dose # versus placebo] and H1 [low dose versus placebo]) parameters$sequence = c(3, 2, 1) # Overall one-sided Type I error rate parameters$alpha = 0.025 # Number of simulations parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to perform power calculations results = MultAdj(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("MultAdj Multiple dose-placebo comparisons.docx", fileext=".docx"))
Consider a Phase III trial for the treatment of agitation in patients with dementia. A single dose of an experimental treatment will be compared to placebo in this trial. The efficacy profile of the experimental treatment will be assessed using three primary endpoints, namely, three components of the Cohen-Mansfield Agitation Inventory, Community version (CMAI-C) rating scale:
Aggressive behavior.
Non-aggressive agitated behavior.
Verbally agitated behavior.
Changes in the individual endpoints will be assessed at Day 28. Each endpoint is normally distributed and, since higher scores on this rating scale indicate more severe symptoms, a lower value of each endpoint corresponds to a beneficial effect. The endpoints are assumed to be equally correlated with a common correlation coefficient of 0.4.
An important feature of this trial is that the trial will meet its primary objective if at least one endpoint test is significant. As a result, the overall Type I error rate will be inflated if the primary analysis is performed without a multiplicity adjustment. To preserve the overall Type I error rate at a one-sided 2.5% level, the Holm procedure will be applied. The three endpoints are considered to be equally important and, by default, equal weights will be assigned to the endpoint-specific null hypotheses of no treatment effect.
The following design parameters will be used in this example:
A total of 380 patients will be enrolled in the trial to be assigned to either placebo or experimental treatment using a 1:1 ratio.
The patient dropout rate at the end of the treatment period is expected be 5%.
The MultAdj
function will be invoked to run power calculations in this trial. A list of all design and multiplicity adjustment parameters (parameters
) will be created and passed to this function. A simulation report will be created by calling the GenerateReport
function. Power calculations can also be performed in this trial using a Shiny-based application that can be launched by calling the MultAdjApp
function.
No arguments
No return value
MultAdjApp
, MultAdj
, MultAdjExample1
, MultAdjExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of beneficial effect parameters$direction = "Lower" # Number of dose-placebo comparisons parameters$n_comparisons = 1 # Number of endpoints parameters$n_endpoints = 3 # Number of enrolled patients (placebo, experimental treatment) parameters$sample_size = c(190, 190) # Patient dropout rate parameters$dropout_rate = 0.05 parameters$control_mean = c(0, 0, 0) parameters$treatment_mean = c(-0.3, -0.3, -0.3) parameters$control_sd = c(1, 1, 1) parameters$treatment_sd = c(1, 1, 1) # Endpoint correlation matrix parameters$endpoint_correlation = matrix(c(1, 0.4, 0.4, 0.4, 1, 0.4, 0.4, 0.4, 1), 3, 3) # Multiple testing procedure parameters$mult_test = "Holm" # Overall one-sided Type I error rate parameters$alpha = 0.025 # Number of simulations parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to perform power calculations results = MultAdj(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("MultAdj Multiple endpoints.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of beneficial effect parameters$direction = "Lower" # Number of dose-placebo comparisons parameters$n_comparisons = 1 # Number of endpoints parameters$n_endpoints = 3 # Number of enrolled patients (placebo, experimental treatment) parameters$sample_size = c(190, 190) # Patient dropout rate parameters$dropout_rate = 0.05 parameters$control_mean = c(0, 0, 0) parameters$treatment_mean = c(-0.3, -0.3, -0.3) parameters$control_sd = c(1, 1, 1) parameters$treatment_sd = c(1, 1, 1) # Endpoint correlation matrix parameters$endpoint_correlation = matrix(c(1, 0.4, 0.4, 0.4, 1, 0.4, 0.4, 0.4, 1), 3, 3) # Multiple testing procedure parameters$mult_test = "Holm" # Overall one-sided Type I error rate parameters$alpha = 0.025 # Number of simulations parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to perform power calculations results = MultAdj(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("MultAdj Multiple endpoints.docx", fileext=".docx"))
The advanced setting with several sources of multiplicity, i.e., multiplicity induced by the analysis of multiple endpoints as well as multiple dose-placebo comparisons, will be illustrated using a Phase III trial for the treatment of acute schizophrenia. The efficacy profiles of two doses of an experimental treatment (Dose L and Dose H) will be compared to that of placebo using the following two endpoints:
Primary endpoint: Change in the Positive and Negative Syndrome Scale (PANSS) total score.
Key secondary endpoint: Change in the Clinical Global Impressions severity (CGI-S) score.
The efficacy evaluations will be performed at the end of the 4-week treatment period. Both endpoints are normally distributed and a lower value of each endpoint indicates a more favorable outcome. The correlation between the endpoint-specific test statistics is assumed to be 0.5.
The resulting four null hypotheses of no effect will be grouped into two endpoint-specific families:
Family 1: H1 (No difference between Dose L and placebo on the primary endpoint) and H2 (No difference between Dose H and placebo on the primary endpoint).
Family 2: H3 (No difference between Dose L and placebo on the key secondary endpoint) and H4 (No difference between Dose H and placebo on the key secondary endpoint).
Clinically relevant logical restrictions will be imposed on the testing strategy to ensure that H3 can be tested only if H1 is rejected and H4 can be tested only if H2 is rejected.
The Hochberg-based gatekeeping procedure will be utilized in this trial to control the overall Type I error rate at a one-sided 2.5% level across the four hypotheses of interest. This gatekeeping procedure will be set up using Hochberg-based component procedures, i.e., a truncated version of the Hochberg procedure with the truncation parameter of 0.8 will be applied in Family 1 and the regular Hochberg procedure in Family 2. The modified mixture method will be used in this gatekeeping procedure.
The following design parameters will be used in this example:
A total of 360 patients will be enrolled in the trial. The patients will be allocated to the three trial arms using a 1:1:1 randomization scheme.
The patient dropout rate at the end of the 4-week treatment period is expected be 10%.
To compute power for the individual hypotheses as well as each of the two families, the design parameters as well as the parameters of the selected gatekeeping procedure (parameters
) will passed to the MultAdj
function. A simulation report will be created by calling the GenerateReport
function. Power calculations can also be performed in this trial using a Shiny-based application, which can be launched by calling the MultAdjApp
function.
No arguments
No return value
MultAdjApp
, MultAdj
, MultAdjExample2
, MultAdjExample3
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of beneficial effect parameters$direction = "Lower" # Number of dose-placebo comparisons parameters$n_comparisons = 2 # Number of endpoints parameters$n_endpoints = 2 # Number of enrolled patients (placebo, Dose L and Dose H) parameters$sample_size = c(120, 120, 120) # Patient dropout rate parameters$dropout_rate = 0.10 # Endpoint information (rows corresponds to endpoints and # columns corresponds to dose-placebo comparisons) parameters$control_mean = c(0, 0) parameters$treatment_mean = matrix(c(-0.30, -0.35, -0.35, -0.40), 2, 2, byrow = TRUE) parameters$control_sd = c(1, 1) parameters$treatment_sd = matrix(c(1, 1, 1, 1), 2, 2, byrow = TRUE) # Endpoint correlation matrix parameters$endpoint_correlation = matrix(c(1, 0.5, 0.5, 1), 2, 2) # Component procedure to be used in the gatekeeping procedure parameters$mult_test = "Hochberg" # Mixture method used in the gatekeeping procedure parameters$mult_method = "Modified" # Truncation parameters in the gatekeeping procedure parameters$mult_test_gamma = c(0.8, 1) # Overall one-sided Type I error rate parameters$alpha = 0.025 # Number of simulations parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to perform power calculations results = MultAdj(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("MultAdj Multiple endpoints and dose-placebo comparisons.docx", fileext=".docx"))
# List of all parameters parameters = list() # Endpoint type parameters$endpoint_type = "Normal" # Direction of beneficial effect parameters$direction = "Lower" # Number of dose-placebo comparisons parameters$n_comparisons = 2 # Number of endpoints parameters$n_endpoints = 2 # Number of enrolled patients (placebo, Dose L and Dose H) parameters$sample_size = c(120, 120, 120) # Patient dropout rate parameters$dropout_rate = 0.10 # Endpoint information (rows corresponds to endpoints and # columns corresponds to dose-placebo comparisons) parameters$control_mean = c(0, 0) parameters$treatment_mean = matrix(c(-0.30, -0.35, -0.35, -0.40), 2, 2, byrow = TRUE) parameters$control_sd = c(1, 1) parameters$treatment_sd = matrix(c(1, 1, 1, 1), 2, 2, byrow = TRUE) # Endpoint correlation matrix parameters$endpoint_correlation = matrix(c(1, 0.5, 0.5, 1), 2, 2) # Component procedure to be used in the gatekeeping procedure parameters$mult_test = "Hochberg" # Mixture method used in the gatekeeping procedure parameters$mult_method = "Modified" # Truncation parameters in the gatekeeping procedure parameters$mult_test_gamma = c(0.8, 1) # Overall one-sided Type I error rate parameters$alpha = 0.025 # Number of simulations parameters$nsims = 100 # Number of cores for parallel calculations parameters$ncores = 1 # Run simulations to perform power calculations results = MultAdj(parameters) # Generate a simulation report (remove tempfile) GenerateReport(results, tempfile("MultAdj Multiple endpoints and dose-placebo comparisons.docx", fileext=".docx"))