# [R] density at particular values

Bill.Venables at csiro.au Bill.Venables at csiro.au
Sun Nov 21 08:24:22 CET 2010

```It's actually not too difficult to write the density function itself as returning a function rather than a list of x and y values.  Here is a no frills (well, few frills) version:

### cut here ###
densityfun <- local({
normd <- function(value, bw) {
force(value); force(bw)
function(z) dnorm(z, mean = value, sd = bw)
}
function(x, bw = bw.nrd0, adjust = 1) {
flist <- lapply(x, normd, bw = bandw)
function(z)
if(length(z) <= 1)
mean(sapply(flist, function(fun) fun(z)))
else rowMeans(sapply(flist, function(fun) fun(z)))
}
})
### cut here ###

To test it:

########
library(MASS)
x <- faithful\$eruptions
dx <- density(x, n = 500)
plot(dx)
dfun <- densityfun(x)
sx <- sample(dx\$x, 25)
points(sx, dfun(sx), pch = 4)
curve(dfun, add = TRUE, col = "blue", n = 500)
########

This idea could be extneded to provide essentially the same features as density() itself.  The details are left as an exercise...  If anyone ever needs to integrate a kernel density estimate, (and for now I can't see why they would, but if), then this would provide a way to do it with integrate().

Bill Venables.

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of David Winsemius
Sent: Sunday, 21 November 2010 3:21 PM
To: Shant Ch
Cc: r-help at r-project.org
Subject: Re: [R] density at particular values

On Nov 20, 2010, at 9:34 PM, Shant Ch wrote:

> David, I did look at ?density many times. I think I didn't explain
> what I have to find.
>
> Suppose I have a data.
> x<- c(rnorm(40,5,3),rcauchy(30,0,4),rexp(30,6))
>
> Suppose I don't have information about the mixture, I have been
> given only the data.
>
> density(x) will give the 6 number summary of the data, given as x
> and also the 6 number summary of the density of density given as y.

I am not sure what the number six (6) represents in the two palces it
occurs:

> str(density(x))
List of 7
\$ x        : num [1:512] -59.2 -59 -58.8 -58.5 -58.3 ...
\$ y        : num [1:512] 3.30e-05 5.27e-05 8.19e-05 1.24e-04
1.82e-04 ...
\$ bw       : num 1.37
\$ n        : int 100
\$ call     : language density.default(x = x)
\$ data.name: chr "x"
\$ has.na   : logi FALSE
- attr(*, "class")= chr "density"

Perhaps you want to look at:

?approxfun

It would let you interpolate at points that are not part of the set
density(x)\$x

__
David.

>
> I want to find the density of the given data at x=1. I basically
> want the value of y(=density) for x=1 i.e. kernel density at x=1.
>
> Shant
>
>
>
>
>
>
>
>
>
>
>
> From: David Winsemius <dwinsemius at comcast.net>
> To: Shant Ch <sha1one at yahoo.com>
> Cc: r-help at r-project.org
> Sent: Sat, November 20, 2010 8:54:32 PM
> Subject: Re: [R] density at particular values
>
>
> On Nov 20, 2010, at 8:07 PM, Shant Ch wrote:
>
> > Hello everyone!
> >
> > I want to use density function of R to compute the density at
> x(=0, say). But it
> > is giving me the 5-number summary and mean of the data and
> densities at that
> > point.
> > I just want the densities at different values specified by me. Can
> anyone let me
> > know how can I find that?
>
> Here's what you should have done (even before posting):
>
> ?density
> <Read the help page to see the structure of what density() returns.>
> "Value
> x  the n coordinates of the points where the density is estimated.
>
> y  the estimated density values. These will be non-negative, but can
> be zero."
>
> Realize that the "specified by me" part is either going to be
> modified to "pick an existing estimate near my specification" or
> that you will need to approximate the value. So what is the actual
> problem (and the actual data setup) ?
>
> --David.
>
>
> >
> > For example
> >
> >
> >
> >
> > Shant
> >
> >
> >
> >
> >     [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > and provide commented, minimal, self-contained, reproducible code.
>
> David Winsemius, MD
> West Hartford, CT
>
>
>

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help