Simulate outcomes from a dual-endpoint design

1 2 3 4 |

`object` |
the |

`nsim` |
the number of simulations (default: 1) |

`seed` |
see |

`trueTox` |
a function which takes as input a dose (vector) and returns the
true probability (vector) for toxicity. Additional arguments can be supplied
in |

`trueBiomarker` |
a function which takes as input a dose (vector) and
returns the true biomarker level (vector). Additional arguments can be
supplied in |

`args` |
data frame with arguments for the |

`sigma2W` |
variance for the biomarker measurements |

`rho` |
correlation between toxicity and biomarker measurements (default: 0) |

`firstSeparate` |
enroll the first patient separately from the rest of the cohort? (not default) If yes, the cohort will be closed if a DLT occurs in this patient. |

`mcmcOptions` |
object of class |

`parallel` |
should the simulation runs be parallelized across the clusters of the computer? (not default) |

`...` |
not used |

an object of class `DualSimulations`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | ```
# Define the dose-grid
emptydata <- DataDual(doseGrid = c(1, 3, 5, 10, 15, 20, 25, 40, 50, 80, 100))
# Initialize the CRM model
model <- DualEndpointRW(mu = c(0, 1),
Sigma = matrix(c(1, 0, 0, 1), nrow=2),
sigma2betaW = 0.01,
sigma2W = c(a=0.1, b=0.1),
rho = c(a=1, b=1),
smooth="RW1")
# Choose the rule for selecting the next dose
myNextBest <- NextBestDualEndpoint(target=c(0.9, 1),
overdose=c(0.35, 1),
maxOverdoseProb=0.25)
# Choose the rule for the cohort-size
mySize1 <- CohortSizeRange(intervals=c(0, 30),
cohortSize=c(1, 3))
mySize2 <- CohortSizeDLT(DLTintervals=c(0, 1),
cohortSize=c(1, 3))
mySize <- maxSize(mySize1, mySize2)
# Choose the rule for stopping
myStopping4 <- StoppingTargetBiomarker(target=c(0.9, 1),
prob=0.5)
myStopping <- myStopping4 | StoppingMinPatients(40)
# Choose the rule for dose increments
myIncrements <- IncrementsRelative(intervals=c(0, 20),
increments=c(1, 0.33))
# Initialize the design
design <- DualDesign(model = model,
data = emptydata,
nextBest = myNextBest,
stopping = myStopping,
increments = myIncrements,
cohortSize = mySize,
startingDose = 3)
# define scenarios for the TRUE toxicity and efficacy profiles
betaMod <- function (dose, e0, eMax, delta1, delta2, scal)
{
maxDens <- (delta1^delta1) * (delta2^delta2)/((delta1 + delta2)^(delta1 + delta2))
dose <- dose/scal
e0 + eMax/maxDens * (dose^delta1) * (1 - dose)^delta2
}
trueBiomarker <- function(dose)
{
betaMod(dose, e0=0.2, eMax=0.6, delta1=5, delta2=5 * 0.5 / 0.5, scal=100)
}
trueTox <- function(dose)
{
pnorm((dose-60)/10)
}
# Draw the TRUE profiles
par(mfrow=c(1, 2))
curve(trueTox(x), from=0, to=80)
curve(trueBiomarker(x), from=0, to=80)
# Run the simulation on the desired design
# We only generate 1 trial outcome here for illustration, for the actual study
# this should be increased of course
mySims <- simulate(design,
trueTox=trueTox,
trueBiomarker=trueBiomarker,
sigma2W=0.01,
rho=0,
nsim=1,
parallel=FALSE,
seed=3,
startingDose=6,
mcmcOptions =
McmcOptions(burnin=1000,
step=1,
samples=3000))
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.