[R] strange thing with sd

Uwe Ligges ligges at statistik.uni-dortmund.de
Mon Mar 29 16:46:46 CEST 2004


Andreas Pauling wrote:

> Dear R people
> 
> I came across a strange thing: 
> 
> 
> sd(rep(0.01,      15))  #0
> sd(rep(0.001,     15))  #4.489023e-19
> sd(rep(0.00001,   15))  #0
> sd(rep(0.00000001,15))  #1.712427e-24
> 
> sd(rep(0.01,      13))  #1.805557e-18
> sd(rep(0.001,     13))  #4.513894e-19
> sd(rep(0.00001,   13))  #0
> sd(rep(0.00000001,13))  #0
> 
> sd(rep(5.01,	  15))  #0
> sd(rep(5.001,	  15))  #4.489023e-19
> sd(rep(5.00001,   15))  #1.838704e-15
> sd(rep(5.00000001,15))  #9.19352e-16
> 
> sd(rep(5.01,	  13))  #9.244454e-16
> sd(rep(5.001,	  13))  #9.244454e-16
> sd(rep(5.00001,   13))  #1.848891e-15
> sd(rep(5.00000001,13))  #0
> 
> Why gives sd sometimes zero and sometimes values close to zero
> and why does it depend on the value and on how many times it is
> repeated?
> Shouldn't it give always zero?
> Is there a way to control this?
> 
> I use R Version 1.8.1 under UNIX.
> 
> Thanks for any suggestions!!
> 
> Andreas
> 

I think this is due to expected inaccuracy of numerical floating point 
representation (and also happens for me under WinNT 4.0, R-1.9.0 beta).

And for the largest value you have listed
   all.equal(1.848891e-15, 0)
is still TRUE.

Uwe Ligges




More information about the R-help mailing list