Fit a continual reassessment method (CRM) model for dose-finding using Stan for full Bayesian inference. There are several likelihood and prior combinations supported. See model-specific sections below.
stan_crm( outcome_str = NULL, skeleton, target, model = c("empiric", "logistic", "logistic_gamma", "logistic2"), a0 = NULL, alpha_mean = NULL, alpha_sd = NULL, beta_mean = NULL, beta_sd = NULL, beta_shape = NULL, beta_inverse_scale = NULL, doses_given = NULL, tox = NULL, weights = NULL, ... )
outcome_str | A string representing the outcomes observed hitherto.
See |
---|---|
skeleton | a vector of the prior guesses of toxicity at doses. This should be a monotonically-increasing vector of numbers between 0 and 1. |
target | the target toxicity probability, a number between 0 and 1.
This value would normally be one of the values in |
model | Character string to denote desired model. One of |
a0 | Value of fixed intercept parameter. Only required for certain models. See Details. |
alpha_mean | Prior mean of intercept variable for normal prior. Only required for certain models. See Details. |
alpha_sd | Prior standard deviation of intercept variable for normal prior. Only required for certain models. See Details. |
beta_mean | Prior mean of gradient variable for normal prior. Only required for certain models. See Details. |
beta_sd | Prior standard deviation of slope variable for normal prior. Only required for certain models. See Details. |
beta_shape | Prior shape parameter of slope variable for gamma prior. Only required for certain models. See Details. |
beta_inverse_scale | Prior inverse scale parameter of slope variable for gamma prior. Only required for certain models. See Details. |
doses_given | A optional vector of dose-levels given to patients
1:num_patients, where 1=lowest dose, 2=second dose, etc. Only required when
|
tox | An optional vector of toxicity outcomes for patients
1:num_patients, where 1=toxicity and 0=no toxicity. Only required when
|
weights | An optional vector of numeric weights for the observations
for patients 1:num_patients, thus facilitating the TITE-CRM design.
Can be used with |
... | Extra parameters are passed to |
An object of class crm_fit
The quickest and easiest way to fit a CRM model to some observed outcomes
is to describe the outcomes using trialr's syntax for dose-finding
outcomes. See df_parse_outcomes
for full details and examples.
Different model choices require that different parameters are provided. See sections below.
empiric
modelThe model form is:
\(F(x_{i}, \beta) = x_{i}^{\exp{\beta}}\)
and the required parameters are:
beta_sd
logistic
modelThe model form is:
\(F(x_{i}, \beta) = 1 / (1 + \exp{(-a_{0} - \exp{(\beta)} x_{i}})) \)
and the required parameters are:
a0
beta_mean
beta_sd
logistic_gamma
modelThe model form is:
\(F(x_{i}, \beta) = 1 / (1 + \exp{(-a_{0} - \exp{(\beta)} x_{i}})) \)
and the required parameters are:
a0
beta_shape
beta_inverse_scale
logistic2
modelThe model form is:
\(F(x_{i}, alpha, \beta) = 1 / (1 + \exp{(-\alpha - \exp{(\beta)} x_i)}) \)
and the required parameters are:
alpha_mean
alpha_sd
beta_mean
beta_sd
O'Quigley, J., Pepe, M., & Fisher, L. (1990). Continual reassessment method: a practical design for phase 1 clinical trials in cancer. Biometrics, 46(1), 33-48. https://www.jstor.org/stable/2531628
Cheung, Y.K. (2011). Dose Finding by the Continual Reassessment Method. CRC Press. ISBN 9781420091519
if (FALSE) { # CRM example fit1 <- stan_crm('1N 2N 3T', skeleton = c(0.1, 0.2, 0.35, 0.6), target = 0.2, model = 'empiric', beta_sd = sqrt(1.34), seed = 123) fit2 <- stan_crm('1NNN 2NNN 3TTT', skeleton = c(0.1, 0.2, 0.35, 0.6), target = 0.2, model = 'logistic', a0 = 3, beta_mean = 0, beta_sd = sqrt(1.34), seed = 123) # The seed is passed to the Stan sampler. The usual Stan sampler params like # cores, iter, chains etc are passed on too via the ellipsis operator. # TITE-CRM example, p.124 of Dose Finding by the CRM, Cheung (2010) fit3 <-stan_crm(skeleton = c(0.05, 0.12, 0.25, 0.40, 0.55), target = 0.25, doses_given = c(3, 3, 3, 3), tox = c(0, 0, 0, 0), weights = c(73, 66, 35, 28) / 126, model = 'empiric', beta_sd = sqrt(1.34), seed = 123) fit3$recommended_dose }