Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
cache.path = 'cache/dynamicTreatmentSwitching/',
comment = '#>',
dpi = 300,
out.width = '100%'
)
## ----setup, echo = FALSE, message = FALSE-------------------------------------
library(TrialSimulator)
library(mvtnorm)
library(kableExtra)
## ----eval=FALSE---------------------------------------------------------------
# treatment_allocator <- function(patient_data){...}
# time_selector <- function(patient_data){...}
# data_modifier <- function(patient_data){...}
#
# regimen <- regimen(treatment_allocator, time_selector, data_modifier)
## ----eval=FALSE---------------------------------------------------------------
# trial <- trial(...)
# trial$add_regime(regimen)
## ----eval=FALSE---------------------------------------------------------------
# trial <- trial(...)
# trial$add_arms(sample_ratio, soc, low_dose, high_dose)
# trial$add_regime(regimen)
## ----echo=FALSE, error=TRUE---------------------------------------------------
try({
msg <- tryCatch(
{
stop(' Member function trial$add_regimen() must be called before trial$add_arms(). ',
'A good practice is to call trial$add_regimen() immediately after trial() is executed. ')
NULL
},
error = function(e) {
cat('Error in trial$add_regimen(regimen) :\n',
e$message)
}
)
})
## ----eval=FALSE---------------------------------------------------------------
# treatment_allocator <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# switch_to <- sample(c('low', 'high', 'stay'), nrow(patient_data),
# replace = TRUE, prob = c(.3, .4, .3))
# ## placebo patients who progressed before death (pfs < os) and were
# ## assigned a dose are the switchers; the rest are simply not returned
# is_switcher <- patient_data$arm == 'placebo' &
# patient_data$pfs < patient_data$os & switch_to != 'stay'
# sw <- patient_data[is_switcher, ]
# data.frame(
# patient_id = sw$patient_id,
# new_treatment = ifelse(switch_to[is_switcher] == 'low', 'low dose', 'high dose')
# )
#
# }
## ----eval=FALSE---------------------------------------------------------------
# time_selector <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# data.frame(
# patient_id = patient_data$patient_id,
# ## all patient in patient_data progress before die
# ## thus pfs < os and can switch.
# ## See treatment_allocator()
# switch_time = patient_data$pfs
# )
#
# }
## ----eval=FALSE---------------------------------------------------------------
# time_selector <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# data.frame(
# patient_id = patient_data$patient_id,
# ## all patient in patient_data progress before die
# ## thus pfs < os and can switch.
# ## See treatment_allocator()
# switch_time = runif(nrow(patient_data), min = patient_data$pfs, max = patient_data$os)
# )
#
# }
## ----eval=FALSE---------------------------------------------------------------
# data_modifier <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# f <- ifelse(patient_data$new_treatment == 'low dose', 1.1, 1.15)
# data.frame(
# patient_id = patient_data$patient_id,
# ## other_endpoint = ...,
# os = patient_data$switch_time + f * (patient_data$os - patient_data$switch_time)
# )
#
# }
## ----eval=FALSE---------------------------------------------------------------
# treatment_allocator <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# ## low-dose non-responders switch to high dose
# sw <- patient_data[patient_data$arm == 'low dose' & patient_data$response == 0, ]
# data.frame(
# patient_id = sw$patient_id,
# new_treatment = 'high dose'
# )
#
# }
## ----eval=FALSE---------------------------------------------------------------
# time_selector <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# data.frame(
# patient_id = patient_data$patient_id,
# ## all patient in patient_data progress before die
# ## thus pfs < os and can switch
# switch_time = patient_data$response_readout
# )
#
# }
## -----------------------------------------------------------------------------
treatment_allocator <- function(patient_data){
## add break point to develop and debug
# browser()
## all placebo patients switch
sw <- patient_data[patient_data$arm == 'placebo', ]
data.frame(
patient_id = sw$patient_id,
new_treatment = 'new treatment'
)
}
## ----eval=FALSE---------------------------------------------------------------
# time_selector <- function(patient_data){
# ## add break point to develop and debug
# # browser()
# data.frame(
# patient_id = patient_data$patient_id,
# ## all patient in patient_data progress before die
# ## thus pfs < os and can switch
# switch_time = ifelse(patient_data$os <= 1, .9 * patient_data$os, patient_data$os - 1)
# )
#
# }
## ----eval=FALSE---------------------------------------------------------------
# what <- list(allocator1, allocator2, allocator3)
# when <- list(selector1, selector2, selector3)
# how <- list(modifier1, modifier2, modifier3)
#
# regimen <- regimen(what, when, how)
#
# trial <- trial(...)
# trial$add_regimen(regimen)
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.