[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) {
bandw <- bw(x) * adjust
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
> >
> >
> > Thanks in advance for your help.
> >
> >
> > Shant
> >
> >
> >
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at r-project.org 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.
>
> 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
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list