[Rd] [R] jitter-bug? problematic behaviour of the jitter function
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Sep 23 21:32:32 CEST 2020
Hello,
R 4.0.2 on Ubuntu 20.04, sessionInfo at end.
This came up in r-help, I'm answering to the OP and also posting to
r-devel since I believe it is more appropriate there.
I can confirm this. The original instructions are the first and the
last, but even with smaller numbers the error shows up.
set.seed(2020)
jitter(c(1,2,10^4)) # desired behaviour
#[1] 1.058761 1.957690 10000.047401
jitter(c(0,1,10^4)) # bad behaviour
#[1] -92.43546 -1454.61126 8269.53754
jitter(c(-1,0,10^4)) # bad behaviour
#[1] -1484.3895 -427.5283 8010.3308
jitter(c(1,2,10^5)) # bad behaviour
#[1] 4809.238 10578.561 109753.430
To the OP: I am cc-ing this to r-devel using r-project.org.
Questions like this are about R itself and should be posted there.
sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.1 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
locale:
[1] LC_CTYPE=pt_PT.UTF-8 LC_NUMERIC=C
[3] LC_TIME=pt_PT.UTF-8 LC_COLLATE=pt_PT.UTF-8
[5] LC_MONETARY=pt_PT.UTF-8 LC_MESSAGES=pt_PT.UTF-8
[7] LC_PAPER=pt_PT.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=pt_PT.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.0.2
Hope this helps,
Rui Barradas
Às 11:32 de 23/09/20, Martin Keller-Ressel escreveu:
> Dear all,
>
> i have noticed some strange behaviour in the „jitter“ function in R.
> On the help page for jitter it is stated that
>
> "The result, say r, is r <- x + runif(n, -a, a) where n <- length(x) and a is the amount argument (if specified).“
>
> and
>
> "If amount is NULL (default), we set a <- factor * d/5 where d is the smallest difference between adjacent unique (apart from fuzz) x values.“
>
> This works fine as long as there is no (very) large outlier
>
>> jitter(c(1,2,10^4)) # desired behaviour
> [1] 1.083243 1.851571 9999.942716
>
> But for very large outliers the added noise suddenly ‚jumps‘ to a much larger scale:
>
>> jitter(c(1,2,10^5)) # bad behaviour
> [1] -19535.649 9578.702 115693.854
> # Noise should be of order (2-1)/5 = 0.2 but is of much larger order.
>
> This probably does not matter much when jitter is used for plotting, but it can cause problems when jitter is used to break ties.
>
> best regards,
> Martin
>
> --------------------------------
> Martin Keller-Ressel
> Professor für Stochastische Analysis und Finanzmathematik
> Technische Universität Dresden
> Institut für Mathematische Stochastik
> Willersbau B 316, Zellescher Weg 12-14
> 01062 Dresden
> --------------------------------
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-devel
mailing list