Hello,
I suppose this is a general behavior with external function calls, so I do
not post (yet) a specific bug report. Could someone explain this?
a <- rep(1, 20) + rnorm(20, mean=0.00001, sd=0.0001)
b <- embed(a, 3)
# I want to know where the item in column 2 is greated than both col 1 and 3
(peak)
test1 <- max.col(b) == 2
# ... or I could use a less optimal code
test2 <- apply(b, 1, max) == b[, 2]
any(test1 != test2) # both are equivalent
# but when numbers are very close
a <- rep(1, 20) + rnorm(20, mean=0.0000001, sd=0.0000001)
b <- embed(a, 3)
test1 <- max.col(b) == 2
test2 <- apply(b, 1, max) == b[, 2]
any(test1 != test2) # tests are now DIFFERENT!
# Indeed, test2 is correct, and test1 suffers from wrong calculations due
probably to rounding errors in max.col()
Best,
Philippe Grosjean
...........]<(({°<...............<°}))><...............................
) ) ) ) )
( ( ( ( ( Dr. Philippe Grosjean
) ) ) ) )
( ( ( ( ( LOV, UMR 7093
) ) ) ) ) Station Zoologique
( ( ( ( ( Observatoire Océanologique
) ) ) ) ) BP 28
( ( ( ( ( 06234 Villefranche sur mer cedex
) ) ) ) ) France
( ( ( ( (
) ) ) ) ) tel: +33.4.93.76.38.16, fax: +33.4.93.76.38.34
( ( ( ( (
) ) ) ) ) e-mail: phgrosjean@sciviews.org
( ( ( ( ( SciViews project coordinator (http://www.sciviews.org)
) ) ) ) )
.......................................................................
Do read the help page:
Ties are broken at random. The determination of ``tie'' assumes
that the entries are probabilities.
and then don't blame your tools when you misuse them ....
On Thu, 2 Jan 2003, Philippe Grosjean wrote:
> I suppose this is a general behavior with external function calls, so I do
> not post (yet) a specific bug report. Could someone explain this?
>
> a <- rep(1, 20) + rnorm(20, mean=0.00001, sd=0.0001)
> b <- embed(a, 3)
> # I want to know where the item in column 2 is greated than both col 1 and
3
> (peak)
> test1 <- max.col(b) == 2
> # ... or I could use a less optimal code
> test2 <- apply(b, 1, max) == b[, 2]
> any(test1 != test2) # both are equivalent
>
> # but when numbers are very close
> a <- rep(1, 20) + rnorm(20, mean=0.0000001, sd=0.0000001)
> b <- embed(a, 3)
> test1 <- max.col(b) == 2
> test2 <- apply(b, 1, max) == b[, 2]
> any(test1 != test2) # tests are now DIFFERENT!
> # Indeed, test2 is correct, and test1 suffers from wrong calculations due
> probably to rounding errors in max.col()
No, to max.col working as documented.
[Large waste of bandwidth deleted]
--
Brian D. Ripley, ripley@stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595