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

example-combo2

Two-drug combination example


Description

Example using a combination of two experimental drugs.

Details

The following example is described in the reference Neuenschwander, B. et al (2016). The data are described in the help page for codata_combo2. In the study trial_AB, the risk of DLT was studied as a function of dose for two drugs, drug A and drug B. Historical information on the toxicity profiles of these two drugs was available from single agent trials trial_A and trial_B. Another study IIT was run concurrently to trial_AB, and studies the same combination.

The model described in Neuenschwander, et al (2016) is adapted as follows. For groups j = 1,…, 4 representing each of the four sources of data mentioned above,

\mbox{logit}\, π_{1j}(d_1) = \log\, α_{1j} + β_{1j} \, \log\, \Bigl(\frac{d_1}{d_1^*}\Bigr),

and

\mbox{logit}\, π_{2j}(d_2) = \log\, α_{2j} + β_{2j} \, \log\, \Bigl(\frac{d_2}{d_2^*}\Bigr),

are logistic regressions for the single-agent toxicity of drugs A and B, respectively, when administered in group j. Conditional on the regression parameters \boldsymbolθ_{1j} = (\log \, α_{1j}, \log \, β_{1j}) and \boldsymbolθ_{2j} = (\log \, α_{2j}, \log \, β_{2j}), the toxicity π_{j}(d_1, d_2) for the combination is modeled as the "no-interaction" DLT rate,

\tildeπ_{j}(d_1, d_2) = 1 - (1-π_{1j}(d_1) )(1- π_{2j}(d_2))

with a single interaction term added on the log odds scale,

\mbox{logit} \, π_{j}(d_1, d_2) = \mbox{logit} \, \tildeπ_{j}(d_1, d_2) + η_j \frac{d_1}{d_1^*}\frac{d_2}{d_2^*}.

A hierarchical model across the four groups j allows dose-toxicity information to be shared through common hyperparameters.

For the component parameters \boldsymbolθ_{ij},

\boldsymbolθ_{ij} \sim \mbox{BVN}(\boldsymbol μ_i, \boldsymbolΣ_i).

For the mean, a further prior is specified as

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

with \boldsymbol m_i = (\mbox{logit}\, 0.1, \log 1) and \boldsymbol S_i = \mbox{diag}(3.33^2, 1^2) for each i = 1,2. For the standard deviations and correlation parameters in the covariance matrix,

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

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

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

For the interaction parameters η_j in each group, the hierarchical model has

η_j \sim \mbox{N}(μ_η, τ^2_η),

for j = 1,…, 4, with μ_η \sim \mbox{N}(0, 1.121^2) and τ_η \sim \mbox{Log-Normal}(\log\, 0.125, ((\log 4) / 1.96)^2).

Below is the syntax for specifying this fully exchangeable 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)

dref <- c(300, 960)

num_comp <- 2 # two investigational drugs
num_inter <- 1 # one drug-drug interaction needs to be modeled
num_groups <- nlevels(codata_combo2$group_id) # no stratification needed
num_strata <- 1 # no stratification needed

blrmfit <- blrm_exnex(
  cbind(num_toxicities, num_patients - num_toxicities) ~
      1 + I(log(drug_A / dref[1])) |
      1 + I(log(drug_B / dref[2])) |
      0 + I(drug_A/dref[1] *drug_B/dref[2]) |
      group_id,
  data = codata_combo2,
  prior_EX_mu_mean_comp = matrix(
     c(logit(0.1), 0,  # hyper-mean of (intercept, log-slope) for drug A
       logit(0.1), 0), # hyper-mean of (intercept, log-slope) for drug B
       nrow = num_comp,
       ncol = 2,
       byrow = TRUE
      ),
  prior_EX_mu_sd_comp = matrix(
     c(3.33, 1,  # hyper-sd of mean mu for (intercept, log-slope) for drug A
       3.33, 1), # hyper-sd of mean mu for (intercept, log-slope) for drug B
       nrow = num_comp,
       ncol = 2,
       byrow = TRUE
      ),
  prior_EX_tau_mean_comp = matrix(
     c(log(0.25), log(0.125),
       log(0.25), log(0.125)),
       nrow = num_comp,
       ncol = 2,
       byrow = TRUE
      ),
  prior_EX_tau_sd_comp = matrix(
     c(log(4) / 1.96, log(4) / 1.96,
       log(4) / 1.96, log(4) / 1.96),
       nrow = num_comp,
       ncol = 2,
       byrow = TRUE
      ),
  prior_EX_mu_mean_inter = 0,
  prior_EX_mu_sd_inter = 1.121,
  prior_EX_tau_mean_inter = matrix(log(0.125), nrow = num_inter, ncol = num_strata),
  prior_EX_tau_sd_inter = matrix(log(4) / 1.96, nrow = num_inter, ncol = num_strata),
  prior_is_EXNEX_comp = rep(FALSE, num_comp),
  prior_is_EXNEX_inter = rep(FALSE, num_inter),
  prior_EX_prob_comp = matrix(1, nrow = num_groups, ncol = num_comp),
  prior_EX_prob_inter = matrix(1, nrow = num_groups, ncol = num_inter),
  prior_tau_dist = 1
 )
## 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.