Title: | Simulation-Based Design and Analysis of Dose-Finding Trials |
---|---|
Description: | An efficient implementation of the MCPMod (Multiple Comparisons and Modeling) method to support a simulation-based design and analysis of dose-finding trials with normally distributed, binary and count endpoints (Bretz et al. (2005) <doi:10.1111/j.1541-0420.2005.00344.x>). |
Authors: | Alex Dmitrienko [aut, cre], Alun Bedding [ctb], John Cook [ctb] |
Maintainer: | Alex Dmitrienko <[email protected]> |
License: | GPL-3 |
Version: | 0.5 |
Built: | 2025-03-12 04:47:38 UTC |
Source: | https://github.com/medianasoft/mcpmodpack |
The MCPModPack package facilitates the design and analysis of dose-finding clinical trials with normally distributed, binary and count endpoints using the MCPMod methodology.
Package: | MCPModPack |
Type: | Package |
Version: | 0.3 |
Date: | 2020-08-01 |
License: | GPL-3 |
Key functions included in the package:
MCPModAnalysis
: Analyze data from a dose-finding trial using MCPMod.
AnalysisReport
: Generate a detailed summary of MCPMod analysis results in a Microsoft Word format.
AnalysisApp
: Launch a Shiny-based graphical user interface to analyze data from a dose-finding trial.
MCPModSimulation
: Perform a simulation-based evaluation of dose-finding trial designs using MCPMod.
SimulationReport
: Generate a detailed summary of MCPMod simulation results in a Microsoft Word format.
SimulationApp
: Launch a Shiny-based graphical user interface to perform a simulation-based evaluation of dose-finding trial designs.
The package comes with three example data sets:
normal
: Data set based on a dose-finding trial with a normally distributed endpoint.
binary
: Data set based on a dose-finding trial with a binary endpoint.
count
: Data set based on a dose-finding trial with a count endpoint.
Alex Dmitrienko <[email protected]>
Bornkamp, B., Bezlyak, V., Bretz, F. (2015). Implementing the MCP-Mod procedure for dose-response testing and estimation. Modern Approaches to Clinical Trials Using SAS. Menon, S., Zink, R. (editors). SAS Press: Cary, NC.
Bretz, F., Pinheiro, J.C., Branson, M. (2005). Combining multiple comparisons and modeling techniques in dose response studies. Biometrics. 61, 738-748.
Bretz, F., Tamhane, A.C., Pinheiro, J. (2009). Multiple testing in dose response problems. Multiple Testing Problems in Pharmaceutical Statistics. Dmitrienko, A., Tamhane, A.C., Bretz, F. (editors). New York: Chapman and Hall/CRC Press.
Nandakumar, S., Dmitrienko, A., Lipkovich, I. (2017). Dose-finding methods. Analysis of Clinical Trials Using SAS: A Practical Guide (Second Edition). Dmitrienko, A., Koch, G.G. (editors). SAS Press: Cary, NC.
Pinheiro, J. C., Bornkamp, B., Bretz, F. (2006). Design and analysis of dose finding studies combining multiple comparisons and modeling procedures. Journal of Biopharmaceutical Statistics. 16, 639-656.
Pinheiro J., Bornkamp B., Glimm E., Bretz F. (2013). Model-based dose finding under model uncertainty using general parametric models. Statistics in Medicine. 33, 1646-1661.
# MCPMod-based analysis of a dose-finding trial with a normally distributed endpoint # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.5 # Perform an MCPMod-based analysis of the trial's data # The data set normal is included in the package results = MCPModAnalysis(endpoint_type = "Normal", models = models, dose = normal$dose, resp = normal$resp, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta) # Simple summary of the MCPMod analysis results results # Detailed summary of the MCPMod analysis results (remove tempfile) AnalysisReport(results, "MCPMod analysis summary (Normally distributed endpoint)", tempfile("MCPMod analysis summary (Normally distributed endpoint).docx", fileext=".docx"))
# MCPMod-based analysis of a dose-finding trial with a normally distributed endpoint # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.5 # Perform an MCPMod-based analysis of the trial's data # The data set normal is included in the package results = MCPModAnalysis(endpoint_type = "Normal", models = models, dose = normal$dose, resp = normal$resp, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta) # Simple summary of the MCPMod analysis results results # Detailed summary of the MCPMod analysis results (remove tempfile) AnalysisReport(results, "MCPMod analysis summary (Normally distributed endpoint)", tempfile("MCPMod analysis summary (Normally distributed endpoint).docx", fileext=".docx"))
This function creates a Shiny-based graphical user interface to perform MCPMod-based analysis of a dose-finding trial. The application requires data sets with the dose and response information (comma-separated value file). The data set is required to include the dose
and resp
variables with a single record per patient. The first row of the file should contain the required variable names as follows: "dose","resp" (including the quotation marks and the comma). Subsequent rows should contain comma-separated values corresponding to the dose and response values for each patient (quotation marks are not required for the rows of data). See for example the normal
data set.
AnalysisApp()
AnalysisApp()
Alex Dmitrienko <[email protected]>
MCPModAnalysis
, AnalysisReport
This function creates a detailed summary of MCPMod analysis results in a Microsoft Word format.
AnalysisReport(results, report_title, report_filename)
AnalysisReport(results, report_title, report_filename)
results |
Object of class ‘MCPModAnalysisResults’ created by the |
report_title |
Character value defining the report's title. |
report_filename |
Character value defining the report's filename. The report is saved in the current working directory. |
Alex Dmitrienko <[email protected]>
MCPModAnalysis
, SimulationReport
# MCPMod-based analysis of a dose-finding trial with a # binary endpoint # Endpoint type endpoint_type = "Binary" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.3 # Perform an MCPMod-based analysis of the trial's data # The data set binary is included in the package results = MCPModAnalysis(endpoint_type = endpoint_type, models = models, dose = binary$dose, resp = binary$resp, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta) # Simple summary of the MCPMod analysis results results # Detailed summary of the MCPMod analysis results (remove tempfile) AnalysisReport(results, "MCPMod analysis summary (Binary endpoint)", tempfile("MCPMod analysis summary (Binary endpoint).docx", fileext=".docx"))
# MCPMod-based analysis of a dose-finding trial with a # binary endpoint # Endpoint type endpoint_type = "Binary" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.3 # Perform an MCPMod-based analysis of the trial's data # The data set binary is included in the package results = MCPModAnalysis(endpoint_type = endpoint_type, models = models, dose = binary$dose, resp = binary$resp, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta) # Simple summary of the MCPMod analysis results results # Detailed summary of the MCPMod analysis results (remove tempfile) AnalysisReport(results, "MCPMod analysis summary (Binary endpoint)", tempfile("MCPMod analysis summary (Binary endpoint).docx", fileext=".docx"))
Example data set based on a trial with a binary primary endpoint.
data(binary)
data(binary)
A data set with 100 observations and 2 variables:
dose
Dose level (0 g, 0.05 g, 0.2 g, 0.6 g and 1 g).
resp
Binary outcome variable (0 or 1). The value of 1 indicates a beneficial outcome.
Example data set based on a trial with a count primary endpoint.
data(count)
data(count)
A data set with 100 observations and 2 variables:
dose
Dose level (0 g, 0.05 g, 0.2 g, 0.6 g and 1 g).
resp
Count-type outcome variable (number of events for each patient). A higher value of this variable indicates a beneficial outcome.
This function implements the MCPMod-based analysis of dose-finding clinical trials with normally distributed, binary and count endpoints, including derivation of the optimal contrasts for the candidate dose-response models, evaluation of dose-response tests based on the optimal contrasts, selection of the significant dose-response models and estimation of the target dose. For more information, see the technical manual in the package's doc
folder.
MCPModAnalysis(endpoint_type, models, dose, resp, alpha, direction, model_selection, Delta, theta)
MCPModAnalysis(endpoint_type, models, dose, resp, alpha, direction, model_selection, Delta, theta)
endpoint_type |
Character value defining the primary endpoint's type. Possible values:
|
models |
List of candidate dose-response models with initial values of the non-linear model parameters. The package supports the following dose-response models: linear, quadratic, exponential, Emax, logistic and sigEmax. No initial value is required for the linear model, a single initial value is required for the quadratic, exponential and Emax models, and two initial values are required for the logistic and sigEmax models. |
dose , resp
|
Numeric vectors of equal length specifying the dose and response values. |
alpha |
Numeric value defining the one-sided significance level (default value is 0.025). |
direction |
Character value defining the direction of the dose-response relationship. Possible values:
|
model_selection |
Character value defining the criterion for selecting the best dose-response model. Possible values:
|
Delta |
Numeric value specifying the treatment effect for identifying the target dose. The treatment effect is defined relative to the placebo effect. A positive value is required if |
theta |
Numeric vector defining the overdispersion parameter in each trial arm (required only with count-type primary endpoints). |
The function returns an object of class ‘MCPModAnalysisResults’. This object is a list with the following components:
input_parameters |
a list containing the user-specified parameters, e.g, endpoint type, model selection criteria, etc. |
selected_models |
a logical vector defining the candidate dose-response models. |
descriptive_statistics |
a list containing the descriptive statistics computed from the trial's data set. |
contrast_results |
a list containing the contrast evaluation results for the candidate dose-response models, e.g., the model-specific optimal dose-response contrasts and contrast correlation matrix. |
mcp_results |
a list containing the multiplicity adjustment results for the candidate dose-response models, e.g., the model-specific test statistics and adjusted p-values. |
mod_results |
a list containing the modeling results for the candidate dose-response models, e.g., estimated model parameters, target dose estimate. |
A detailed summary of the MCPMod analysis results can be generated using the AnalysisReport function.
Alex Dmitrienko <[email protected]>
# MCPMod-based analysis of a dose-finding trial with a binary endpoint # Endpoint type endpoint_type = "Binary" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.3 # Perform an MCPMod-based analysis of the trial's data # The data set binary is included in the package results = MCPModAnalysis(endpoint_type = endpoint_type, models = models, dose = binary$dose, resp = binary$resp, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta) # Simple summary of the MCPMod analysis results results # Detailed summary of the MCPMod analysis results (remove tempfile) AnalysisReport(results, "MCPMod analysis summary (Binary endpoint)", tempfile("MCPMod analysis summary (Binary endpoint).docx", fileext=".docx"))
# MCPMod-based analysis of a dose-finding trial with a binary endpoint # Endpoint type endpoint_type = "Binary" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.3 # Perform an MCPMod-based analysis of the trial's data # The data set binary is included in the package results = MCPModAnalysis(endpoint_type = endpoint_type, models = models, dose = binary$dose, resp = binary$resp, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta) # Simple summary of the MCPMod analysis results results # Detailed summary of the MCPMod analysis results (remove tempfile) AnalysisReport(results, "MCPMod analysis summary (Binary endpoint)", tempfile("MCPMod analysis summary (Binary endpoint).docx", fileext=".docx"))
This function implements the simulation-based analysis of dose-finding clinical trials with normally distributed, binary and count endpoints using the MCPMod methodology. For more information, see the technical manual in the package's doc
folder.
MCPModSimulation(endpoint_type, models, alpha, direction, model_selection, Delta, theta, sim_models, sim_parameters)
MCPModSimulation(endpoint_type, models, alpha, direction, model_selection, Delta, theta, sim_models, sim_parameters)
endpoint_type |
Character value defining the primary endpoint's type. Possible values:
|
models |
List of candidate dose-response models with initial values of the non-linear model parameters. The package supports the following dose-response models: linear, quadratic, exponential, emax, logistic and sigemax. No initial value is required for the linear model, a single initial value is required for the quadratic, exponential and Emax models, and two initial values are required for the logistic and sigEmax models. |
alpha |
Numeric value defining the one-sided significance level (default value is 0.025). |
direction |
Character value defining the direction of the dose-response relationship. Possible values:
|
model_selection |
Character value defining the criterion for selecting the best dose-response model. Possible values:
|
Delta |
Numeric value specifying the treatment effect for identifying the target dose. The treatment effect is defined relative to the placebo effect. A positive value is required if |
theta |
Numeric vector defining the overdispersion parameter in each trial arm (required only with count-type primary endpoints). |
sim_models |
List defining the assumed dose-response model and initial values of the non-linear parameters in the simulated trial. The package supports the following dose-response models: linear, quadratic, exponential, Emax, logistic and sigEmax. No initial value is required for the linear model, a single initial value is required for the quadratic, exponential and Emax models, and two initial values are required for the logistic and sigEmax models. The following components are required:
|
sim_parameters |
List defining the design and simulation parameters in the simulated trial. The following components are required:
|
The function returns an object of class ‘MCPModSimulationResults’. This object is a list with the following components:
input_parameters |
a list containing the user-specified parameters, e.g, endpoint type, model selection criteria, etc. |
selected_models |
a logical vector defining the candidate dose-response models. |
sim_results |
a list containing the simulation results based on the assumed dose-response model, e.g., power, target dose estimates, etc. |
A detailed summary of the simulation results can be generated using the SimulationReport function.
Alex Dmitrienko <[email protected]>
# Simulation-based evaluation of dose-finding trials with a count endpoint # Endpoint type endpoint_type = "Count" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 2 # Vector of overdispersion parameters theta = c(2, 2, 2, 2, 2) # Select the assumed dose-response model and values of the non-linear model parameters sim_models = list(emax = 1, placebo_effect = 3, max_effect = seq(from = 0, to = 3, by = 1)) # Simulation parameters # (go threshold is defined relative to the placebo effect) sim_parameters = list(n = c(50, 50, 50, 50, 50), doses = c(0, 0.05, 0.2, 0.6, 1), dropout_rate = 0.05, nsims = 1000, go_threshold = 2) # Perform an MCPMod-based simulation results = MCPModSimulation(endpoint_type = endpoint_type, models = models, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta, theta = theta, sim_models = sim_models, sim_parameters = sim_parameters) # Simple summary of the MCPMod simulation results results # Detailed summary of the MCPMod simulation results (remove tempfile) SimulationReport(results, "MCPMod simulation summary (Count endpoint)", tempfile("MCPMod simulation summary (Count endpoint).docx", fileext=".docx"))
# Simulation-based evaluation of dose-finding trials with a count endpoint # Endpoint type endpoint_type = "Count" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 2 # Vector of overdispersion parameters theta = c(2, 2, 2, 2, 2) # Select the assumed dose-response model and values of the non-linear model parameters sim_models = list(emax = 1, placebo_effect = 3, max_effect = seq(from = 0, to = 3, by = 1)) # Simulation parameters # (go threshold is defined relative to the placebo effect) sim_parameters = list(n = c(50, 50, 50, 50, 50), doses = c(0, 0.05, 0.2, 0.6, 1), dropout_rate = 0.05, nsims = 1000, go_threshold = 2) # Perform an MCPMod-based simulation results = MCPModSimulation(endpoint_type = endpoint_type, models = models, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta, theta = theta, sim_models = sim_models, sim_parameters = sim_parameters) # Simple summary of the MCPMod simulation results results # Detailed summary of the MCPMod simulation results (remove tempfile) SimulationReport(results, "MCPMod simulation summary (Count endpoint)", tempfile("MCPMod simulation summary (Count endpoint).docx", fileext=".docx"))
Example data set based on a trial with a continuous (normally distributed) primary endpoint.
data(normal)
data(normal)
A data set with 100 observations and 2 variables:
dose
Dose level (0 g, 0.05 g, 0.2 g, 0.6 g and 1 g).
resp
Continuous outcome variable. A higher value of this variable indicates a beneficial outcome.
This function creates a Shiny-based graphical user interface to perform a simulation-based evaluation of dose-finding trial designs using MCPMod.
SimulationApp()
SimulationApp()
Alex Dmitrienko <[email protected]>
MCPModSimulation
, SimulationReport
This function creates a detailed summary of MCPMod simulation results in a Microsoft Word format.
SimulationReport(results, report_title, report_filename)
SimulationReport(results, report_title, report_filename)
results |
Object of class ‘MCPModSimulationResults’ created by the |
report_title |
Character value defining the report's title. |
report_filename |
Character value defining the report's filename. The report is saved in the current working directory. |
Alex Dmitrienko <[email protected]>
MCPModSimulation
, AnalysisReport
# Simulation-based evaluation of dose-finding trials with a binary endpoint # Endpoint type endpoint_type = "Binary" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.3 # Select the assumed dose-response model and values of the non-linear model parameters sim_models = list(linear = NA, placebo_effect = 0.2, max_effect = seq(from = 0, to = 0.5, by = 0.1)) # Simulation parameters sim_parameters = list(n = rep(40, 5), doses = c(0, 0.05, 0.2, 0.6, 1), dropout_rate = 0.05, nsims = 1000, go_threshold = 0.3) # Perform an MCPMod-based simulation results = MCPModSimulation(endpoint_type = endpoint_type, models = models, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta, sim_models = sim_models, sim_parameters = sim_parameters) # Simple summary of the MCPMod simulation results results # Detailed summary of the MCPMod simulation results (remove tempfile) SimulationReport(results, "MCPMod simulation summary (Binary endpoint)", tempfile("MCPMod simulation summary (Binary endpoint).docx", fileext=".docx"))
# Simulation-based evaluation of dose-finding trials with a binary endpoint # Endpoint type endpoint_type = "Binary" # Select the candidate dose-response models and initial values # of the non-linear model parameters (linear, quadratic, exponential, # emax, logistic and sigemax) models = list(linear = NA, quadratic = -0.5, exponential = 0.3, emax = 0.3, logistic = c(0.5, 0.1), sigemax = c(0.5, 5)) # One-sided Type I error rate alpha = 0.025 # Direction of the dose-response relationship direction = "increasing" # Model selection criterion model_selection = "AIC" # The treatment effect for identifying the target dose # (this effect is defined relative to the placebo effect) Delta = 0.3 # Select the assumed dose-response model and values of the non-linear model parameters sim_models = list(linear = NA, placebo_effect = 0.2, max_effect = seq(from = 0, to = 0.5, by = 0.1)) # Simulation parameters sim_parameters = list(n = rep(40, 5), doses = c(0, 0.05, 0.2, 0.6, 1), dropout_rate = 0.05, nsims = 1000, go_threshold = 0.3) # Perform an MCPMod-based simulation results = MCPModSimulation(endpoint_type = endpoint_type, models = models, alpha = alpha, direction = direction, model_selection = model_selection, Delta = Delta, sim_models = sim_models, sim_parameters = sim_parameters) # Simple summary of the MCPMod simulation results results # Detailed summary of the MCPMod simulation results (remove tempfile) SimulationReport(results, "MCPMod simulation summary (Binary endpoint)", tempfile("MCPMod simulation summary (Binary endpoint).docx", fileext=".docx"))