David C. Norris, MD
Precision Methodologies, LLC
david@precisionmethods.guru
2020-09-22
precautionary
An ant on the tablecloth
Ran into a dormant moth
Of many times his size.
He showed not the least surprise.
His business wasn’t with such.
He gave it scarcely a touch,
And was off on his duty run.
Yet if he encountered one
Of the hive’s enquiry squad
Whose work is to find out God
And the nature of time and space,
He would put him onto the case.
Ants are a curious race;
One crossing with hurried tread
The body of one of their dead
Isn’t given a moment’s arrest—
Seems not even impressed.
But he no doubt reports to any
With whom he crosses antennae,
And they no doubt report
To the higher-up at court.
Then word goes forth in Formic:
“Death’s come to Jerry McCormic,
Our selfless forager Jerry.
Will the special Janizary
Whose office it is to bury
The dead of the commissary
Go bring him home to his people.
Lay him in state on a sepal.
Wrap him for shroud in a petal.
Embalm him with ichor of nettle.
This is the word of your Queen.”
And presently on the scene
Appears a solemn mortician;
And taking formal position,
With feelers calmly atwiddle,
Seizes the dead by the middle,
And heaving him high in air,
Carries him out of there.
No one stands round to stare.
It is nobody else’s affair.
It couldn’t be called ungentle.
But how thoroughly departmental.
rbinom(size=1)
:library(crmPack); getMethod(simulate, "TDDesign")
function (object, nsim = 1L, seed = NULL, ...)
{
.local <- function (object, nsim = 1L, seed = NULL, truth, args = NULL, firstSeparate = FALSE,
parallel = FALSE, nCores = min(parallel::detectCores(), 5), ...)
{
...
runSim <- function(iterSim) {
...
thisDose <- object@startingDose
while (!stopit) { # Note the abundant 'rbinom(size=1)' Bernoulli draws
...
if (firstSeparate && (thisSize > 1L)) {
thisDLTs <- rbinom(n = 1L, size = 1L, prob = thisProb)
if (thisData@placebo && (thisSize.PL > 0L))
thisDLTs.PL <- rbinom(n = 1L, size = 1L, prob = thisProb.PL)
if (thisDLTs == 0) {
thisDLTs <- c(thisDLTs, rbinom(n = thisSize - 1L, size = 1L, prob = thisProb))
if (thisData@placebo && (thisSize.PL > 0L))
thisDLTs.PL <- c(thisDLTs.PL, rbinom(n = thisSize.PL, size = 1L, prob = thisProb.PL))
}
}
else {
thisDLTs <- rbinom(n = thisSize, size = 1L, prob = thisProb)
if (thisData@placebo && (thisSize.PL > 0L))
thisDLTs.PL <- rbinom(n = thisSize.PL, size = 1L, prob = thisProb.PL)
}
...
}
...
return(thisResult)
}
...
return(ret)
}
.local(object, nsim, seed, ...)
}
rbinom
internalsdouble rbinom(double nin, double pp)
{
/* EXCERPTED & ANNOTATED to focus n=1 (Bernoulli) case */
if (np < 30.0) { /* inverse cdf logic for mean less than 30 */
qn = R_pow_di(q, n);
goto L_np_small;
}
L_np_small:
/*---------------------- np = n*p < 30 : ------------------------- */
repeat {
ix = 0;
f = qn; /* NB: n=1 ==> f = q^1 = (1-p) */
u = unif_rand();
repeat {
if (u < f) /* i.e., if (1-u) > p ... */
goto finis;
/* ... */
}
}
finis:
/* ... */
return (double)ix;
}
To each subject \(j\) we can associate a numerical value \(v_j\) indicating his/her toxicity tolerance threshold to the treatment under study. Without loss of generality, the \(v_j\) can be generated from a uniform distribution.
…
Of course, in any practical setting, the observations are not complete, we are unable to independently replicate experimentation for the same subject at all levels, and so such an optimal method is not available to us.
— O’Quigley, Paoletti & Maccario (2002) doi:10.1093/biostatistics/3.1.51
Let \(S\) be a random variable that denotes the lowest dose at which a subject has a DLT. Given value \(s_j\) for patient \(j\) and supposing an increasing dose-toxicity relation, the probability of toxicity at any level is either zero or one.
…
We can notice that it exactly corresponds to what we are used to doing when we computationally simulate the response of a patient at a given dose level. A random number is generated over (0,1) and compared with the probability of toxicity. S is not far from the notion of a latent variable.
— Paoletti & Kramar (2009) doi:10.1002/sim.3682
In simulating the data, the tolerance of each patient can be considered a uniformly distributed random variable on the interval \([0, 1]\), which we term a patient’s latent toxicity tolerance and denote \(u_i\) for the \(i\)th entered patient. At the dose \((d_j)\) assigned to patient \(i\), if the tolerance is less than or equal to its true dose-limiting toxicity probability (ie, \(u_i \le \pi_j\)), then patient \(i\) has a dose-limiting toxicity; otherwise the patient has a non–dose-limiting toxicity outcome. Of course, in a real trial, it is impossible to observe a patient’s latent tolerance, but it is a useful tool in simulation …
— Wages, Iasonos, O’Quigley & Conaway (2019) doi:10.1002/pst.1974
escalation
Compare https://refactoring.com/catalog/extractVariable.html
See also https://pubpeer.com/publications/4CEB4434EA94CC0AA3BCAF63617A78#1
knowledge about potential toxicities needs to be interpreted in relation to the desired pharmacology of the drug candidate, as well as the intended clinical indication, the associated unmet medical need and the competitive environment.
…
the therapeutic index (TI) of drug candidates … is a quantitative relationship between their efficacy (pharmacology) and safety (toxicology) that can be calculated using various pairs of pharmacological and toxicological end points.
— Muller & Milton (2012) doi:10.1038/nrd3801
Title 21: Food and Drugs
PART 312—INVESTIGATIONAL NEW DRUG APPLICATION
Subpart C—Administrative Actions
§312.42 Clinical holds and requests for modification.
…
(b) Grounds for imposition of clinical hold–(1) Clinical hold of a Phase 1 study under an IND. FDA may place a proposed or ongoing Phase 1 investigation on clinical hold if it finds that:
(i) Human subjects are or would be exposed to an unreasonable and significant risk of illness or injury;
I have developed here a Bayesian model of heterogeneous dose-response for an ordinal toxicity, and used it to examine retrospectively the safety of a dose-finding trial that was halted for a fatal toxicity. The model supports an interim analysis suggesting the fatality in this trial could have been anticipated and averted. Without loss of generality, this mode of analysis may be applied at every dosing decision in a dose-finding trial. Thus, it forms the basis for designing and implementing safer dose-finding designs in the future.
Norris DC. Retrospective analysis of a fatal dose-finding trial. arXiv:2004.12755 [stat.ME]. April 27, 2020. http://arxiv.org/abs/2004.12755
The method is fully adaptive, makes use of all the information available at the time of each dose assignment, and directly addresses the ethical need to control the probability of overdosing.
— Babb, Rogatko & Zacks (1998) “Cancer phase I clinical trials: efficient dose escalation with overdose control” Stat Med. 1998 May 30;17(10):1103-20.
See: Norris DC. Precautionary Coherence Unravels Dose Escalation Designs. bioRxiv. Dec 29, 2017. doi:10.1101/240846