Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
cache.path = 'cache/crossoverWashout/',
comment = '#>',
dpi = 300,
out.width = '100%'
)
## ----setup, echo = FALSE, message = FALSE-------------------------------------
library(TrialSimulator)
library(mvtnorm)
library(dplyr)
library(kableExtra)
## ----dadfaiq------------------------------------------------------------------
knitr::include_graphics('crossover_readout.png')
## ----rng, echo=FALSE----------------------------------------------------------
rng <- function(n, means, vcov = diag(1, 8)){
ret <- as.data.frame(rmvnorm(n, mean = means, sigma = vcov))
colnames(ret) <- c('baseline1', 'ep1',
'baseline2', 'ep2',
'baseline3', 'ep3',
'baseline4', 'ep4')
ret
}
## ----results='asis'-----------------------------------------------------------
all_endpoint_name <- c('baseline1', 'ep1',
'baseline2', 'ep2',
'baseline3', 'ep3',
'baseline4', 'ep4')
readouts <- c(baseline1 = 0, ep1 = 3,
baseline2 = 4, ep2 = 8,
baseline3 = 10, ep3 = 15,
baseline4 = 17.5, ep4 = 19.5)
eps <- endpoint(
name = all_endpoint_name,
type = rep('non-tte', 8),
readout = readouts,
generator = rng, means = rep(c(0, .5), 4)
)
arm1 <- arm(name = 'ABCD')
arm1$add_endpoints(eps)
arm1
## ----ref.label='rng', eval=FALSE----------------------------------------------
# rng <- function(n, means, vcov = diag(1, 8)){
# ret <- as.data.frame(rmvnorm(n, mean = means, sigma = vcov))
# colnames(ret) <- c('baseline1', 'ep1',
# 'baseline2', 'ep2',
# 'baseline3', 'ep3',
# 'baseline4', 'ep4')
# ret
# }
## -----------------------------------------------------------------------------
eps <- endpoint(
name = all_endpoint_name,
type = rep('non-tte', 8),
readout = readouts,
generator = rng, means = rep(c(0, .6), 4) # diff means
)
arm2 <- arm(name = 'BDAC')
arm2$add_endpoints(eps)
eps <- endpoint(
name = all_endpoint_name,
type = rep('non-tte', 8),
readout = readouts,
generator = rng, means = rep(c(0, .2), 4), vcov = diag(1.2, 8) # diff means/vcov
)
arm3 <- arm(name = 'CADB')
arm3$add_endpoints(eps)
eps <- endpoint(
name = all_endpoint_name,
type = rep('non-tte', 8),
readout = readouts,
generator = rng, means = rep(c(0, 0), 4) # diff means
)
arm4 <- arm(name = 'DCBA')
arm4$add_endpoints(eps)
## -----------------------------------------------------------------------------
accrual_rate <- data.frame(end_time = c(6, Inf),
piecewise_rate = c(10, 10))
trial <- trial(name = 'crossover-trial',
n_patients = 60,
duration = 28,
enroller = StaggeredRecruiter, accrual_rate = accrual_rate,
silent = TRUE)
trial$add_arms(sample_ratio = c(1, 1, 1, 1), arm1, arm2, arm3, arm4)
trial
## ----action_function, echo=FALSE----------------------------------------------
action <- function(trial){
locked_data <- trial$get_locked_data('final')
## omit statistical analysis
trial$save(value = 'anything', name = 'result')
## save more results for summary of simulation
# trial$save(value = ..., name = ...)
}
## -----------------------------------------------------------------------------
final <- milestone(name = 'final',
when = calendarTime(time = 25.5),
action = action)
## -----------------------------------------------------------------------------
final <- milestone(name = 'final',
when = eventNumber(endpoint = 'ep4', n = 60),
action = action)
## -----------------------------------------------------------------------------
final <- milestone(name = 'final',
when = enrollment(n = 60, min_treatment_duration = 19.5),
action = action)
## ----ref.label='action_function', eval=FALSE----------------------------------
# action <- function(trial){
# locked_data <- trial$get_locked_data('final')
# ## omit statistical analysis
#
# trial$save(value = 'anything', name = 'result')
# ## save more results for summary of simulation
# # trial$save(value = ..., name = ...)
# }
## -----------------------------------------------------------------------------
listener <- listener()
listener$add_milestones(final)
controller <- controller(trial, listener)
controller$run(n = 1, plot_event = TRUE)
## -----------------------------------------------------------------------------
output <- controller$get_output()
output %>%
kable(escape = FALSE) %>%
kable_styling(bootstrap_options = "striped",
full_width = FALSE,
position = "left") %>%
scroll_box(width = "100%")
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.