Randomly Break Ties in Data
This is a generic function intended to randomly break tied data in a
way similar to what jitter
does: tie-breaking is
performed by shifting all data points by a random amount.
The surveillance package defines methods for matrices,
"epidataCS"
, and a default method for numeric vectors.
untie(x, amount, ...) ## S3 method for class 'epidataCS' untie(x, amount = list(t=NULL, s=NULL), minsep = list(t=0, s=0), direction = "left", keep.sources = FALSE, ..., verbose = FALSE) ## S3 method for class 'matrix' untie(x, amount = NULL, minsep = 0, constraint = NULL, giveup = 1000, ...) ## Default S3 method: untie(x, amount = NULL, minsep = 0, direction = c("symmetric", "left", "right"), sort = NULL, giveup = 1000, ...)
x |
the data to be untied. |
amount |
upper bound for the random amount by which data are shifted.
|
minsep |
minimum separation of jittered points. Can only be
obeyed if much smaller than |
keep.sources |
logical ( |
constraint |
an object of class |
giveup |
number of attempts after which the algorithm should stop trying to generate new points. |
direction |
one of |
sort |
logical indicating if the jittered vector should be sorted. Defaults to doing so if the original vector was already sorted. |
... |
For the |
verbose |
logical passed to |
For numeric vectors (default method), the jittered version is the
same as for jitter(x, amount=amount)
, if
direction="symmetric"
(and amount
is non-NULL
),
and otherwise uses
x
“+-” runif(length(x), 0, amount)
.
For matrices, a vector uniformly drawn from the disc with radius
amount
is added to each point (row).
For "epidataCS"
, amount
is a list stating the amounts
for the temporal and/or spatial dimension, respectively. It then
uses the specific methods with arguments constraint=x$W
,
direction
, and sort=TRUE
. Note that this implements a
simplistic approach of tie-breaking where all events are assumed to be
subject to the same amounts of censoring, and the default amounts may
not be sensible choices.
the untied (jittered) data.
Sebastian Meyer
# vector example set.seed(123) untie(c(rep(1,3), rep(1.2, 4), rep(3,3)), direction="left", sort=FALSE) # spatial example data(imdepi) coords <- coordinates(imdepi$events) table(duplicated(coords)) plot(coords, cex=sqrt(multiplicity(coords))) set.seed(1) coords_untied <- untie(coords) stopifnot(!anyDuplicated(coords_untied)) points(coords_untied, col=2) # shifted by very small amount in this case
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.