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,
...
)

## Arguments

outcome_str A string representing the outcomes observed hitherto. See df_parse_outcomes for a description of syntax and examples. Alternatively, you may provide doses_given and tox parameters. See Details. a vector of the prior guesses of toxicity at doses. This should be a monotonically-increasing vector of numbers between 0 and 1. the target toxicity probability, a number between 0 and 1. This value would normally be one of the values in skeleton, but that is not a requirement. Character string to denote desired model. One of empiric, logistic, logistic_gamma, or logistic2. The choice of model determines which parameters are required. See Details. Value of fixed intercept parameter. Only required for certain models. See Details. Prior mean of intercept variable for normal prior. Only required for certain models. See Details. Prior standard deviation of intercept variable for normal prior. Only required for certain models. See Details. Prior mean of gradient variable for normal prior. Only required for certain models. See Details. Prior standard deviation of slope variable for normal prior. Only required for certain models. See Details. Prior shape parameter of slope variable for gamma prior. Only required for certain models. See Details. Prior inverse scale parameter of slope variable for gamma prior. Only required for certain models. See Details. A optional vector of dose-levels given to patients 1:num_patients, where 1=lowest dose, 2=second dose, etc. Only required when outcome_str is not provided. An optional vector of toxicity outcomes for patients 1:num_patients, where 1=toxicity and 0=no toxicity. Only required when outcome_str is not provided. An optional vector of numeric weights for the observations for patients 1:num_patients, thus facilitating the TITE-CRM design. Can be used with outcome_str, or with doses_given and tox. It is generally tider to specify doses_given, tox and weights when a TITE-CRM analysis is desired. Extra parameters are passed to rstan::sampling. Commonly used options are iter, chains, warmup, cores, and control.

## Value

An object of class crm_fit

## Details

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.

## The empiric model

The model form is:

$$F(x_{i}, \beta) = x_{i}^{\exp{\beta}}$$

and the required parameters are:

• beta_sd

## The logistic model

The 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

## The logistic_gamma model

The 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

## The logistic2 model

The model form is:

$$F(x_{i}, \beta) = 1 / (1 + \exp{(-\alpha - \exp{(\beta)} x_i)})$$

and the required parameters are:

• alpha_mean

• alpha_sd

• beta_mean

• beta_sd

## References

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

crm_fit sampling

## Examples

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
}