Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

example-combo3

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) is made between the groups to allow differential discounting of the alternate-schedule data. The association is as below.

group_id (j): stratum (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 component and interaction parameters, to limit the amount of borrowing in case of significant heterogeneity across groups.

The complete model is as follows. As a function of doses d_1,d_2,d_3, the DLT rate in group j is, for j = 1,…,3,

\mbox{logit}\, π_j(d_1,d_2,d_3) = \mbox{logit}\Bigl( 1 - ∏_{i=1}^3 (1-π_{ij}(d_i))\Bigr) + η_{j}^{(12)}\frac{d_1}{d_1^*}\frac{d_2}{d_2^*} + η_{j}^{(13)}\frac{d_1}{d_1^*}\frac{d_3}{d_3^*} + η_{j}^{(23)}\frac{d_2}{d_2^*}\frac{d_3}{d_3^*} + η_{j}^{(123)}\frac{d_1}{d_1^*}\frac{d_2}{d_2^*}\frac{d_3}{d_3^*}.

In group j each treatment component i toxicity is modeled with logistic regression,

\mbox{logit}\, π_{ij}(d_i) = \log\, α_{ij} + β_{ij} \, \log\, \Bigl(\frac{d_i}{d_i^*}\Bigr).

The intercept and log-slope parameters \boldsymbolθ_{ij} = (\log\, α_{ij}, \log\, β_{ij}) are are given an EXNEX prior

\boldsymbolθ_{ij} \sim p_{ij} \mbox{BVN}(\boldsymbolμ_i, \boldsymbolΣ_{ij}) + (1-p_{ij}) \mbox{BVN}(\boldsymbol m_{ij}, \boldsymbol S_{ij}),

where the exchangeability weights are all p_{ij} = 0.9. The NEX parameters are set to \boldsymbol m_{ij} = (\mbox{logit}(1/3), \log\, 1), \boldsymbol S_{ij} = \mbox{diag}(2^2, 1^2) for all components i=1,2,3 and groups j = 1,2,3, and the EX parameters are modeled hierarchically. The mean of the exchangeable part has the distribution

\boldsymbolμ_i = (μ_{α i}, μ_{β i}) \sim \mbox{BVN}(\boldsymbol m_i, \boldsymbol S_i),

with \boldsymbol m_i = (\mbox{logit}(1/3), \log 1) and \boldsymbol S_i = \mbox{diag}(2^2, 1^2) for each component i = 1,2,3. For differentially discounting data from each schedule (QD and BID), the covariance parameters for the exchangeable part

Σ_{ij} = ≤ft( \begin{array}{cc} τ^2_{α s_j i} & ρ_i τ_{α s_j i} τ_{β s_j i}\\ ρ_i τ_{α s_j i} τ_{β s_j i} & τ^2_{β s_j i} \end{array} \right).

are allowed to vary across groups j depending on their mapping to strata s(j) as described above. For stratum s=1 (BID, which contains only the group j = 1 (Combo)), the standard deviations are modeled as

τ_{α 1 i} \sim \mbox{Log-Normal}(\log\,0.25, (\log 4 / 1.96)^2)

τ_{β 1 i} \sim \mbox{Log-Normal}(\log\,0.125, (\log 4 / 1.96)^2).

Whereas in stratum s=2 (QD, which contains the historical groups j=2,3 (HistData1, HistData2)), the standard deviations are

τ_{α 2 i} \sim \mbox{Log-Normal}(\log\,0.5, (\log 4 / 1.96)^2)

τ_{β 2 i} \sim \mbox{Log-Normal}(\log\,0.25, (\log 4 / 1.96)^2).

For all interaction parameters η_{j}^{(12)}, η_{j}^{(13)}, η_{j}^{(23)}, and η_{j}^{(123)} (j = 1,2,3), the following prior is assumed:

η_{j}^{(\cdot)} \sim p_{η j}^{(\cdot)} \mbox{N}(μ_{η}^{(\cdot)},{τ_{η s_j}^{(\cdot)}}^2) + (1-p_{η j}^{(\cdot)}) \mbox{N}(m_{η j}^{(\cdot)}, {s_{η j}^{(\cdot)}}^2).

The exchangeability weights are p_{η j}^{(\cdot)} = 0.9 for all interaction parameters and all groups. Here, for each μ_{η}^{(12)}, μ_{η}^{(13)}, μ_{η}^{(23)}, and μ_{η}^{(123)}, we take

μ_{η}^{(\cdot)} \sim \mbox{N}(0, 1/2),

and for each τ_{η s}^{(12)}, τ_{η s}^{(13)}, τ_{η s}^{(23)}, and τ_{η s}^{(123)},

τ_{η s}^{(\cdot)} \sim \mbox{Log-Normal}(\log(0.25), (\log 2 / 1.96)^2),

for both strata s = 1,2. Furthermore, m_{η j}^{(\cdot)} = 0 and {s_{η j}^{(\cdot)}}^2 = 1/2, uniformly across all indices.

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)

## example combo3

library(abind)

dref <- c(500, 500, 1000)
num_comp <- 3
num_inter <- choose(3,2) + 1
num_strata <- nlevels(hist_combo3$stratum)
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/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(0.9, nrow=num_groups, ncol=num_inter),
                      ## by default EXNEX is on for components and off for all interactions
                      prior_tau_dist=1,
                      prior_PD=FALSE
                      )
## Recover user set sampling defaults
options(.user_mc_options)

OncoBayes2

Bayesian Logistic Regression for Oncology Dose-Escalation Trials

v0.7-0
GPL (>= 3)
Authors
Novartis Pharma AG [cph], Sebastian Weber [aut, cre], Lukas A. Widmer [aut], Andrew Bean [aut], Trustees of Columbia University [cph] (R/stanmodels.R, configure, configure.win)
Initial release
2021-05-07

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.