Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(BayesianPlatformDesignTimeTrend)
## -----------------------------------------------------------------------------
ntrials = 1000 # Number of trial replicates
ns = seq(120,600,120) # Sequence of total number of accrued patients at each interim analysis
null.reponse.prob = 0.4
alt.response.prob = 0.6
# We investigate the type I error rate for different time trend strength
null.scenario = matrix(
c(
null.reponse.prob,
null.reponse.prob,
null.reponse.prob,
null.reponse.prob
),
nrow = 1,
ncol = 4,
byrow = T
)
# alt.scenario = matrix(c(null.reponse.prob,null.reponse.prob,null.reponse.prob,null.reponse.prob,
# null.reponse.prob,alt.response.prob,null.reponse.prob,null.reponse.prob,
# null.reponse.prob,alt.response.prob,alt.response.prob,null.reponse.prob,
# null.reponse.prob,alt.response.prob,alt.response.prob,alt.response.prob), nrow=3, ncol = 4,byrow=T)
model = "tlr" #logistic model
max.ar = 0.75 #limit the allocation ratio for the control group (1-max.ar < r_control < max.ar)
#------------Select the data generation randomisation methods-------
rand.type = "Urn" # Urn design
max.deviation = 3 # The recommended value for the tuning parameter in the Urn design
# Require multiple cores for parallel running
cl = 2
# Set the model we want to use and the time trend effect for each model used.
# Here the main model will be used twice for two different strength of time trend c(0,0,0,0) and c(1,1,1,1) to investigate how time trend affect the evaluation metrics in BAR setting.
# Then the main + stage_continuous model which is the treatment effect + stage effect model will be applied for strength equal c(1,1,1,1) to investigate how the main + stage effect model improve the evaluation metrics.
reg.inf = c("main", "main", "main + stage_continuous")
trend.effect = matrix(
c(0, 0, 0, 0, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1),
ncol = 4,
nrow = 3,
byrow = T
)
#
cutoffearly = matrix(rep(0.994, dim(null.scenario)[1]), ncol = 1)
K = dim(null.scenario)[2]
print(
paste0(
"Start trial simulation. This is a ",
K,
"-arm trial simulation. There are one null scenario and ",
K - 1 ,
" alternative scenarios. There are ",
K ,
" rounds."
)
)
cutoffindex = 1
## ----eval=FALSE---------------------------------------------------------------
# result = {
#
# }
# OPC_null = {
#
# }
# for (i in 1:dim(null.scenario)[1]) {
# trendindex = 1
# for (j in 1:length(reg.inf)){
# restlr = Trial.simulation(
# ntrials = ntrials,
# # Number of trial replicates
# trial.fun = simulatetrial,
# # Call the main function
# input.info = list(
# response.probs = null.scenario[cutoffindex, ],
# #The scenario vector in this round
# ns = ns,
# # Sequence of total number of accrued patients at each interim analysis
# max.ar = max.ar,
# #limit the allocation ratio for the control group (1-max.ar < r_control < max.ar)
# rand.type = rand.type,
# # Which randomisation methods in data generation.
# max.deviation = max.deviation,
# # The recommended value for the tuning parameter in the Urn design
# model.inf = list(
# model = model,
# #Use which model?
# ibb.inf = list(
# #independent beta-binomial model which can be used only for no time trend simulation
# pi.star = 0.5,
# # beta prior mean
# pess = 2,
# # beta prior effective sample size
# betabinomialmodel = ibetabinomial.post # beta-binomial model for posterior estimation
# ),
# tlr.inf = list(
# beta0_prior_mu = 0,
# # Stan logistic model t prior location
# beta1_prior_mu = 0,
# # Stan logistic model t prior location
# beta0_prior_sigma = 2.5,
# # Stan logistic model t prior sigma
# beta1_prior_sigma = 2.5,
# # Stan logistic model t prior sigma
# beta0_df = 7,
# # Stan logistic model t prior degree of freedom
# beta1_df = 7,
# # Stan logistic model t prior degree of freedom
# reg.inf = reg.inf[trendindex],
# # The model we want to use
# variable.inf = "Fixeffect" # Use fix effect logistic model
# )
# ),
# Stopbound.inf = Stopboundinf(
# Stop.type = "Early-Pocock",
# # Use Pocock like early stopping boundary
# Boundary.type = "Symmetric",
# # Use Symmetric boundary where cutoff value for efficacy boundary and futility boundary sum up to 1
# cutoff = c(cutoffearly[cutoffindex, 1], 1 - cutoffearly[cutoffindex, 1]) # The cutoff value for stopping boundary
# ),
# Random.inf = list(
# Fixratio = FALSE,
# # Do not use fix ratio allocation
# Fixratiocontrol = NA,
# # Do not use fix ratio allocation
# BARmethod = "Thall",
# # Use Thall's Bayesian adaptive randomisation approach
# Thall.tuning.inf = list(tuningparameter = "Fixed", fixvalue = 1) # Specified the tunning parameter value for fixed tuning parameter
# ),
# trend.inf = list(
# trend.type = "step",
# # Linear time trend pattern
# trend.effect = trend.effect[trendindex, ],
# # Stength of time trend effect
# trend_add_or_multip = "mult" # Multiplicative time trend effect on response probability
# )
# ),
# cl = 2 # 2 cores required
# )
#
# trendindex = trendindex + 1
# # The result list can be used for plotting and the OPC table is the summary evaluaton metrics for each scenario
# result = c(result, restlr$result)
# OPC_null = rbind(OPC_null, restlr$OPC)
# }
# cutoffindex = cutoffindex + 1
# }
## -----------------------------------------------------------------------------
print("Finished null scenario study")
save_data = FALSE
if (isTRUE(save_data)) {
save(result, file = restlr$Nameofsaveddata$nameData)
save(OPC_null, file = restlr$Nameofsaveddata$nameTable)
}
## -----------------------------------------------------------------------------
# Characteristic table
print(OPC_null)
## -----------------------------------------------------------------------------
ntrials = 1000 # Number of trial replicates
ns = seq(120,600,120) # Sequence of total number of accrued patients at each interim analysis
null.reponse.prob = 0.4
alt.response.prob = 0.6
# We investigate the type I error rate for different time trend strength
alt.scenario = matrix(
c(
null.reponse.prob,
alt.response.prob,
null.reponse.prob,
null.reponse.prob,
null.reponse.prob,
alt.response.prob,
alt.response.prob,
null.reponse.prob,
null.reponse.prob,
alt.response.prob,
alt.response.prob,
alt.response.prob
),
nrow = 3,
ncol = 4,
byrow = T
)
model = "tlr" #logistic model
max.ar = 0.75 #limit the allocation ratio for the control group (1-max.ar < r_control < max.ar)
#------------Select the data generation randomisation methods-------
rand.type = "Urn" # Urn design
max.deviation = 3 # The recommended value for the tuning parameter in the Urn design
# Require multiple cores for parallel running
cl = 2
# Set the model we want to use and the time trend effect for each model used.
# Here the main model will be used twice for two different strength of time trend c(0,0,0,0) and c(1,1,1,1) to investigate how time trend affect the evaluation metrics in BAR setting.
# Then the main + stage_continuous model which is the treatment effect + stage effect model will be applied for strength equal c(1,1,1,1) to investigate how the main + stage effect model improve the evaluation metrics.
reg.inf = c("main + stage_continuous")
trend.effect = matrix(c(0.1, 0.1, 0.1, 0.1),
ncol = 4,
nrow = 1,
byrow = T)
#
cutoffearly = matrix(rep(0.994, dim(alt.scenario)[1]), ncol = 1)
K = dim(alt.scenario)[2]
print(
paste0(
"Start trial simulation. This is a ",
K,
"-arm trial simulation. There are one null scenario and ",
K - 1 ,
" alternative scenarios. There are ",
K ,
" rounds."
)
)
cutoffindex = 1
## ----eval=FALSE---------------------------------------------------------------
#
# result = {
#
# }
# OPCalt = {
#
# }
# for (i in 1:dim(alt.scenario)[1]) {
# trendindex = 1
# for (j in 1:length(reg.inf)){
# restlr = Trial.simulation(
# ntrials = ntrials,
# # Number of trial replicates
# trial.fun = simulatetrial,
# # Call the main function
# input.info = list(
# response.probs = alt.scenario[cutoffindex, ],
# #The scenario vector in this round
# ns = ns,
# # Sequence of total number of accrued patients at each interim analysis
# max.ar = max.ar,
# #limit the allocation ratio for the control group (1-max.ar < r_control < max.ar)
# rand.type = rand.type,
# # Which randomisation methods in data generation.
# max.deviation = max.deviation,
# # The recommended value for the tuning parameter in the Urn design
# model.inf = list(
# model = model,
# #Use which model?
# ibb.inf = list(
# #independent beta-binomial model which can be used only for no time trend simulation
# pi.star = 0.5,
# # beta prior mean
# pess = 2,
# # beta prior effective sample size
# betabinomialmodel = ibetabinomial.post # beta-binomial model for posterior estimation
# ),
# tlr.inf = list(
# beta0_prior_mu = 0,
# # Stan logistic model t prior location
# beta1_prior_mu = 0,
# # Stan logistic model t prior location
# beta0_prior_sigma = 2.5,
# # Stan logistic model t prior sigma
# beta1_prior_sigma = 2.5,
# # Stan logistic model t prior sigma
# beta0_df = 7,
# # Stan logistic model t prior degree of freedom
# beta1_df = 7,
# # Stan logistic model t prior degree of freedom
# reg.inf = reg.inf[trendindex],
# # The model we want to use
# variable.inf = "Fixeffect" # Use fix effect logistic model
# )
# ),
# Stopbound.inf = Stopboundinf(
# Stop.type = "Early-Pocock",
# # Use Pocock like early stopping boundary
# Boundary.type = "Symmetric",
# # Use Symmetric boundary where cutoff value for efficacy boundary and futility boundary sum up to 1
# cutoff = c(cutoffearly[cutoffindex, 1], 1 - cutoffearly[cutoffindex, 1]) # The cutoff value for stopping boundary
# ),
# Random.inf = list(
# Fixratio = FALSE,
# # Do not use fix ratio allocation
# Fixratiocontrol = NA,
# # Do not use fix ratio allocation
# BARmethod = "Thall",
# # Use Thall's Bayesian adaptive randomisation approach
# Thall.tuning.inf = list(tuningparameter = "Fixed", fixvalue = 1) # Specified the tunning parameter value for fixed tuning parameter
# ),
# trend.inf = list(
# trend.type = "step",
# # Linear time trend pattern
# trend.effect = trend.effect[trendindex, ],
# # Stength of time trend effect
# trend_add_or_multip = "mult" # Multiplicative time trend effect on response probability
# )
# ),
# cl = 2 # 2 cores required
# )
# trendindex = trendindex + 1
# # The result list can be used for plotting and the OPC table is the summary evaluaton metrics for each scenario
# result = c(result, restlr$result)
# OPC_alt = rbind(OPC_alt, restlr$OPC)
# }
# cutoffindex = cutoffindex + 1
# }
## -----------------------------------------------------------------------------
print("Finished alternative scenario study")
save_data = FALSE
if (isTRUE(save_data)) {
save(result, file = restlr$Nameofsaveddata$nameData)
save(OPC_alt, file = restlr$Nameofsaveddata$nameTable)
}
## -----------------------------------------------------------------------------
# Characteristic table
print(OPC_alt)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.