Here the simulation study setting is defined.
id <- 1
onset <- 3
a0 <- 2
a1 <- 3
refDose <- 56
# True dose-DLT relationship
myTruth <- function(dose) {
StandLogDose <- log(dose / refDose)
plogis(a0 + a1 * StandLogDose)
}
# The conditional CDF of the PEM
if (onset == 30) {
onset <- 15
exp_cond_cdf <- function(x) {
(pexp(42 - x, 1 / onset, lower.tail = FALSE) - pexp(t_max, 1 / onset, lower.tail = FALSE)) / pexp(t_max, 1 / onset)
}
} else {
exp_cond_cdf <- function(x) {
1 - (pexp(x, 1 / onset, lower.tail = FALSE) - pexp(t_max, 1 / onset, lower.tail = FALSE)) / pexp(t_max, 1 / onset)
}
}Here the the dose escalation designs are defined: in this example the TITE-CRM is used. Similarly the code can be adapted for the rolling-CRM.
library(crmPack)
t_max <- 42
model <- TITELogisticLogNormal(
mean = c(1.33, 1.49),
cov = matrix(c(1.826, 0.0209, 0.0209, 0.0245), nrow = 2),
ref_dose = refDose
)
myIncrements <- IncrementsRelative(
intervals = c(0, 20),
increments = c(10, 3)
)
myNextBest <- NextBestMTD(
target = 0.3,
derive =
function(mtd_samples) {
mean(mtd_samples)
}
)
myStopping <- StoppingMinPatients(nPatients = 48)
mySize <- CohortSizeConst(size = 3)
emptydata <- DataDA(doseGrid = seq(from = 2, to = 50, by = 2), Tmax = t_max)
mysafetywindow <- SafetyWindowConst(c(7, 7), 7, 7)
design <- DADesign(
model = model,
increments = myIncrements,
nextBest = myNextBest,
stopping = myStopping,
cohort_size = mySize,
data = emptydata,
safetyWindow = mysafetywindow,
startingDose = 8
)In order to obtain stable results, increase the simulation parameters appropriately (step, samples, nsim).