The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Multitrial - methods for programs with several phase III trials

Suppose we are planning a drug development program testing the superiority of an experimental treatment over a control treatment. Our drug development program consists of an exploratory phase II trial which is, in case of promising results, followed by a confirmatory phase III trial.

The drugdevelopR package enables us to optimally plan such programs using a utility-maximizing approach. To get a brief introduction, we presented a very basic example on how the package works in Introduction to planning phase II and phase III trials with drugdevelopR. Contrary to the basic setting, where only one phase III trial was planned, we now want to show how to plan several phase III trials using the package.

The example setting

Suppose we are developing a new tumor treatment, exper. The patient variable that we want to investigate is how long the patient survives without further progression of the disease (progression-free survival). This is a time-to-event outcome variable. Therefore, we will use the function optimal_multitrial, which calculates optimal sample sizes and threshold decisions values for time-to-event outcomes when several phase III trials are performed.

Within our drug development program, we will compare our experimental treatment exper to the control treatment contro. The treatment effect measure is given by \(\theta = −\log(HR)\), where the hazard ratio \(HR\) is the ratio of the hazard rates between the two groups. If we assume that the hazard of experiencing a progression is reduced by 75% in the treatment group compared to the control group, we have a hazard ratio of 0.75.

Applying the package to the example

After installing the package according to the installation instructions, we can load it using the following code:

library(drugdevelopR)

We insert the same input values as in the example for time-to-event endpoints. As in the basic setting, the treatment effect may be fixed or follow a prior distribution. Furthermore, some options to adapt the program to your specific needs are also available in this setting, however skipping phase II, setting predefined benefit categories and choosing different treatment effects in phase II and III are not possible.

The package implements a framework developed for phase II/III drug development programs where several phase III trials are performed. This is of particular relevance as regulatory agencies often require statistical significance in two or more phase III trials. Different cases, defined by the number of significant trials needed for approval, are possible. For each case, different strategies are possible. They are defined by the number of phase III trials to be conducted in order to reach the goal of the case. For the success of the drug development program, it is necessary that the treatment effects of all phase III trials point in the same direction. For example, if we select case 3 and strategy 4, we require four phase III trials, where three need to be significant at level \(\alpha\) and the treatment effect of the fourth must point in the same direction.

The following cases and possible strategies are implemented in the package.

Case Possible strategies for this case
1 1, 2
2 1 (with significance level of \(\alpha^2\))* , 2, 3, 23*
3 1 (with significance level of \(\alpha^3\))*, 3, 4

Note that setting case = 1 and strategy = 1 would lead to the same results as in the basic setting. There are two special strategies which we marked with a * in the table:

So, in addition to the parameters from the basic setting, we provide the following parameters:

Note that for the following example, some input parameters were changed compared to the basic setting in order to reduce computation time.

res <- optimal_multitrial(w = 0.3,                        # define parameters for prior
   hr1 = 0.7, hr2 = 0.8, id1 = 210, id2 = 420,            # (https://web.imbi.uni-heidelberg.de/prior/)
   d2min = 20, d2max = 200, stepd2 = 5,                   # define optimization set for d2
   hrgomin = 0.7, hrgomax = 0.9, stephrgo = 0.02,         # define optimization set for HRgo
   alpha = 0.025, beta = 0.1, xi2 = 0.7, xi3 = 0.7,       # drug development planning parameters
   c2 = 0.75, c3 = 1, c02 = 100, c03 = 150,               # define fixed and variable costs
   K = Inf, N = Inf, S = -Inf,                            # set constraints
   b1 = 1000, b2 = 2000, b3 = 3000,                       # define expected benefits
   fixed = TRUE,                                          # choose if  effects are fixed or random
   case = 3, strategy = TRUE                              # choose case and strategy
   num_cl = 3)

Interpreting the output

After setting all these input parameters and running the function, let’s take a look at the output of the program.

res
#> Optimization result with 3 significant trial(s) needed, strategy 1:
#>  Utility: -231.07
#>  Sample size:
#>    phase II: 30, phase III: 368, total: 398
#>  Expected number of events:
#>    phase II: 20, phase III: 258, total: 278
#>  Assumed event rate:
#>    phase II: 0.7, phase III: 0.7
#>  Probability to go to phase III: 0.57
#>  Total cost:
#>    phase II: 122, phase III: 454, cost constraint: Inf
#>  Fixed cost:
#>    phase II: 100, phase III: 150
#>  Variable cost per patient:
#>    phase II: 0.75, phase III: 1
#>  Effect size categories (expected gains):
#>   small: 1 (1000), medium: 0.95 (2000), large: 0.85 (3000)
#>  Success probability: 0.19
#>  Success probability by effect size:
#>    small: 0.06, medium: 0.11, large: 0.02
#>  Significance level: 1.5625e-05
#>  Targeted power: 0.9
#>  Decision rule threshold: 0.76 [HRgo] 
#>  Assumed true effect: 0.7 [hr] 
#>  Treatment effect offset between phase II and III: 0 [gamma] 
#> 
#> Optimization result with 3 significant trial(s) needed, strategy 3:
#>  Utility: -411.1
#>  Sample size:
#>    phase II: 30, phase III: 258, total: 288
#>  Expected number of events:
#>    phase II: 20, phase III: 180, total: 200
#>  Assumed event rate:
#>    phase II: 0.7, phase III: 0.7
#>  Probability to go to phase III: 0.5
#>  Total cost:
#>    phase II: 122, phase III: 483, cost constraint: Inf
#>  Fixed cost:
#>    phase II: 100, phase III: 150
#>  Variable cost per patient:
#>    phase II: 0.75, phase III: 1
#>  Effect size categories (expected gains):
#>   small: 1 (1000), medium: 0.95 (2000), large: 0.85 (3000)
#>  Success probability: 0.08
#>  Success probability by effect size:
#>    small: 0, medium: 0.05, large: 0.03
#>  Significance level: 0.025
#>  Targeted power: 0.9
#>  Decision rule threshold: 0.7 [HRgo] 
#>  Assumed true effect: 0.7 [hr] 
#>  Treatment effect offset between phase II and III: 0 [gamma] 
#> 
#> Optimization result with 3 significant trial(s) needed, strategy 4:
#>  Utility: -436.79
#>  Sample size:
#>    phase II: 58, phase III: 416, total: 474
#>  Expected number of events:
#>    phase II: 40, phase III: 292, total: 332
#>  Assumed event rate:
#>    phase II: 0.7, phase III: 0.7
#>  Probability to go to phase III: 0.5
#>  Total cost:
#>    phase II: 144, phase III: 716, cost constraint: Inf
#>  Fixed cost:
#>    phase II: 100, phase III: 150
#>  Variable cost per patient:
#>    phase II: 0.75, phase III: 1
#>  Effect size categories (expected gains):
#>   small: 1 (1000), medium: 0.95 (2000), large: 0.85 (3000)
#>  Success probability: 0.2
#>  Success probability by effect size:
#>    small: 0, medium: 0.17, large: 0.02
#>  Significance level: 0.025
#>  Targeted power: 0.9
#>  Decision rule threshold: 0.7 [HRgo] 
#>  Assumed true effect: 0.7 [hr] 
#>  Treatment effect offset between phase II and III: 0 [gamma]

The program returns a data frame where the output for all implemented strategies is listed.

For strategy 1 we get:

The results for strategy 3 are:

Strategy 4 yields the following results:

Where to go from here

In this article we presented an example where several phase III trials are conducted. Note that this example is not restricted to time-to-event endpoints but can also be applied to binary and normally distributed endpoints by using the functions optimal_multitrial_binary and optimal_multitrial_normal. For more information on how to use the package, see:

References

Koch, G. G. (2005). Statistical consideration of the strategy for demonstrating clinical evidence of effectiveness one larger vs two smaller pivotal studies by z. shun, e. chi, s. durrleman and l. fisher, statistics in medicine 2005; 24: 1619–1637. Statistics in Medicine, 24(11):1639–1646.

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.