[R] density estimates for fixed points

Karl Ove Hufthammer karl at huftis.org
Tue Feb 16 14:43:03 CET 2010


On Tue, 16 Feb 2010 03:36:17 -0800 (PST) geir <geirdb at hotmail.com> 
wrote:
> I want the density estimates for the points in a k x 2 matrix like for
> example
> 
>                                   A=[(0,7,0.3),(0.1,0.2),...,(0.5,0.9)]^T
> 
> which is not equally spaced, (and i do not need the density of every
> combination of these coordinates). So that the output is f(0.7,0.3),
> f(0.1,0.2), ... ,f(0.5,0.9), where "f" is the kernel estimator based on a
> and b. 

*If* you required the density of every combination, it would be easiest 
just to modify the definition of 'gx' and 'gy' in the 'kde2d' function. 

But since you don't, why not calculate the density directly for each 
point (e.g., in a loop). The formula is simple enough:

  mean(dnorm(x-gx,sd=h1)*dnorm(y-gy,sd=h2))

where 'gx' and 'gy' is the point you want to estimate the density at, 
and 'h1' and 'h2' are the bandwidths, typically 'h1=bandwidth.nrd(x)/4' 
and 'h2=bandwidth.nrd(y)=4'.

Note that, depending on the number of coordinates you need to calculate 
the kernel density esimate at, it may be faster to use the first 
solution and just discard the estimates you don't need. (It will use a 
lot more memory, though.)

-- 
Karl Ove Hufthammer



More information about the R-help mailing list