Learn R Programming

MCPModBC (version 1.1)

data_generator: Data Generator

Description

It generates data for a dose-finding trial.

Usage

data_generator(doses, sample.size, distr, parm, 
	censoring.rate = NULL)

Value

a data frame of dimension [length(doses)\(\times\)sample.size] \(\times\) 3 when distr = "weibull"

containing time-to-event, censoring indicator and dose.

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 distr = "weibull".

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].

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

Run this code
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

Run the code above in your browser using DataLab