On Thu, 11 Dec 2008 14:28:31 +0100, Viktor Nagy wrote:

VN> Hi,
VN> 
VN> I've estimated a simple kernel density of a univariate variable with
VN> density(), but after I would like to find out the CDF at specific
VN> values.
VN> How can I do it?
VN> 

Answer 1.
Use approfun to interpolate the outcome from density() and then 
use integrate(). The following lines show a *crude* coding of this
idea:

R> x<- rnorm(200)
R> pdf<- density(x)
R> f<- approxfun(pdf$x, pdf$y, yleft=0, yright=0)
R> cdf<-integrate(f, -Inf, 2)  # replace '2' by any other value.

Answer 2.
Do not integrate the estimated density, since this is not the most
efficient estimate of the underlying CDF. Instead, smooth the empirical
distribution function, using a smaller bandwidth of the kernel. The
optimal bandwith for kernel density estimation is of order 0(n^{-1/5}),
while for CDF estimation is O(n^{-1/3}), if n denotes the sample size.

In practical terms you can still use density(), as indicated above, but
selecting a suitably smaller bandwith compared to the one used for
density estimation.


Best wishes

Adelchi Azzalini
-- 
Adelchi Azzalini  <[EMAIL PROTECTED]>
Dipart.Scienze Statistiche, Università di Padova, Italia
tel. +39 049 8274147,  http://azzalini.stat.unipd.it/

______________________________________________
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.

Reply via email to