The R basket
package
provides for the designs and analysis of basket trials for multi-source
exchangeability models (MEM), which allows arms to “share” power
with similar arms in a trial. The package is intended to perform the
exact or MCMC computation of the operating characteristics of different
scenarios. Calculations derived from these analyses include the
posterior probabilities, HPD boundaries, effective sample sizes (ESS),
mean and median estimations can be calculated with this package using
the MEM method. Along with providing “basketwise” analyses, the package
includes similar calculations for “clusterwise” analyses where a cluster
a set of similar baskets. In addition plotting tools are provided to
visualize basket and cluster density as well as their exchangeability.
The package includes the following main functions:
As a case study, consider the recent vemurafenib study that was performed for multiple nonmelanoma cancers with BRAF V600 Mutations by Hynman et al. This was a basket study to assess the efficacy of vemurafenib for Non-Small Cell Lung Cancer (NSCLC), ColoReCtal (CRC) treated with vemurafenib only, CRC treated with both vemurafenib and cetuximab, cholangiocarcinoma (Bile Duct), Erdheim–Chester disease or Langerhans’-cell histiocytosis (ECD/LCH), and anaplastic thyroid cancer (ATC). The results of the trials are summarized in the following table.
Basket | Enrolled | Evauable | Responders | Prior Thrpy <= 1 | Prior Thrpy = 2 | Prior Thrpy >= 3 |
---|---|---|---|---|---|---|
NSCLC | 20 | 19 | 8 | 11 | 4 | 5 |
CRC (vemu) | 10 | 10 | 0 | 1 | 2 | 7 |
CRC (vemu+cetu) | 27 | 26 | 1 | 5 | 11 | 11 |
Bile Duct | 8 | 8 | 1 | 2 | 1 | 5 |
ECD or LCH | 18 | 14 | 6 | 9 | 7 | 2 |
ATC | 7 | 7 | 2 | 5 | 1 | 1 |
The table indicates an association between the number of prior therapies and the success of an arm, which suggests heterogeneity in the population of arms. That is some baskets have many enrollees with many prior therapies and others do not. As a result, the response rates arms with favorable enrollment (NSCLC, ECD or LCH, and ATC) are better than those with unfavorable enrollment (CRC (vemu), CRC (vemu+cetu), and Bile Duct). In light of this we may want to allow a favorable-enrollment arm to borrow power from another favorable-enrollment arm depending on how similar they are. This essentially allow arms that are smaller, but similar to other arms to increase their sample size. This combination of actual and borrowed samples is termed the effective sample size (ESS) and is included in the analysis.
An MEM analysis is performed in the basket
package using
the basket()
function. The exact variation provides results
up to numerical precision and is appropriate for trials with few arms.
The Markov-chain Monte Carlo (MCMC) variation scales to larger trials
with results that are generally within 2-3 significant digits of the
exact version (under the default number of iterations). Both the exact
and MCMC analyses are performed by specifying the size, number of
responders, and null response rate.
# Load the basket library.
library(basket)
# Load the vemurafenib data.
data(vemu_wide)
# Perform the analysis.
vemu_basket <- basket(responses = vemu_wide$responders,
size = vemu_wide$evaluable,
name = vemu_wide$baskets,
cluster_analysis = TRUE,
p0 = 0.15)
# Show the trial diagnostics.
summary(vemu_basket)
#>
#> ── The MEM Model Call ──────────────────────────────────────────────────────────
#>
#> mem_mcmc(responses = responses, size = size, name = name, p0 = p0,
#> shape1 = shape1, shape2 = shape2, prior = prior, hpd_alpha = hpd_alpha,
#> alternative = alternative, mcmc_iter = mcmc_iter, mcmc_burnin = mcmc_burnin,
#> initial_mem = initial_mem, seed = seed, cluster_analysis = cluster_analysis,
#> call = call, cluster_function = cluster_function)
#>
#> ── The Basket Summary ──────────────────────────────────────────────────────────
#>
#> The Null Response Rates (alternative is greater):
#> NSCLC CRC (vemu) CRC (vemu+cetu) Bile Duct ECD or LCH ATC
#> Null 0.15 0.150 0.150 0.15 0.150 0.150
#> Posterior Prob 1.00 0.026 0.018 0.35 0.999 0.971
#>
#> Posterior Mean and Median Response Rates:
#> NSCLC CRC (vemu) CRC (vemu+cetu) Bile Duct ECD or LCH ATC
#> Mean 0.394 0.054 0.053 0.149 0.393 0.359
#> Median 0.392 0.046 0.045 0.097 0.391 0.362
#>
#> Highest Posterior Density Interval with Coverage Probability 0.95:
#> NSCLC CRC (vemu) CRC (vemu+cetu) Bile Duct ECD or LCH ATC
#> Lower Bound 0.241 0.000 0.001 0.004 0.237 0.176
#> Upper Bound 0.548 0.128 0.122 0.404 0.550 0.559
#>
#> Posterior Effective Sample Size:
#> NSCLC CRC (vemu) CRC (vemu+cetu) Bile Duct ECD or LCH ATC
#> 37.45 50.284 54.332 10.581 36.237 22.688
#>
#> ── The Cluster Summary ─────────────────────────────────────────────────────────
#>
#> Cluster 1
#> "CRC (vemu)" "CRC (vemu+cetu)" "Bile Duct"
#> Cluster 2
#> "NSCLC" "ECD or LCH" "ATC"
#>
#> The Null Response Rates (alternative is greater):
#> Cluster 1 Cluster 2
#> Posterior for null of 0.15 0.132 0.99
#>
#> Posterior Mean and Median Response Rates:
#> Cluster 1 Cluster 2
#> Mean 0.085 0.382
#> Median 0.056 0.382
#>
#> Highest Posterior Density Interval with Coverage Probability 0.95:
#> Cluster 1 Cluster 2
#> Lower Bound 0.000 0.219
#> Upper Bound 0.318 0.554
#>
#> Posterior Effective Sample Size:
#> Cluster 1 Cluster 2
#> 9.417 30.928
The output of the summary
is composed of three parts.
The first shows the expression that was used to construct the analysis.
The second provides information about the trial at the basket level
including, the probability each arm is above the specified null response
rate, the mean an median response rate for each arm, the Highest
Posterior Density (HPD) interval at the significance level (specified by
the hpd_alpha
parameter), and the ESS. Additionally, the
arms are clustered and similar diagnostics are reported for the clusters
along with the arms that compose each cluster.
The analysis estimates the posterior distribution of the response
rate for both the arms and the clusters. Distributions for arms and can
be inspected visually via the plot_density()
with the
analysis as the argument. If only the density of the arms should be
shown then the type = "basket"
can be used. The same is
true for type = "cluster"
for the cluster density plot.
plot_density(vemu_basket$basket)
#> Warning: The `guide` argument in `scale_*()` cannot be `FALSE`. This was deprecated in
#> ggplot2 3.3.4.
#> ℹ Please use "none" instead.
#> ℹ The deprecated feature was likely used in the basket package.
#> Please report the issue at <https://github.com/kaneplusplus/basket/issues>.
#> This warning is displayed once every 8 hours.
#> Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
#> generated.
Along with the densities, the package can show the exchangeability
between the individual arms via, what we are terming, an
exchangeogram. This is similar to a correlogram but,
rather than showing correlations among variables, an exchangeogram shows
the exchangeability between arms. Exchangeograms for MEM analyses can be
created using the plot_mem()
function. By default the prior
exchangeability, MAP exchangeability, and posterior exchangeability are
shown in a single plot, and is controlled by the default parameter
type = c("prior", "map", "pep")
. Along with the
visualization, the MAP and PEP matrices can retrieved with the
basket_map()
and basket_pep()
function for
baskets and cluster_map()
and cluster_pep()
function for clusters.