udest {upndown} | R Documentation |
Centered-Isotonic-Regression (CIR) Estimate for the Up-and-Down Target Dose
Description
Centered Isotonic Regression (CIR) is an extension of isotonic regression (IR), substantially improving upon IR's estimation performance in the dose-response and dose-finding contexts (Oron and Flournoy 2017, Flournoy and Oron 2020). CIR is the recommended method for estimating up-and-down targets.
Usage
udest(x, y, target, balancePt = target, conf = 0.9, ...)
Arguments
x |
numeric vector: sequence of administered doses, treatments, stimuli, etc. |
y |
numeric vector: sequence of observed responses. Must be same length as |
target |
The target response rate for which target dose estimate is requested. Must be a single number in |
balancePt |
In case the design's inherent balance point differs somewhat from |
conf |
The desired confidence level for the confidence interval. Default |
... |
Pass-through argument added for flexible calling context. |
Details
CIR and related methods are available in the cir
package. The udest()
function in the present package provides a convenient wrapper for cir::quickInverse()
, with arguments already set to the appropriate values for estimating the target dose after an up-and-down experiment. The function also returns a confidence interval as default.
WARNING! You should not estimate target doses too far removed from the design's actual balance point (definitely no further than 0.1, e.g., estimating the 33rd percentile for a design whose balance point is the median). As Flournoy and Oron (2020) explain, observed response rates are biased away from the balance point. Even though udest()
performs the rudimentary bias correction described in that article, practically speaking this correction's role is mostly to expand the confidence intervals in response to the bias. It cannot guarantee to provide reliable off-balance-point estimates.
Value
A one-row data frame with 4 variables: target
, point
(the point estimate), lowerXYconf, upperXYconf
(the confidence bounds, with XY
standing for the percents, default 90
).
Author(s)
Assaf P. Oron <assaf.oron.at.gmail.com>
References
Oron AP, Flournoy N. Centered Isotonic Regression: Point and Interval Estimation for Dose-Response Studies. Statistics in Biopharmaceutical Research 2017; 9, 258-267. Author's public version available on arxiv.org.
Flournoy N, Oron AP. Bias Induced by Adaptive Dose-Finding Designs. Journal of Applied Statistics 2020; 47, 2431-2442.
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
-
quickInverse
,cir
package. -
cir
package vignette.
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 )
#' ### Plots plots plots!
# Saving current settings as now required by the CRAN powers-that-be :0
op <- par(no.readonly = TRUE)
layout(t(1:2), widths=3:2)
par(mar=c(4,4,4,1), mgp=c(2.5,0.8,0), cex.axis = 0.7, las = 1)
#' The experimental trajectory / time-series / "trace" (pick your favorite name!)
#' Note the changed argument names for x and y axis titles
udplot(doses, responses, main='',
xtitle = "Patient Number", ytitle = 'Gabapentin (mg/kg)')
#' Compare with the article's Figure 1; the line below makes it look more similar
udplot(doses, responses, shape='square', connect=TRUE)
# The dose-response plot, rarely encountered in U&D articles.
# We can also add the CIR estimate right there:
drplot(doses, responses, main=' Dose-Response', percents = TRUE,
addest = TRUE, target = 0.5, addcurve = TRUE,
xtitle = 'Gabapentin (mg/kg)', ytitle = "Percent Effective")
#' ### Estimates
#' Let us actually see the numbers of those Centered-Isotonic-Regression (CIR) estimates!
#' Note that our default confidence-interval is 90%. Change it via the 'conf' argument.
udest(doses, responses, target = 0.5)
#' Compare with the article: 21.7 mg/kg (95% CI 19.9–23.5).
#' They 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 estimate.
#'
#' ## Toy example of plotting a group UD dataset
#'
#' Also showing off some udplot() options
#'
#' Not an actual experiment (made-up data)
#' The design is purportedly GUD (3,0,1), targeting the 20th percentile
#'
gsize = 3
x = rep(c(1:3, 2:4), each = gsize)
y = c(rep(0, 8), 1, rep(0,7), 1, 1)
udplot(x=x, y=y, cohort=gsize, connect=FALSE, shape='triangle')
par(op) # Back to business as usual ;)