This case study builds on Case Study 2 by adding a new method for simulating patient outcomes. It covers a simple case with one ISA and no interim analysis (IA) and provides an example of how to add a new approach for simulating patient outcomes. This package is designed with the intention that others can add new functionality as needed through the use of S3 classes.

The ability to simulate from a MVN with a covariate has been included since Case Study 3 was originally developed. Thus, for Case Study 3 we name the new outcome MVNWithCovariateCS3 but please note this code was largely copied from MVNWithCovariate in the base package.

The R code may be found in the Examples/CaseStudy3

Assumptions

Trial Design Elements

  • Platform trial with 1 ISA
  • No Interim analysis
  • Final Analysis (FA) when all patients have the outcome observed.
  • 30 patients on control (C) 60 patients on treatment (T)
  • Primary outcome is repeated measure evaluated at baseline, 4, 8, 12, 16, 20 and 24 weeks after treatment
  • Analyze difference from baseline to week 24 compared to control using a Bayesian AR(1) model.
  • Minimum Acceptable Value MAV = 0.5 difference between control and treatment
    • This is the minimum difference between treatment and control \[ ( \mu_{24} - \mu_0 )_{C} – (\mu_{24} - m_0 )_{T}\]
  • Decision Rules
    • Define \(\delta_C = ( \mu_{24} - \mu_0 )_{C}\) and \(\delta_T = (\mu_{24} - m_0 )_{T}\)
    • If \(\rho = Pr( \delta_C - \delta_T\) > MAV | data ) \(> P_U = 0.8\) then make a “Go” decision
    • If Pr( \(\delta_C - \delta_T\) > MAV | data ) \(< P_L = 0.1\) then make a “No Go” decision
    • Otherwise the decision is indeterminate

If the goal at the end of the study is to make a decision of Go or No Go, then \(P_U = P_L\).

In the context of this case study, patient outcomes are not expected to change over the 24 weeks for the control treatment, where as the treatment is expected to decrease the values of the patient outcomes. Thus, \(\delta_C - \delta_T\) is expected to be greater than 0 for effective treatments and consequently, high values for \(\rho\) indicate an effective treatment.

The function SetupTrialDesign() is located in TrialDesign.R and the function is called to build the trial object from the BuildMe.R file in this example.

Simulation Design Elements

The simulation object contains all information to specify how the trial is simulated. Specifically, it contains a list of scenarios, such as the null and alternative, details about patient accrual rates and in a multiple ISA setting information about how and when the second and subsequent ISAs are added to the trial.

For case study 3, the data for each patient is simulated from a multi-variate normal with a binary covariate. The patient covariate is specified as a responder or non-responder and the outcome value over time is simulated from a MVN with a separate mean vector specified for responders and non-responders. Based on the historical data we have the following means for responders and non-responders shown below is used to specify various scenarios in the simulation study, more detail provided below.

Table 1 - True Means

True Means
Baseline Week 4 Week 8 Week 12 Week 16 Week 20 Week 24
Non-responders 3.5 3.5 3.5 3.5 3.5 3.5 3.5
Responders 3.5 3.4 3.0 2.5 2.9 1.4 0.9

In addition, the estimates of the variance/covariance over time is

Table 2 - Variance/Covariance Matrix

\[V = \begin{bmatrix}0.5&0.4&0.4&0.4&0.4&0.4&0.4 \\0.4&0.5&0.4&0.4&0.4&0.4&0.4 \\0.4&0.4&0.5&0.4&0.4&0.4&0.4 \\0.4&0.4&0.4&0.5&0.4&0.4&0.4 \\0.4&0.4&0.4&0.4&0.5&0.4&0.4 \\0.4&0.4&0.4&0.4&0.4&0.5&0.4 \\0.4&0.4&0.4&0.4&0.4&0.4&0.5 \\\end{bmatrix}\]

In general, the responders and non-responders could have different var-cov matrix but for simplicity in this case study they are assumed to be the same.

The trial recruitment is specified in terms of the number of patients accrued per month per site (patients/month/site) and the number of sites open in the platform. For simplicity, the ramp-up in the number of patients/month/site is not applied within a site and recruitment to the platform assumes a Poisson process with the rate equal to the number of patients/month/site * number of sites open.

To specify the scenarios, each treatment specifies a percent of patients that are responders and non-responders. For the control treatment, the percent of responders is 2% in all scenarios. The treatment are varies the percent of responders from 2% (the null case) to 40%.

During the simulation of a virtual trials, a patient is first simulated as a responder or non-responder and then their observed values over time from the corresponding MVN. In this case study, an effective treatment is expected to move patients from the non-responder category to the responder category.

The function SetupSimulations() is located in SimulationDesign.R and the function is called to build the simulation object for the BuildMe.R file in this example.

R Code

Begin with the BuildMe.R file. This file loads the OCTOPUS package and sources the design file.
The file TrialDesign.R contains the function necessary to set-up the design object. The file SimulationDesign.R contains the functions necessary to set-up the simulation design.