Type: | Package |
Title: | Bayesian Model Averaging for Basket Trials |
Version: | 0.1.2 |
Date: | 2022-02-24 |
Maintainer: | Matt Psioda <matt_psioda@unc.edu> |
Description: | An implementation of the Bayesian model averaging method of Psioda and others (2019) <doi:10.1093/biostatistics/kxz014> for basket trials. Contains a user-friendly wrapper for simulating basket trials under conditions and analyzing them with a Bayesian model averaging approach. |
License: | GPL (≥ 3) |
Depends: | R (≥ 3.5.0) |
Imports: | Rcpp (≥ 1.0.3), partitions |
LinkingTo: | Rcpp, RcppArmadillo |
Encoding: | UTF-8 |
URL: | https://github.com/ethan-alt/bmabasket |
BugReports: | https://github.com/ethan-alt/bmabasket/issues |
RoxygenNote: | 7.1.1 |
NeedsCompilation: | yes |
Packaged: | 2022-02-24 17:24:55 UTC; ea516 |
Author: | Matt Psioda [cre], Ethan Alt [aut] |
Repository: | CRAN |
Date/Publication: | 2022-02-24 17:50:13 UTC |
bmabasket: Bayesian Model Averaging for Basket Trials
Description
An implementation of the Bayesian model averaging method of Psioda and others (2019) <doi:10.1093/biostatistics/kxz014> for basket trials. Contains a user-friendly wrapper for simulating basket trials under conditions and analyzing them with a Bayesian model averaging approach.
Author(s)
Maintainer: Matt Psioda matt_psioda@unc.edu
Authors:
Ethan Alt ethanalt@live.unc.edu
See Also
Useful links:
Compute posterior model probabilities
Description
Given data and hyperparameters, computes posterior model probabilities
Usage
bma(pi0, y, n, P = NULL, mu0 = 0.5, phi0 = 1, priorModelProbs = NULL, pmp0 = 1)
Arguments
pi0 |
scalar or vector whose elements are between 0 and 1 giving threshold for the hypothesis test. If a scalar is provided, assumes same threshold for each basket |
y |
vector of responses |
n |
vector of sample sizes |
P |
integer giving maximum number of distinct parameters; default is all possible models |
mu0 |
prior mean for beta prior |
phi0 |
prior dispersion for beta prior |
priorModelProbs |
(optional) vector giving prior for models. Default is proportional to |
pmp0 |
nonnegative scalar. Value of 0 corresponds to uniform prior across model space. Ignored if priorModelProbs is specified |
Value
a list with the following structure:
- bmaProbs
model-averaged probabilities that each basket is larger than
pi0
- bmaMeans
model-averaged posterior mean for each basket
Examples
## Simulate data with 3 baskets
probs <- c(0.5, 0.25, 0.25)
n <- rep(100, length(probs))
y <- rbinom(length(probs), size = n, prob = probs)
bma(0.5, y, n)
Simulate a BMA design
Description
Simulates a BMA design given hyperparameters
Usage
bma_design(
nSims,
nBaskets,
maxDistinct = nBaskets,
eRates,
rRates,
meanTime,
sdTime,
ppEffCrit,
ppFutCrit,
futOnly = FALSE,
rRatesNull,
rRatesAlt,
minSSFut,
minSSEff,
minSSEnr,
maxSSEnr,
targSSPer,
I0,
mu0 = 0.5,
phi0 = 1,
priorModelProbs = NULL,
pmp0 = 1
)
Arguments
nSims |
number of simulation studies to be performed |
nBaskets |
number of baskets |
maxDistinct |
integer between 1 and |
eRates |
scalar or vector of Poisson process rates for each basket |
rRates |
scalar or vector of true response rates for each basket |
meanTime |
mean parameter for time to outcome ascertainment |
sdTime |
standard deviation parameter for time to outcome ascertainment |
ppEffCrit |
scalar or vector giving basket-specific posterior probability threshold for activity (i.e., efficacy). |
ppFutCrit |
scalar or vector giving basket-specific posterior probability threshold for futility |
futOnly |
|
rRatesNull |
scalar or vector of basket-specific null hypothesis values (for efficacy determination) |
rRatesAlt |
scalar or vector of basket-specific hypothesized alternative values (for futility determination) |
minSSFut |
minimum number of subjects in basket to assess futility |
minSSEff |
minimum number of subjects in basket to assess activity |
minSSEnr |
matrix giving minimum number of new subjects per basket before next analysis (each row is an interim analysis, each column is a basket) |
maxSSEnr |
matrix giving maximum number of new subjects per basket before next analysis (each row is an interim analysis, each column is a basket) |
targSSPer |
scalar or vector giving target sample size increment for each basket |
I0 |
maximum number of analyses |
mu0 |
prior mean for the response probabilities |
phi0 |
prior dispersion response probabilities |
priorModelProbs |
vector giving prior probabilities for models. Default is prior of each model is proportional |
pmp0 |
scalar giving power for |
Value
a nested list giving results of the simulation with the following structure:
-
hypothesis.testing - hypothesis testing information
-
rr - basket-specific null hypothesis rejection rate
-
fw.fpr - family-wise false positive rate (across all inactive baskets)
-
nerr - average number of false null hypothesis rejections
-
fut - basket-specific probability of futility stopping
-
-
sample.size - trial sample size information
-
basket.ave - basket-specific expected sample size
-
basket.med - basket-specific median sample size
-
basket.min - basket-specific minimum sample size
-
basket.max - basket-specific maximum sample size
-
overall.ave - expected overall sample size
-
-
point.estimation - point estimation information
-
PM.ave - basket-specific average posterior mean
-
SP.ave - basket-specific average sample proportion
-
PP.ave - basket-specific average posterior probability
-
bias - basket-specific bias of the posterior mean
-
mse - basket-specific MSE of the posterior mean
-
-
early.stopping - early stopping information
-
interim.stop.prob - probability of trial stoppage by interim
-
baskets.continuing.ave - average number of baskets continuing past interim
-
Examples
## SIMULATE DATA AND SET SIMULATION PARAMS
nSims <- 100 ## would be much more in practice
meanTime <- 0.01
sdTime <- 0.0000000001
mu0 <- 0.45
phi0 <- 1.00
ppEffCrit <- 0.985
ppFutCrit <- 0.2750
pmp0 <- 2
n1 <- 7
n2 <- 16
targSSPer <- c(n1, n2)
nInterim <- 2
futOnly <- 1
K0 <- 5
row <- 0
mss <- 4
minSSFut <- mss ## minimum number of subjects in basket to assess futility using BMA
minSSEff <- mss ## minimum number of subjects in basket to assess activity using BMA
rTarg <- 0.45
rNull <- 0.15
rRatesMod <- matrix(rNull,(K0+1)+3,K0)
rRatesNull <- rep(rNull,K0)
rRatesMid <- rep(rTarg,K0)
eRatesMod <- rep(1, K0)
## min and max #' of new subjects per basket before next analysis (each row is interim)
minSSEnr <- matrix(rep(mss, K0), nrow=nInterim ,ncol=K0, byrow=TRUE)
maxSSEnr <- matrix(rep(100, K0), nrow=nInterim, ncol=K0, byrow=TRUE)
## construct matrix of rates
for (i in 1:K0)
{
rRatesMod[(i+1):(K0+1),i]= rTarg
}
rRatesMod[(K0+2),] <- c(0.05,0.15,0.25,0.35,0.45)
rRatesMod[(K0+3),] <- c(0.15,0.30,0.30,0.30,0.45)
rRatesMod[(K0+4),] <- c(0.15,0.15,0.30,0.30,0.30)
## conduct simulation of trial data and analysis
x <- bma_design(
nSims, K0, K0, eRatesMod, rRatesMod[i+1,], meanTime, sdTime,
ppEffCrit, ppFutCrit, as.logical(futOnly), rRatesNull, rRatesMid,
minSSFut, minSSEff, minSSEnr, maxSSEnr, targSSPer, nInterim, mu0,
phi0, priorModelProbs = NULL, pmp0 = pmp0
)
Compute number of models
Description
Given a basket size and maximal number of distinct response rates, compute the number of possible models
Usage
numModels(K, P)
Arguments
K |
positive integer giving number of baskets |
P |
positive integer giving maximal number of distinct rates |
Value
integer giving number of possible models
Examples
numModels(10, 10)