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-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of David Winsemius Sent: Sunday, 21 November 2010 3:21 PM To: Shant Ch Cc: r-help@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 <dwinsem...@comcast.net> > To: Shant Ch <sha1...@yahoo.com> > Cc: r-help@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@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@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. ______________________________________________ R-help@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.