example-combo3: Three-drug combination example

example-combo3R 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 d_1,d_2,d_3, the DLT rate in group j is, for j = 1,\ldots,3,

\mbox{logit}\, \pi_j(d_1,d_2,d_3) = \mbox{logit}\Bigl( 1 - \prod_{i=1}^3 (1-\pi_{ij}(d_i))\Bigr) + \eta_{j}^{(12)}\frac{d_1}{d_1^*}\frac{d_2}{d_2^*} + \eta_{j}^{(13)}\frac{d_1}{d_1^*}\frac{d_3}{d_3^*} + \eta_{j}^{(23)}\frac{d_2}{d_2^*}\frac{d_3}{d_3^*} + \eta_{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}\, \pi_{ij}(d_i) = \log\, \alpha_{ij} + \beta_{ij} \, \log\, \Bigl(\frac{d_i}{d_i^*}\Bigr).

The intercept and log-slope parameters \boldsymbol\theta_{ij} = (\log\, \alpha_{ij}, \log\, \beta_{ij}) are are given an EXNEX prior

\boldsymbol\theta_{ij} \sim p_{ij} \mbox{BVN}(\boldsymbol\mu_i, \boldsymbol\Sigma_{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\mu_i = (\mu_{\alpha i}, \mu_{\beta 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

\Sigma_{ij} = \left( \begin{array}{cc} \tau^2_{\alpha s_j i} & \rho_i \tau_{\alpha s_j i} \tau_{\beta s_j i}\\ \rho_i \tau_{\alpha s_j i} \tau_{\beta s_j i} & \tau^2_{\beta 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

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

\tau_{\beta 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

\tau_{\alpha 2 i} \sim \mbox{Log-Normal}(\log\,0.5, (\log 4 / 1.96)^2)

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

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

\eta_{j}^{(\cdot)} \sim \mbox{N}(\mu_{\eta}^{(\cdot)},{\tau_{\eta s_j}^{(\cdot)}}^2).

The exchangeability weights are p_{\eta j}^{(\cdot)} = 0.9 for all parameters with EXNEX. Here, for each \mu_{\eta}^{(12)}, \mu_{\eta}^{(13)}, \mu_{\eta}^{(23)}, and \mu_{\eta}^{(123)}, we take

\mu_{\eta}^{(\cdot)} \sim \mbox{N}(0, 1/2),

and for each \tau_{\eta s}^{(12)}, \tau_{\eta s}^{(13)}, \tau_{\eta s}^{(23)}, and \tau_{\eta s}^{(123)},

\tau_{\eta s}^{(\cdot)} \sim \mbox{Log-Normal}(\log(0.25), (\log 2 / 1.96)^2),

for both strata s = 1,2.

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)


OncoBayes2 documentation built on July 26, 2023, 5:30 p.m.