Title: | Multi-Armed Bayesian Ordinal Utility-Based Sequential Trial |
---|---|
Description: | Conducts and simulates the MABOUST design, including making interim decisions to stop a treatment for inferiority or stop the trial early for superiority or equivalency. |
Authors: | Andrew Chapple |
Maintainer: | Andrew Chapple <[email protected]> |
License: | GPL-2 |
Version: | 1.0.1 |
Built: | 2024-12-13 06:55:16 UTC |
Source: | CRAN |
Returns the superiority or futility cutoff during a MABOUST trial.
CUTOFF(Delta, n, nTreat, nCat, gamma)
CUTOFF(Delta, n, nTreat, nCat, gamma)
Delta |
Value of |
n |
Current sample size in the trial. |
nTreat |
Number of active treatments in consideration, i.e. 1,...,K. |
nCat |
Number of ordinal outcome categories, i.e. J. |
gamma |
Length 3 vector of cutoff parameters. |
The set of active treatments to continue, an optimal treatment, or a set of equally optimal treatments. Also reports posterior mean utilities and ordinal outcome probabilities as well as pairwise comparisons of utility similarity, when appropriate.
[1] Chapple and Clement (2020), MABOUST: A Multi-Armed Bayesian Ordinal Outcome Utility-Based Sequential Trial. Submitted.
###Trial parameters nCat = 6 nTreat = 3 Delta=5 n=300 ###Design parameters gamma= c(.5, .05, .05) CUTOFF(Delta,n,nTreat,nCat,gamma)
###Trial parameters nCat = 6 nTreat = 3 Delta=5 n=300 ###Design parameters gamma= c(.5, .05, .05) CUTOFF(Delta,n,nTreat,nCat,gamma)
Performs posterior sampling for the MABOUST design and determines whether the trial should continue and what treatment(s) are optimal.
GetProbs(nCat, theta)
GetProbs(nCat, theta)
nCat |
Number of ordinal outcome categories, i.e. J. |
theta |
Vector of (J-1)*K specific parameters for the MABOUST model. One row of output from MCMC_MABOUST function. |
Estimated treatment-specific outcome probabilities for a given vector.
Returns the superiority or futility cutoff during a MABOUST trial.
GetScenario(nTreat, RANGES, RANGES1, XPROB)
GetScenario(nTreat, RANGES, RANGES1, XPROB)
nTreat |
Number of active treatments in consideration, i.e. 1,...,K. |
RANGES |
J-list containing ranges of plausible marginal treatment outcome probabilities. |
RANGES1 |
J-list containing ranges of plausible covariate adjusted outcome probabilities. |
XPROB |
List of matrices containing discrete values various covariates can take, along with their probabilities. |
Randomly generate marginal ordinal outcome probabilities for each treatment and a covariate vector.
[1] Chapple and Clement (2020), MABOUST: A Multi-Armed Bayesian Ordinal Outcome Utility-Based Sequential Trial. Submitted.
###Trial parameters nTreat = 3 nCat=6 ###Marginal Probability Ranges RANGES = as.list(rep(NA,nCat)) RANGES[[1]]=c(.1,.35) RANGES[[2]]=c(.1,.3) RANGES[[3]]=c(.4,.7) RANGES[[4]]=c(0,.1) RANGES[[5]]=c(.1,.3) RANGES[[6]]=c(.0,.1) ###Covariate Adjusted Probability Ranges RANGES1=RANGES RANGES1[[1]]=c(0,.5) RANGES1[[2]]=c(0,.5) RANGES1[[3]]=c(0,.8) RANGES1[[4]]=c(0,.45) RANGES1[[5]]=c(0,.45) RANGES1[[6]]=c(0,.30) XPROB = as.list(rep(NA,3)) XPROB[[1]]=rbind(0:10,round(dpois(0:10,2),2)) ###CCI XPROB[[2]]=rbind(c(-1,0,1),c(.5,.4,.1)) ###O2 Status XPROB[[3]]=rbind(c(-2,-1,0,1),c(.27,.38,.18,.17)) GetScenario(nTreat,RANGES,RANGES1, XPROB)
###Trial parameters nTreat = 3 nCat=6 ###Marginal Probability Ranges RANGES = as.list(rep(NA,nCat)) RANGES[[1]]=c(.1,.35) RANGES[[2]]=c(.1,.3) RANGES[[3]]=c(.4,.7) RANGES[[4]]=c(0,.1) RANGES[[5]]=c(.1,.3) RANGES[[6]]=c(.0,.1) ###Covariate Adjusted Probability Ranges RANGES1=RANGES RANGES1[[1]]=c(0,.5) RANGES1[[2]]=c(0,.5) RANGES1[[3]]=c(0,.8) RANGES1[[4]]=c(0,.45) RANGES1[[5]]=c(0,.45) RANGES1[[6]]=c(0,.30) XPROB = as.list(rep(NA,3)) XPROB[[1]]=rbind(0:10,round(dpois(0:10,2),2)) ###CCI XPROB[[2]]=rbind(c(-1,0,1),c(.5,.4,.1)) ###O2 Status XPROB[[3]]=rbind(c(-2,-1,0,1),c(.27,.38,.18,.17)) GetScenario(nTreat,RANGES,RANGES1, XPROB)
Performs posterior sampling for the MABOUST design and determines whether the trial should continue and what treatment(s) are optimal.
MABOUST( Y, T1, X, ACTIVE, FUTILITY, nTreat, nCat, UT, DeltaVEC, gamma, PSPIKE, ADJ, B )
MABOUST( Y, T1, X, ACTIVE, FUTILITY, nTreat, nCat, UT, DeltaVEC, gamma, PSPIKE, ADJ, B )
Y |
Ordinal Outcome Vector, labeled 1,...,J |
T1 |
Treatment Indicator, labeled 1,...,K. |
X |
Matrix of patient covariates. |
ACTIVE |
Binary indicator of active treatments. This vector must be length K, and have a 1 for each entry corresponding to an active treatment and 0 otherwise. |
FUTILITY |
Binary indicator of whether a futility decision will be allowed. |
nTreat |
Number of treatments in consideration, i.e. K. |
nCat |
Number of ordinal outcome categories, i.e. J. |
UT |
Vector of numerical utility scores to give outcomes 1,...,J. |
DeltaVEC |
Vector of |
gamma |
Length 3 vector of cutoff parameters. |
PSPIKE |
Prior probability of a pairwise null. PSPIKE=1 means no clustering is possible. |
ADJ |
Integer for whether or not we should adjust for covariates. |
B |
Number of MCMC iterations to perform. |
The set of active treatments to continue, an optimal treatment, or a set of equally optimal treatments. Also reports posterior mean utilities and ordinal outcome probabilities as well as pairwise comparisons of utility similarity, when appropriate.
[1] Chapple and Clement (2020), MABOUST: A Multi-Armed Bayesian Ordinal Outcome Utility-Based Sequential Trial. Submitted.
##Clinical Parameters nCat = 6 nTreat = 3 UT = c(0,10,20,80,90,100) DeltaVEC = c(5,10) ###Which treatments are active? ACTIVE = c(1,0,1) ###Treatments 1, 3 are active FUTILITY = 1 ###Futility look is allowed. ###Design parameters gamma= c(.5, .05, .05) PSPIKE = .9 set.seed(1) ##Generate Random Data n=300 Y=sample(1:nCat,n,replace=TRUE) T1 = sample(1:nTreat,n,replace=TRUE) X=matrix(rnorm(n*2),ncol=2) ###Number of iterations B=100 PSPIKE = .9 ADJ = 1 MABOUST(Y, T1, X, ACTIVE, FUTILITY, nTreat, nCat, UT, DeltaVEC, gamma, PSPIKE, ADJ,B )
##Clinical Parameters nCat = 6 nTreat = 3 UT = c(0,10,20,80,90,100) DeltaVEC = c(5,10) ###Which treatments are active? ACTIVE = c(1,0,1) ###Treatments 1, 3 are active FUTILITY = 1 ###Futility look is allowed. ###Design parameters gamma= c(.5, .05, .05) PSPIKE = .9 set.seed(1) ##Generate Random Data n=300 Y=sample(1:nCat,n,replace=TRUE) T1 = sample(1:nTreat,n,replace=TRUE) X=matrix(rnorm(n*2),ncol=2) ###Number of iterations B=100 PSPIKE = .9 ADJ = 1 MABOUST(Y, T1, X, ACTIVE, FUTILITY, nTreat, nCat, UT, DeltaVEC, gamma, PSPIKE, ADJ,B )
Obtains posterior samples from the MABOUST design for use in trial decision making. Performs posterior sampling for the MABOUST design and determines whether the trial should continue and what treatment(s) are optimal.
MCMC_MABOUST(Y, T, X, B, NTreat, NOUT, PSPIKE, ADJ)
MCMC_MABOUST(Y, T, X, B, NTreat, NOUT, PSPIKE, ADJ)
Y |
Ordinal Outcome Vector, labeled 1,...,J |
T |
Treatment Indicator, labeled 1,...,K. |
X |
Matrix of patient covariates. |
B |
Number of MCMC iterations to perform. |
NTreat |
Number of treatments in consideration, i.e. K. |
NOUT |
Number of ordinal outcome categories, i.e. J. |
PSPIKE |
Prior probability of a pairwise null. PSPIKE=1 means no clustering is possible. |
ADJ |
Integer for whether or not we should adjust for covariates. |
Posterior samples for use in the MABOUST design.
Simulates trial replicates of the MABOUST trial and reports Operating Characteristics (OCs).
SimMABOUST( nSims, NLOOK, nTreat, nCat, UT, DeltaVEC, gamma, PSPIKE, ADJ, B, PROBS, Beta, XPROB )
SimMABOUST( nSims, NLOOK, nTreat, nCat, UT, DeltaVEC, gamma, PSPIKE, ADJ, B, PROBS, Beta, XPROB )
nSims |
Number of trial replications to complete. |
NLOOK |
Vector containing how many patients should be evaluated before each interim decision. |
nTreat |
Number of treatments in consideration, i.e. K. |
nCat |
Number of ordinal outcome categories, i.e. J. |
UT |
Vector of numerical utility scores to give outcomes 1,...,J. |
DeltaVEC |
Vector of |
gamma |
Length 3 vector of cutoff parameters. |
PSPIKE |
Prior probability of a pairwise null effect. |
ADJ |
Binary indicator of whether covariate adjustment is used. |
B |
Number of MCMC iterations to perform. |
PROBS |
K-list of J-vectors containing ordinal outcome probabilities. |
Beta |
Covariate Effect Vector on Outcome. |
XPROB |
List of matrices containing discrete values various covariates can take, along with their probabilities. |
The set of active treatments to continue, an optimal treatment, or a set of equally optimal treatments. Also reports posterior mean utilities and ordinal outcome probabilities as well as pairwise comparisons of utility similarity, when appropriate.
Chapple, A.G., Bennani, Y., Clement, M. (2020). "MABOUST: A Multi-Armed Bayesian Ordinal Outcome Utility-Based Sequential Trial". Submitted.
##Clinical Parameters nCat = 6 nTreat = 3 UT = c(0,10,20,80,90,100) ###Utilities DeltaVEC = c(5,10) ###Vector of deltas to try NLOOK = c(20,50) ###Interim Looks ###Which treatments are active? ACTIVE = c(1,0,1) ###Treatments 1, 3 are active FUTILITY = 1 ###Futility look is allowed. ###Design parameters gamma= c(.5, .05, .05) PSPIKE = .9 set.seed(1) ##Generate Random Data n=300 Y=sample(1:nCat,n,replace=TRUE) T1 = sample(1:nTreat,n,replace=TRUE) XPROB = as.list(rep(NA,3)) XPROB[[1]]=rbind(0:10,round(dpois(0:10,2),2)) ###CCI XPROB[[2]]=rbind(c(-1,0,1),c(.5,.4,.1)) ###O2 Status XPROB[[3]]=rbind(c(-2,-1,0,1),c(.27,.38,.18,.17)) Beta = ###Number of iterations B=100 ##Get Simulation Parameters #' ##Get Simulation Parameters PROBS = as.list(rep(NA,3)) PROBS[[1]]=c(.33,.11,.42,.02,.11,.01) PROBS[[2]]=c(.24,.11,.48,.05,.11,.01) PROBS[[3]]=c(.14, .20, .48, .03, .12, .03) Beta=c(-.13, -.07, -.10) nSims=1 ##Number of sims to run ADJ=1 SimMABOUST(nSims,NLOOK, nTreat,nCat, UT, DeltaVEC,gamma,PSPIKE,ADJ, B, PROBS, Beta, XPROB)
##Clinical Parameters nCat = 6 nTreat = 3 UT = c(0,10,20,80,90,100) ###Utilities DeltaVEC = c(5,10) ###Vector of deltas to try NLOOK = c(20,50) ###Interim Looks ###Which treatments are active? ACTIVE = c(1,0,1) ###Treatments 1, 3 are active FUTILITY = 1 ###Futility look is allowed. ###Design parameters gamma= c(.5, .05, .05) PSPIKE = .9 set.seed(1) ##Generate Random Data n=300 Y=sample(1:nCat,n,replace=TRUE) T1 = sample(1:nTreat,n,replace=TRUE) XPROB = as.list(rep(NA,3)) XPROB[[1]]=rbind(0:10,round(dpois(0:10,2),2)) ###CCI XPROB[[2]]=rbind(c(-1,0,1),c(.5,.4,.1)) ###O2 Status XPROB[[3]]=rbind(c(-2,-1,0,1),c(.27,.38,.18,.17)) Beta = ###Number of iterations B=100 ##Get Simulation Parameters #' ##Get Simulation Parameters PROBS = as.list(rep(NA,3)) PROBS[[1]]=c(.33,.11,.42,.02,.11,.01) PROBS[[2]]=c(.24,.11,.48,.05,.11,.01) PROBS[[3]]=c(.14, .20, .48, .03, .12, .03) Beta=c(-.13, -.07, -.10) nSims=1 ##Number of sims to run ADJ=1 SimMABOUST(nSims,NLOOK, nTreat,nCat, UT, DeltaVEC,gamma,PSPIKE,ADJ, B, PROBS, Beta, XPROB)