Note: if you use this selector, it almost certainly needs to be the last
example in the chain - see Example below. This method selects dose by the
algorithm for identifying the maximum tolerable dose (MTD) described in Ji et
al. (2010). This class is intended to be used when a mTPI trial has reached
its maximum sample size. Thus, it intends to make the final dose
recommendation after the regular mTPI dose selection algorithm, as
implemented by get_mtpi
, including any additional behaviours
that govern stopping (etc), has gracefully concluded a dose-finding trial.
However, the class can be used in any scenario where there is a target
toxicity rate. See Examples. Note - this class will not override the parent
dose selector when the parent is advocating no dose. Thus this class will not
reinstate a dangerous dose.
select_mtpi_mtd(
parent_selector_factory,
when = c("finally", "always"),
target = NULL,
exclusion_certainty,
alpha = 1,
beta = 1,
...
)
Object of type selector_factory
.
Either of: 'finally' to select dose only when the parent dose-selector has finished, by returning continue() == FALSE; or 'always' to use this dose-selection algorithm for every dose decision. As per the authors' original intentions, the default is 'finally'.
We seek a dose with this probability of toxicity. If not provided, the value will be sought from the parent dose-selector.
Numeric, threshold posterior certainty required to exclude a dose for being excessively toxic. The authors discuss values in the range 0.7 - 0.95. Set to a value > 1 to suppress the dose exclusion mechanism. The authors use the Greek letter xi for this parameter.
First shape parameter of the beta prior distribution on the probability of toxicity.
Second shape parameter of the beta prior distribution on the probability of toxicity.
Extra args are passed onwards.
an object of type selector_factory
.
Ji, Y., Liu, P., Li, Y., & Bekele, B. N. (2010). A modified toxicity probability interval method for dose-finding trials. Clinical Trials, 7(6), 653-663. https://doi.org/10.1177/1740774510382799
Ji, Y., & Yang, S. (2017). On the Interval-Based Dose-Finding Designs, 1-26. Retrieved from https://arxiv.org/abs/1706.03277
# This class is intended to make the final dose selection in a mTPI trial:
target <- 0.25
model <- get_mtpi(num_doses = 5, target = target,
epsilon1 = 0.05, epsilon2 = 0.05,
exclusion_certainty = 0.95) %>%
stop_at_n(n = 12) %>%
select_mtpi_mtd(exclusion_certainty = 0.95)
outcomes <- '1NNN 2NTN 2NNN 3NTT'
model %>% fit(outcomes) %>% recommended_dose()
#> [1] 2
# However, since behaviour is modular in this package, we can use this method
# to select dose at every dose decision if we wanted:
model2 <- get_mtpi(num_doses = 5, target = target,
epsilon1 = 0.05, epsilon2 = 0.05,
exclusion_certainty = 0.95) %>%
select_mtpi_mtd(when = 'always', exclusion_certainty = 0.95)
model2 %>% fit('1NNT') %>% recommended_dose()
#> [1] 1
model2 %>% fit('1NNN 2NNT') %>% recommended_dose()
#> [1] 1
# and with any underlying model:
skeleton <- c(0.05, 0.1, 0.25, 0.4, 0.6)
model3 <- get_dfcrm(skeleton = skeleton, target = target) %>%
select_mtpi_mtd(when = 'always', exclusion_certainty = 0.95)
model3 %>% fit('1NNT') %>% recommended_dose()
#> [1] 1
model3 %>% fit('1NNN 2NNT') %>% recommended_dose()
#> [1] 1