Optimal phase II/III drug development planning for multi-arm programs with time-to-event endpoint
Source:R/optimal_multiarm.R
optimal_multiarm.Rd
The function optimal_multiarm
of the drugdevelopR package
enables planning of multi-arm phase II/III drug development programs with
optimal sample size allocation and go/no-go decision rules
(Preussler et. al, 2019) for time-to-event endpoints. So far, only three-arm
trials with two treatments and one control are supported. The assumed true
treatment effects are assumed fixed (planning is also possible via
user-friendly R Shiny App:
multiarm). Fast
computing is enabled by parallel programming.
Usage
optimal_multiarm(
hr1,
hr2,
ec,
n2min,
n2max,
stepn2,
hrgomin,
hrgomax,
stephrgo,
alpha,
beta,
c2,
c3,
c02,
c03,
K = Inf,
N = Inf,
S = -Inf,
steps1 = 1,
stepm1 = 0.95,
stepl1 = 0.85,
b1,
b2,
b3,
strategy,
num_cl = 1
)
Arguments
- hr1
assumed true treatment effect on HR scale for treatment 1
- hr2
assumed true treatment effect on HR scale for treatment 2
- ec
control arm event rate for phase II and III
- n2min
minimal total sample size in phase II, must be divisible by 3
- n2max
maximal total sample size in phase II, must be divisible by 3
- stepn2
stepsize for the optimization over n2, must be divisible by 3
- hrgomin
minimal threshold value for the go/no-go decision rule
- hrgomax
maximal threshold value for the go/no-go decision rule
- stephrgo
step size for the optimization over HRgo
- alpha
one-sided significance level/family-wise error rate
- beta
type-II error rate for any pair, i.e.
1 - beta
is the (any-pair) power for calculation of the number of events for phase III- c2
variable per-patient cost for phase II
- c3
variable per-patient cost for phase III
- c02
fixed cost for phase II
- c03
fixed cost for phase III
- K
constraint on the costs of the program, default:
Inf
, e.g. no constraint- N
constraint on the total expected sample size of the program, default:
Inf
, e.g. no constraint- S
constraint on the expected probability of a successful program, default:
-Inf
, e.g. no constraint- steps1
lower boundary for effect size category "small" in HR scale, default: 1
- stepm1
lower boundary for effect size category "medium" in HR scale = upper boundary for effect size category "small" in HR scale, default: 0.95
- stepl1
lower boundary for effect size category "large" in HR scale = upper boundary for effect size category "medium" in HR scale, default: 0.85
- b1
expected gain for effect size category "small"
- b2
expected gain for effect size category "medium"
- b3
expected gain for effect size category "large"
- strategy
choose strategy: 1 (only the best promising candidate), 2 (all promising candidates) or 3 (both strategies)
- num_cl
number of clusters used for parallel computing, default: 1
Value
The output of the function is a data.frame
object containing the optimization results:
- u
maximal expected utility under the optimization constraints, i.e. the expected utility of the optimal sample size and threshold value
- HRgo
optimal threshold value for the decision rule to go to phase III
- d2
optimal total number of events for phase II
- d3
total expected number of events for phase III; rounded to next natural number
- d
total expected number of events in the program; d = d2 + d3
- n2
total sample size for phase II; rounded to the next even natural number
- n3
total sample size for phase III; rounded to the next even natural number
- n
total sample size in the program; n = n2 + n3
- K
maximal costs of the program (i.e. the cost constraint, if it is set or the sum K2+K3 if no cost constraint is set)
- pgo
probability to go to phase III
- sProg
probability of a successful program
- sProg2
probability of a successful program with two arms in phase III
- sProg3
probability of a successful program with three arms in phase III
- K2
expected costs for phase II
- K3
expected costs for phase III
and further input parameters. Taking cat(comment())
of the
data frame lists the used optimization sequences, start and
finish time of the optimization procedure. The attribute
attr(,"trace")
returns the utility values of all parameter
combinations visited during optimization.
References
Preussler, S., Kirchner, M., Goette, H., Kieser, M. (2019). Optimal Designs for Multi-Arm Phase II/III Drug Development Programs. Submitted to peer-review journal.
IQWiG (2016). Allgemeine Methoden. Version 5.0, 10.07.2016, Technical Report. Available at https://www.iqwig.de/ueber-uns/methoden/methodenpapier/, assessed last 15.05.19.
Examples
# Activate progress bar (optional)
if (FALSE) progressr::handlers(global = TRUE) # \dontrun{}
# Optimize
# \donttest{
optimal_multiarm(hr1 = 0.75, hr2 = 0.80, # define assumed true HRs
ec = 0.6, # control arm event rate
n2min = 30, n2max = 90, stepn2 = 6, # define optimization set for n2
hrgomin = 0.7, hrgomax = 0.9, stephrgo = 0.05, # define optimization set for HRgo
alpha = 0.025, beta = 0.1, # drug development planning parameters
c2 = 0.75, c3 = 1, c02 = 100, c03 = 150, # fixed/variable costs for phase II/III
K = Inf, N = Inf, S = -Inf, # set constraints
steps1 = 1, # define lower boundary for "small"
stepm1 = 0.95, # "medium"
stepl1 = 0.85, # and "large" effect size categories
b1 = 1000, b2 = 2000, b3 = 3000, # define expected benefit
strategy = 1, # choose strategy: 1, 2 or 3
num_cl = 1) # number of cores for parallelized computing
#> Optimization result:
#> Utility: 56.47
#> Sample size:
#> phase II: 90, phase III: 420, total: 510
#> Probability to go to phase III: 0.77
#> Total cost:
#> phase II: 168, phase III: 535, 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.37
#> Success probability for a trial with:
#> two arms in phase III: 0.37, three arms in phase III: 0
#> Significance level: 0.025
#> Targeted power: 0.9
#> Decision rule threshold: 0.85 [HRgo]
#> Assumed true effects [HR]:
#> treatment 1: 0.75, treatment 2: 0.8
#> Control arm event rate: 0.6
# }