Fixed effect estimates and prior distributions

Johannes Cepicka

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. Up until now, we presented a very basic example on how the package works in Introduction to planning phase II and phase III trials with drugdevelopR. In this article, we want to expand the basic setting and want to introduce you to the modelling of the assumed treatment effect on a prior distribution.

The example setting

We are in the same setting as in the introduction, i.e. we suppose we are developing a new tumor treatment, exper. The patient variable that we want to investigate is the difference in tumor width between the one-year visit and baseline. This is a normally distributed outcome variable.

The parameters we insert into the function optimum_normal are the same parameters we also inserted in the basic setting. However this time, we set fixed = "FALSE", hence the assumed true treatment effect is not fixed but follows a prior distribution. Again, we start by loading the drugdevelopR package.

library(drugdevelopR)

Parameters of the prior distribution

Additionally to the parameters in the baseline scenario with fixed treatment effects, we now need further input parameters:

The prior distribution for the standardized true difference in means is then given by \(\Delta ∼ w · \mathcal{N}^t_{[0.25,0.75]} (0.625, 4/300) + (1 − w) · \mathcal{N}^t_{[0.25,0.75]} (0.9, 4/600)\) where \(N^t_{[a,b]} (\mu, \sigma^2)\) denotes the truncated normal distribution with mean \(\mu\), variance \(\sigma^2\), truncated below at a and above at b. To see how different input values change the prior distribution we refer to the Shiny app.

 res <- optimal_normal(Delta1 = 0.625, Delta2 = 0.8, fixed = FALSE, # treatment effect
                       n2min = 20, n2max = 400, # sample size region
                       stepn2 = 4, # sample size step size
                       kappamin = 0.02, kappamax = 0.2, # threshold region
                       stepkappa = 0.02, # threshold step size
                       c2 = 0.675, c3 = 0.72, # maximal total trial costs
                       c02 = 15, c03 = 20, # maximal per-patient costs
                       b1 = 3000, b2 = 8000, b3 = 10000, # gains for patients
                       alpha = 0.025, # significance level
                       beta = 0.1, # 1 - power
                       w = 0.6, in1 = 300, in2 = 600, #weight and amount of information
                       a = 0.25, b = 0.75) #truncation values

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:
#>  Utility: 3147.32
#>  Sample size:
#>    phase II: 80, phase III: 188, total: 268
#>  Probability to go to phase III: 0.99
#>  Total cost:
#>    phase II: 69, phase III: 155, cost constraint: Inf
#>  Fixed cost:
#>    phase II: 15, phase III: 20
#>  Variable cost per patient:
#>    phase II: 0.675, phase III: 0.72
#>  Effect size categories (expected gains):
#>   small: 0 (3000), medium: 0.5 (8000), large: 0.8 (10000)
#>  Success probability: 0.85
#>  Success probability by effect size:
#>    small: 0.68, medium: 0.16, large: 0.01
#>  Significance level: 0.025
#>  Targeted power: 0.9
#>  Decision rule threshold: 0.06 [Kappa] 
#>  Parameters of the prior distribution: 
#>    Delta1: 0.625, Delta2: 0.9, in1: 300, in2: 600,
#>    a: 0.25, b: 0.75, w: 0.6
#>  Treatment effect offset between phase II and III: 0 [gamma]

The program returns a total of thirteen values and the input values. Once again, we will only focus at the most important ones:

Of course, the differences in the output values compared to the fixed setting heavily depend on the choice of the prior.

Prior distributions for time-to-event outcomes

Note that in the setting of time-to-event outcomes, the following input parameters have to be specified, which differ from the setting with normally distributed outcomes:

Where to go from here

This tutorial explains how to use the parameters needed for the prior distribution when setting the parameter fixed to be "FALSE".

For more information on how to use the package, see: