Description Usage Arguments Author(s) References See Also Examples
It starts the process of simulations for a required number of simulated trials and return NULL. A dataframe is saved in the url named as "save_name" with the number of rows equals to the number of simulations lines and 26 columns containing the different estimates, the selected dose of each trial, etc.
1 2 3 4 | simulation(stanModel, scenarioTox, scenarioEff, nbSubjects,
nbSimu, skeletonTox, skeletonEff, targetTox, targetEff,
cohortSize, startingDose, sd = NULL, mu,
adaptivePrior, saveName)
|
stanModel |
A compiled STAN model. |
scenarioTox |
Toxicity scenario for simulations, with the probability of toxicity for each dose; must be a vector of length the number of doses. |
scenarioEff |
Efficacy scenario for simulations; must be a vector of length the number of doses. |
nbSubjects |
The maximum number of allocated patients; must be an integer. |
nbSimu |
The number of simulated trials; must be an integer. |
skeletonTox |
The skeleton of toxicity for the BMA bivariate CRM or the bivariate CRM; must be a dataframe with the number of rows corresponding to the number of doses and the number of columns corresponding to the number of working models for toxicity. |
skeletonEff |
The skeleton of efficacy for the BMA bivariate CRM or the bivariate CRM; must be a dataframe with the number of rows corresponding to the number of doses and the number of columns corresponding to the number of working models for efficacy. |
targetTox |
Target/threshold of toxicity; must be a double. |
targetEff |
Target/threshold of efficacy; must be a double. |
cohortSize |
The size of the cohorts for the 3+3 based algorithm before kickoff of the CRM; must be an integer. |
startingDose |
First dose to be assigned; must be an integer. |
sd |
The standard deviation; defaults to NULL. |
mu |
The mean value which using the model. |
adaptivePrior |
TRUE if you want to use as a prior an adaptive prior; FALSE otherwise. |
saveName |
The name of the RData that simulation will be stored; must be a string. |
Artemis Toumazi artemis.toumazi@gmail.com, Caroline Petit caroline.petit@crc.jussieu.fr, Sarah Zohar sarah.zohar@inserm.fr
Petit, C., et al, (2016) Unified approach for extrapolation and bridging of adult information in early phase dose-finding paediatric studies, Statistical Methods in Medical Research, <doi:10.1177/0962280216671348>.
Zohar, S., et al, (2011) An approach to meta-analysis of dose-finding studies, Statistics in Medicine.
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
## Not run:
library("rstan")
adaptivePrior <- TRUE
targetTox <- 0.25 # target of toxicity
targetEff <- 0.20 # target of efficacy
####### Skeleton ###########
skeleton_tox1 <- c(0.10, 0.21, 0.33, 0.55, 0.76)
skeleton_tox2 <- c(0.21, 0.33, 0.55, 0.76, 0.88)
skeleton_tox3 <- c(0.05, 0.10, 0.21, 0.33, 0.55)
skeleton_tox4 <- c(0.025, 0.05, 0.1, 0.21, 0.33)
skeleton_tox5 <- c(0.0125, 0.025, 0.05, 0.1, 0.21)
skeleton_eff <- c(0.04937516, 0.20496890, 0.43388003, 0.64409781, 0.79313693)
skeleton_tox <- data.frame(skeleton_tox1, skeleton_tox2, skeleton_tox3,
skeleton_tox4, skeleton_tox5)
skeleton_eff <- data.frame(skeleton_eff, skeleton_eff, skeleton_eff,
skeleton_eff, skeleton_eff)
########## Priors ###########
priorModel <- list(rep(1/5,5), 0.001)
sd <- 0.65
mu <- -0.34
####### Trial settings #############
startingDose <- 1
nbSubjects <- 15
cohortSize <- 3
####### Number of simulation desired ###########
nbSimu <- 10
################# CRM model ################
############# Prior Normal #################
stancode <- 'data {
int <lower = 0> J; //nb of patients
int <lower = 0> K; // nb of doses and dose reference
real r[K]; // skeleton for tox - K doses
real q[K]; // skeleton for efficacy - K doses
int y[J]; // toxicity of patient j
int v[J]; // efficacy of patient j
int d[J]; // dose received by patient j
real moy; // mean for the normal prior of toxicity
real standardError; //standard error of the normal prior of toxicity
}
parameters {
real <lower = 0> alpha;
real <lower = 0> beta;
}
transformed parameters{
real <lower = 0, upper = 1> varphi[K];
// marginal probability of toxicity for dose k
real <lower = 0, upper = 1> psi[K];
// marginal probability of efficacy for dose k
// defining the marginal probabilities for each value of a and b for each dose
real p01[K]; // tox = 0, eff = 1
real p10[K]; // tox = 1, eff = 0
real p11[K]; // tox = 1, eff = 1
real p00[K]; // tox = 0, eff = 0
vector[J] logLike;
for (k in 1:K){
varphi[k] = exp(alpha*log(r[k]));
psi[k] = exp(beta*log(q[k]));
}
// computing the marginal probabilities for each dose
for (k in 1:K){
p01[k] = (1-varphi[k])*psi[k];
p10[k] = varphi[k]*(1-psi[k]);
p00[k] = (1-varphi[k])*(1-psi[k]);
p11[k] = varphi[k]*psi[k];
}
// Computing the log-likelihood
for (j in 1:J){
logLike[j] = y[j]*v[j]*log(p11[d[j]]) + y[j]*(1-v[j])*log(p10[d[j]])
+ (1-y[j])*v[j]*log(p01[d[j]]) + (1-y[j])*(1-v[j])*log(p00[d[j]]);
}
}
model {
// priors
alpha ~lognormal(moy, standardError);
beta ~ lognormal(0,sqrt(1.34));
increment_log_prob(sum(logLike));
}'
stan_model <- stan_model(model_code = stancode)
################## Scenarios ##############
scenario_tox <- c(0.1301477, 0.2774171, 0.4184642, 0.6486846, 0.8257219)
scenario_eff <- c(0.07945205, 0.20000000, 0.33686856, 0.59537737, 0.80996173)
################# Simulation BMA - Normal prior ################
simulation(stan_model, scenario_tox, scenario_eff, nbSubjects,
nbSimu, skeleton_tox, skeleton_eff, targetTox, targetEff,
cohortSize, startingDose, sd, mu, TRUE, tempfile())
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.