[R] Problem with density()?
Thomas Lumley
thomas at biostat.washington.edu
Thu Aug 10 19:45:49 CEST 2000
On Thu, 10 Aug 2000, Nels Tomlinson wrote:
> Hello, all,
>
> I'm running Version 1.1.0 (June 15, 2000), on Mandrake 6.1 Linux.
>
> I think that I'm getting nonsense results from the density function.
> When I feed it a sample generated by v<-runif(1000,0,1), I get back some
> small negative numbers for density values, as follows:
>
If you do
slime$x[slime$y<0]
I think you will find that the negative values happen at x values outside
the range of the data. When I tried they were all <-0.1 or >1.1, with a
bandwidth of 0.065. As the density really is zero here it's not
surprising that the estimate is effectively zero. (It's not a bug, it's a
feature)
It is unfortunate, I suppose, that the density is slightly negative rather
than slightly positive, but it wouldn't make much practical difference to
your problem: you don't want to divide by it anyway.
With the obvious implementation of kernel densities the estimate would
have to be non-negative even with rounding error, and would be zero or NaN
at these points. However, the FFT implementation is way faster.
-thomas
>
> >v<-runif(1000,0,1)
> > dump("v","/home/tomlinso/auction/test.vector.R")
> > slime<-density(v,kernel="r")
> > sort(slime$y)
> [1] -1.869303e-16 -1.110223e-16 -1.110223e-16 -1.065198e-16
> -1.057452e-16
> [6] -1.016304e-16 -9.779196e-17 -9.427232e-17 -9.368320e-17
> -8.471147e-17
> [11] -8.169144e-17 -7.225386e-17 -6.740389e-17 -6.142515e-17
> -6.003374e-17
> [16] -5.652376e-17 -5.501082e-17 -5.348798e-17 -5.347797e-17
> -5.319815e-17
> [21] -5.043385e-17 -4.948219e-17 -4.835455e-17 -4.633728e-17
> -4.466063e-17
> [26] -4.039872e-17 -3.836554e-17 -3.826879e-17 -3.646713e-17
> -3.557390e-17
> [31] -2.825989e-17 -2.821749e-17 -2.743282e-17 -2.678935e-17
> -2.533472e-17
> [36] -2.518910e-17 -2.510075e-17 -2.436936e-17 -1.919740e-17
> -1.831052e-17
> [41] -1.757412e-17 -1.673804e-17 -1.615867e-17 -1.327275e-17
> -1.318810e-17
> [46] -1.286342e-17 -9.888095e-18 -8.665413e-18 -6.783308e-18
> -5.726469e-18
> [51] -2.394122e-19 7.552237e-18 1.063422e-17 2.765485e-17
> 3.848034e-17
> [56] 4.637632e-17 4.727742e-17 6.705682e-17 6.914125e-17
> 8.924077e-17
> [61] 6.663715e-04 1.703646e-03 3.401654e-03 8.696669e-03
> 1.349002e-02
> [66] 1.861714e-02 2.548490e-02 2.719238e-02 3.502090e-02
> 3.752716e-02
> <snip>
>
> I don't think that I should be getting negative numbers, even tiny
> ones. These are close enough to zero to cause trouble, since the
> estimator I'm implementing calls for dividing by those density values!
>
> Any clues about what hit me and what I can do about it would be
> appreciated.
>
> Thanks,
> Nels Tomlinson
> --
> /\ / _ / _ --- _ / , _ _ _
> / \/ (- / _) / () //) / / / )_) ()/ )
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>
Thomas Lumley
Assistant Professor, Biostatistics
University of Washington, Seattle
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list