I use round() to prepare numbers for display in Sweave documents. While I had appreciated the "round to even" issue before, I had not given it much thought when automatically writing my output functions/scripts/Sexprs...
On 04/08/07, Ted Harding <[EMAIL PROTECTED]> wrote: > On 04-Aug-07 21:57:28, John Logsdon wrote: > > I must admit I had never realised this so thanks to Monica for > > raising it. > > > > Round-to-even is used for statistical reasons and there is some > > point as it obviously reduces bias. But why should the decision > > be to round to the nearest even number? rounding to the nearest > > odd number would be equally valid. (signif(x,0) is the same as > > round(). ) > > A fair point! But see below. > > > There is a debate and sometimes you need symmetric rounding. > > Perhaps there should be an option in round that defaults to > > round-to-even for compatibility but includes the various other > > rounding approaches as seen for example in > > http://en.wikipedia.org/wiki/Rounding > > As wikipedia says: "Round-to-even is used rather than round-to-odd > as the latter rule would prevent rounding to a result of zero." > > And there's also stochastic rounding -- toss a penny. But you wouldn't > get the same answer next time. > > And I can recall -- man years ago -- being in an environment where > the practice was to round alternately up and down. (These were > engineers). > > John's comparisons between FORTRAN, octave and (implicitly) R > are interesting. > > As a general reflection: any method of rounding involves throwing > away some of the information in the data, and this will have > consequences. So the question is: what consequences are you > happiest with? > > One consequence of rounding to nearest even (or nearest odd) is > that this can give the worst possible outcome in terms of > > (rounded X - rounded Y) compared with (unrounded X - unrounded Y). > > For example, rounding to even integer X =1.5 --> 2.0 and > Y = 0.5 --> 0.0 gives > > X - Y = 1.0 , rounded X - rounded Y = 2.0 > > whereas the difference is 1.0 if you always round up, or always down, > and this is also exactly the difference between the unrounded values.. > > Rounding to nearest odd would give X = 1.5 --> 1.0, Y = 0.5 --> 1.0 > thus difference 0.0 in this case, but again difference 2.0 for > X = 2.5 --> 3.0, Y = 1.5 --> 1.0 > > And alternate rounding would give either 2.0 or 0.0 depending > on the phase of X and Y. > > Thus "always up" or "always down" means that the difference between > rounded numbers is always the same as between the unrounded numbers > which for other methods the differences can differ by 2.0. > This may or may not matter, but it is something to think about > when choosing a rounding method. > > > [...] > > Best wishes to all, > Ted. > > -------------------------------------------------------------------- > E-Mail: (Ted Harding) <[EMAIL PROTECTED]> > Fax-to-email: +44 (0)870 094 0861 > Date: 04-Aug-07 Time: 23:53:50 > ------------------------------ XFMail ------------------------------ > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > 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. > > > ______________________________________________________________________ > This email has been scanned by the MessageLabs Email Security System. > For more information please visit http://www.messagelabs.com/email > ______________________________________________________________________ > -- Dr. Mark Wardle Clinical research fellow and specialist registrar, Neurology Cardiff, UK ______________________________________________ R-help@stat.math.ethz.ch mailing list 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.