Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(BayesianPlatformDesignTimeTrend)
## ----eval=FALSE---------------------------------------------------------------
#
# ntrials = 1000 # Number of trial replicates
# ns = seq(120, 600, 60) # Sequence of total number of accrued patients at each interim analysis
# null.reponse.prob = 0.15
# alt.response.prob = 0.35
#
# # 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.85 #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 = "main"
# trend.effect = c(0,0,0,0)
#
# result = {
#
# }
# OPC = {
#
# }
# K = dim(null.scenario)[2]
# cutoffindex = 1
# trendindex = 1
#
# cutoff.information=demo_Cutoffscreening.GP (
# ntrials = ntrials,
# # Number of trial replicates
# trial.fun = simulatetrial,
# # Call the main function
# grid.inf = list(
# start.length = 10,
# grid.min = NULL,
# grid.max = NULL,
# confidence.level = 0.95,
# grid.length = 5000,
# change.scale = FALSE,
# noise = T,
# errorrate = 0.1,
# simulationerror = 0.01,
# iter.max = 15,
# plotornot = FALSE),
# # Set up the cutoff grid for screening. The start grid has three elements. The extended grid has fifteen cutoff value under investigation
# input.info = list(
# response.probs = null.scenario[1,],
# #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,
# # The model we want to use
# variable.inf = "Fixeffect" # Use fix effect logistic model
# )
# ),
# Stop.type = "Early-OBF",
# # 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
# 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 = "Unfixed", fixvalue = 1) # Specified the tunning parameter value for fixed tuning parameter
# ),
# trend.inf = list(
# trend.type = "linear",
# # Linear time trend pattern
# trend.effect = trend.effect,
# # Stength of time trend effect
# trend_add_or_multip = "mult" # Multiplicative time trend effect on response probability
# )
# ),
# cl = 2
# )
#
## -----------------------------------------------------------------------------
library(ggplot2)
# Details of grid
optimdata=optimdata_sym
# Recommend cutoff at each screening round
nextcutoff = optimdata$next.cutoff
prediction = optimdata$prediction
cutoff=optimdata$cutoff
tpIE=optimdata$tpIE
cutoff=cutoff[1:sum(!is.na(tpIE))]
tpIE=tpIE[1:sum(!is.na(tpIE))]
GP.res = optimdata
prediction = data.frame(yhat = GP.res$prediction$yhat.t1E,
sd = matrix(GP.res$prediction$sd.t1E,ncol=1),
qup = GP.res$prediction$qup.t1E,
qdown = GP.res$prediction$qdown.t1E,
xgrid = GP.res$prediction$xgrid)
GPplot=ggplot(data = prediction) +
geom_ribbon(aes(x = xgrid, ymin = qdown, ymax = qup),col="#f8766d", alpha = 0.5,linetype = 2) +
geom_line(aes(xgrid, yhat),col = "#f8766d") +
geom_point(aes(cutoff[1:sum(!is.na(tpIE))], tpIE[1:sum(!is.na(tpIE))]),
data = data.frame(tpIE=tpIE,cutoff=cutoff),col = "#00bfc4") +
geom_point(aes(nextcutoff, 0.1),
data = data.frame(tpIE=tpIE,cutoff=cutoff),col = "#f8766d") +
geom_hline(yintercept = 0.1,linetype = 2) +
geom_text(aes(x=1,y=0.15,label=paste0("FWER target is 0.1")),hjust=0,vjust=1)+
geom_vline(xintercept = nextcutoff, linetype = 2) +
geom_text(aes(x=6,y=0.8,label=paste0("Next cutoff value is ",round(nextcutoff,3))))+
theme_minimal()+ylab("FWER")+xlab("Cutoff value of the OBF boundary (c*)")+
geom_point(aes(nextcutoff, 0.1),
data = data.frame(tpIE=tpIE,cutoff=cutoff),col = "#f8766d") +
theme(plot.background = element_rect(fill = "#e6dfba"))
print(GPplot)
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.