example-combo3 {OncoBayes2} | R Documentation |
Three-drug combination example
Description
Example using a combination of two experimental drugs, with EXNEX and differential discounting.
Details
This dataset involves a hypothetical dose-escalation study of combination
therapy with three treatment components. From two previous studies
HistAgent1
and HistAgent2
, historical data is available on each
of the treatments as single-agents, as well as two of the two-way
combinations. However, due to a difference in treatment schedule between the
Combo
study and the historical studies, a stratification (through stratum_id
)
is made between the groups to allow differential discounting of the
alternate-schedule data. The association is as below.
group_id (j): | stratum_id (s_j): |
Combo (1) | BID (1) |
HistAgent1 (2) | QD (2) |
HistAgent2 (3) | QD (2) |
For additional robustness, EXNEX priors are used for all group-level treatment components while not for the interaction parameters. This is to limit the amount of borrowing in case of significant heterogeneity across groups.
The complete model is as follows. As a function of doses , the
DLT rate in group
is, for
,
In group each treatment component
toxicity is modeled with
logistic regression,
The intercept and log-slope parameters
are are given an EXNEX prior
where the exchangeability weights are all .
The NEX parameters are set to
,
for all components
and
groups
, and the EX parameters are modeled hierarchically. The
mean of the exchangeable part has the distribution
with and
for each component
.
For differentially discounting data from each schedule (QD and BID), the
covariance parameters for the exchangeable part
are allowed to vary across groups depending on their mapping
to strata
as described above. For stratum
(
BID
,
which contains only the group (
Combo
)), the standard
deviations are modeled as
Whereas in stratum (
QD
, which contains the historical groups
(
HistData1
, HistData2
)), the standard deviations are
For all interaction parameters ,
,
, and
(
), the following
prior is assumed:
The exchangeability weights are for all
parameters with EXNEX. Here, for each
,
,
, and
, we take
and for each ,
,
, and
,
for both strata .
Below is the syntax for specifying this model in blrm_exnex
.
References
Neuenschwander, B., Roychoudhury, S., & Schmidli, H. (2016). On the use of co-data in clinical trials. Statistics in Biopharmaceutical Research, 8(3), 345-354.
Examples
## Setting up dummy sampling for fast execution of example
## Please use 4 chains and 100x more warmup & iter in practice
.user_mc_options <- options(OncoBayes2.MC.warmup=10, OncoBayes2.MC.iter=20, OncoBayes2.MC.chains=1,
OncoBayes2.MC.save_warmup=FALSE)
## example combo3
library(abind)
dref <- c(500, 500, 1000)
num_comp <- 3
num_inter <- choose(3,2) + 1
num_strata <- nlevels(hist_combo3$stratum_id)
num_groups <- nlevels(hist_combo3$group_id)
blrmfit <- blrm_exnex(
cbind(num_toxicities, num_patients-num_toxicities) ~
1 + I(log(drug_A/dref[1])) |
1 + I(log(drug_B/dref[2])) |
1 + I(log(drug_C/dref[3])) |
0
+ I(drug_A/dref[1] * drug_B/dref[2])
+ I(drug_A/dref[1] * drug_C/dref[3])
+ I(drug_B/dref[2] * drug_C/dref[3])
+ I(drug_A/dref[1] * drug_B/dref[2] * drug_C/dref[3]) |
stratum_id/group_id,
data = hist_combo3,
prior_EX_mu_mean_comp = matrix(c(logit(1/3), 0), nrow = num_comp, ncol = 2, TRUE),
prior_EX_mu_sd_comp = matrix(c(2, 1), nrow = num_comp, ncol = 2, TRUE),
prior_EX_tau_mean_comp = abind(matrix(log( c(0.25, 0.125)), nrow = num_comp, ncol = 2, TRUE),
matrix(log(2*c(0.25, 0.125)), nrow = num_comp, ncol = 2, TRUE),
along = 0),
prior_EX_tau_sd_comp = abind(matrix(log(4) / 1.96, nrow = num_comp, ncol = 2, TRUE),
matrix(log(4) / 1.96, nrow = num_comp, ncol = 2, TRUE),
along = 0),
prior_EX_mu_mean_inter = rep(0, num_inter),
prior_EX_mu_sd_inter = rep(sqrt(2) / 2, num_inter),
prior_EX_tau_mean_inter = matrix(log(0.25), nrow = num_strata, ncol = num_inter),
prior_EX_tau_sd_inter = matrix(log(2) / 1.96, nrow = num_strata, ncol = num_inter),
prior_EX_prob_comp = matrix(0.9, nrow = num_groups, ncol = num_comp),
prior_EX_prob_inter = matrix(1.0, nrow = num_groups, ncol = num_inter),
prior_is_EXNEX_comp = rep(TRUE, num_comp),
prior_is_EXNEX_inter = rep(FALSE, num_inter),
prior_tau_dist = 1,
prior_PD = FALSE
)
## Recover user set sampling defaults
options(.user_mc_options)