data_generator {MCPModBC} | R Documentation |
Data Generator
Description
It generates data for a dose-finding trial.
Usage
data_generator(doses, sample.size, distr, parm,
censoring.rate = NULL)
Arguments
doses |
a numeric vector indicating the doses that will be considered in the clinical trial. |
sample.size |
a numeric value indicating the sample size per dose in the clinical trial. |
distr |
a character value indicating the distribution of the response variable. Currently, the only option available is 'weibull'. |
parm |
a named list of true values for the simulation. See mode in Details. |
censoring.rate |
a numeric value between 0 and 1 indicating the censoring rate when generated data. It is required when |
Details
If distr = "weibull"
, the list parm
should contain two components - lambda
and sigma
- that are
the scale and shape parameters in the following parametrization of the Weibull distribution:
f(t;\lambda,\sigma) = \frac{1}{\sigma\lambda^{1/\sigma}} t^{1/\sigma-1} \exp\left\{ -\left( t/\lambda \right)^{1/\sigma} \right\}, \ t > 0,
with hazard rate given by
h(t) = \frac{1}{\lambda^{1/\sigma}\sigma}t^{1/\sigma - 1}
and regression structure
\log(\lambda_i) = d_i\beta_i.
where \log(\lambda_i)
represents the model effect for dose i, doses[i]
.
Value
a data frame of dimension [length(doses)\times
sample.size] \times
3 when distr = "weibull"
containing time-to-event, censoring indicator and dose.
References
Diniz, Márcio A. and Gallardo, Diego I. and Magalhães, Tiago M. (2023). Improved inference for MCP-Mod approach for time-to-event endpoints with small sample sizes. arXiv <doi.org/10.48550/arXiv.2301.00325>
Examples
library(DoseFinding)
library(MCPModBC)
## doses scenarios
doses <- c(0, 5, 25, 50, 100)
nd <- length(doses)
# median survival time for placebo dose
mst.control <- 4
# shape parameter
sigma.true <- 0.5
# maximum hazard ratio between active dose and placebo dose
hr.ratio <- 4
# minimum hazard ratio between active dose and placebo dose
hr.Delta <- 2
# hazard rate for placebo dose
placEff <- log(mst.control/(log(2)^sigma.true))
# maximum hazard rate for active dose
maxEff <- log((mst.control*(hr.ratio^sigma.true))/(log(2)^sigma.true))
# minimum hazard rate for active dose
minEff.Delta <- log((mst.control*(hr.Delta^sigma.true))/(log(2)^sigma.true))
Delta <- (minEff.Delta - placEff)
## MCP Parameters
emax <- guesst(d = doses[4], p = 0.5, model="emax")
exp <- guesst(d = doses[4], p = 0.1, model="exponential", Maxd = doses[nd])
logit <- guesst(d = c(doses[3], doses[4]), p = c(0.1,0.8), "logistic",
Maxd= doses[nd])
betam <- guesst(d = doses[2], p = 0.3, "betaMod", scal=120, dMax=50,
Maxd= doses[nd])
models.candidate <- Mods(emax = emax, linear = NULL,
exponential = exp, logistic = logit,
betaMod = betam, doses = doses,
placEff = placEff, maxEff = (maxEff- placEff))
plot(models.candidate)
## True Model
model.true <- "emax"
response <- model_response(doses = doses,
distr = "weibull",
model.true = model.true,
models.candidate = models.candidate)
lambda.true <- response$lambda
parm <- list(lambda = lambda.true, sigma = sigma.true)
## Scenario: Censoring 10%
censoring.rate <- 0.1
dt <- data_generator(doses = doses,
sample.size = 20,
distr = "weibull",
parm = parm,
censoring.rate = censoring.rate)
## Print data
#dt