dixonmood {upndown} | R Documentation |
Original Dixon and Mood (1948) point estimate
Description
Basic version; formula assumes uniform spacing but should work anyway
Usage
dixonmood(x, y, full = FALSE, flip = FALSE)
Arguments
x |
numeric vector: sequence of administered doses, treatments, stimuli, etc. |
y |
numeric vector: sequence of observed responses. Must be same length as |
full |
logical: should more detailed information be returned, or only the estimate? (default |
flip |
logical: should we flip D-M's approach and use the more-common outcome? (default |
Details
In their documentation of the Up-and-Down algorithm, Dixon and Mood (1948) presented an estimation method based on tallying and averaging responses, choosing to use only the positive or negative responses (the less-common of the two), since they reasoned the two mirror each other. This is not strictly true: it ignores both leading/trailing "tail" sequences of identical responses, and repeated visits to the boundary dose in case there are dose boundaries.
The Dixon-Mood estimate (sometimes called Dixon-Massey) is provided here mostly for historical reasons and comparative-simulation uses, and also because this estimate is apparently (and unfortunately) still in use in some fields. It should not be used for actual target-dose estimation in real experiments. It behaves very poorly even under minor deviations from the most optimal conditions (see, e.g., simulations in the supplement to Oron et al. 2022.).
In order to discourage from actual use in experiments, we do not provide a method for the Dixon-Mood estimator's confidence interval, even though the original article did include one. The interval estimate behaves even more poorly than the point estimate.
For UDD target estimation we recommend using centered isotonic regression, available via udest
, an up-and-down adapted wrapper to cir::quickInverse()
. See Oron et al. 2022 (both article and supplement) for further information, as well as the cir
package vignette.
Value
The point estimate
Author(s)
Assaf P. Oron <assaf.oron.at.gmail.com>
References
Dixon WJ, Mood AM. A method for obtaining and analyzing sensitivity data. J Am Stat Assoc. 1948;43:109-126.
Oron AP, Souter MJ, Flournoy N. Understanding Research Methods: Up-and-down Designs for Dose-finding. Anesthesiology 2022; 137:137–50. See in particular the open-access Supplement.
See Also
-
udest
, the recommended estimation method for up-and-down targets. -
reversmean
, The most commonly-used dose-averaging approach (not recommended; the recommended one isudest
referenced above).
Examples
#' **An up-and-down experiment that has generated some controversy**
#'
#' Van Elstraete, AC et al. The Median Effective Dose of Preemptive Gabapentin
#' on Postoperative Morphine Consumption After Posterior Lumbar Spinal Fusion.
#' *Anesthesia & Analgesia* 2008, 106: 305-308.
# It was a classical median-finding up-and-down study.
doses = c(4:7, 6:13, 12:19, 18:21, 20, 19:23, 22, 21:23, 22:19, 20:23,
22:24, 23, 22, 23, 22:25, 24:22, rep(23:24,2), 23, 22)
# With U&D, responses (except the last one) can be read off the doses:
responses = c( (1 - sign(diff(doses)))/2, 0 )
### Let us plot the dose-allocation time series.
# Saving current settings as now required by the CRAN powers-that-be :0
op <- par(no.readonly = TRUE)
par(mar=c(4,4,4,1), mgp=c(2.5,0.8,0), cex.axis = 0.7, las = 1)
udplot(doses, responses, main='Van Elstraete et al. 2008 Study',
xtitle = "Patient Number", ytitle = 'Gabapentin (mg/kg)')
#' Overlay the ED50 reported in the article (21.7 mg/kg):
abline(h = 21.7)
#' The authors cite a little-known 1991 article by Dixon as the method source.
#' However, in their author rejoinder they claim to have used the Dixon-Mood (1948) estimate.
# Our package does include the Dixon-Mood point estimate.
# (w/o the CIs, because we do not endorse this estimation approach)
# Does it reproduce the article estimate?
dixonmood(doses, responses)
# Not at all! Let us overlay this one in red
abline(h = dixonmood(doses, responses), col=2)
# We have found that many articles claiming to use Dixon-Mood (or Dixon-Massey) actually
# Do something else. For example, in this article they report that
# "it is necessary to reject sequences with three to six identical results".
# Nothing like this appears in the original Dixon-Mood article, where the estimation method
# involves identifying the less-common response (either 0 or 1), and using only x values
# associated with these responses; obviating the need to exclude specific sequences.
#
# More generally, these historical estimates have long passed their expiry dates.
# Their foundation is not nearly as solid as, e.g., linear regression,
# and it's time to stop using them.
# That said, our package does offer two more types of dose-averaging estimates.
# Both are able to take advantage of the "n+1" dose-allocation, which is determined by
# the last dose and response:
n = length(doses)
dosePlus1 = doses[n] + ifelse(responses[n]==0, 1, -1)
reversmean(c(doses, dosePlus1), responses)
# Interestingly, in this particular case the answer is very similar to the Dixon-Mood estimate.
# The `reversmean()` default averages all doses from the 3rd reversal point onwards.
# By the way, at what point did the third reversal happen?
# It'll be the 3rd number in this vector:
reversals(responses)
# Far more commonly in literature, particularly in sensory studies,
# one encounters the 1960s-era approach (led by Wetherill) of taking *only doses
# at reversal points, usually starting from the first one. `reversmean()` can do that too:
wetherill = reversmean(c(doses, dosePlus1), responses, all = FALSE, rstart = 1)
wetherill
# This one gives an even lower result than the previous ones.
abline(h = wetherill, col = 3)
# There's another approach to dose-averaging, although it is not in use anywhere that we know of.
# It does not require the y values at all. The underlying assumption is that the dose
# sequence has done enough meandering around the true balance point, to provide information
# about where (approximately) the starting-dose effect is neutralized.
adaptmean(c(doses, dosePlus1))
# Again a bit curiously, this relatively recent approach gives a result similar to what
# the authors reported (but not similar to the original Dixon-Mood).
# This is not too surprising, since here `adaptmean()` excludes the first one-third of doses,
# which is approximately what happened if indeed the authors excluded all those long dose-increase
# sequences at the start.
# All this shows how dicey dose-averaging, at face value a simple and effective method, can become.
# The sample size here is rather large for up-and-down studies, and yet because of the unlucky
# choice of starting point (which in many studies, due to safety concerns cannot be evaded)
# there is really no good option of which observations to exclude.
# This is one reason why we strongly recommend using Centered Isotonic Regression as default:
defest = udest(doses, responses, target = 0.5)
abline(h = defest$point, col = 'purple')
# For this dataset, it is the highest of all the estimates.
legend('bottomright', col = c(1:3, 'purple'),
legend = c("Article's estimate", 'Dixon-Mood', 'Reversals (Wetherill)', 'Standard (CIR)'),
lty = 1, bty='n', cex = 0.8)
par(op) # Back to business as usual ;)