knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5 )
In addition to the already existing ones,
adoptr allows the user to
implement custom scores.
Usually, this will be done by defining a new sub-class of
Assume that one would be interested in the probability of early stopping
First we create a new class as subclass of
setClass("FutilityStopping", contains = "ConditionalScore") # constructor FutilityStopping <- function() new("FutilityStopping")
We only need to implement a method
evaluate(), all other methods are
inherited from the abstract class
setMethod("evaluate", signature("FutilityStopping", "TwoStageDesign"), function(s, design, x1, optimization = FALSE, ...) ifelse(x1 < design@c1f, 1, 0) )
optimization flag here allows to compute scores differently during
the optimization procedure.
This is, e.g., used for the evaluation of conditional power which uses
adaptive Gaussian Quadrature for maximal precision by default but
non adaptive Gaussian Quadrature with the pre-defined integration rule
of the design object during optimization for speed.
The score can now be integrated using the
expected method for
pr_early_futility <- expected( FutilityStopping(), Normal(), PointMassPrior(.0, 1) )
and the resulting integral score can be evaluated as usual. Consider again, the design
design <- TwoStageDesign( n1 = 100, c1f = .0, c1e = 2.0, n2_pivots = rep(150, 5), c2_pivots = sapply(1 + adoptr:::GaussLegendreRule(5)$nodes, function(x) -x + 2) ) plot(design)
Then the value of the expected score is given by
The value is correct since it needs to conform with
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.