[SciPy-user] KDE question
David Cournapeau
david@ar.media.kyoto-u.ac...
Sat Nov 10 01:53:06 CST 2007
Robert Kern wrote:
> Zachary Pincus wrote:
>> Hello all,
>>
>> I'm using scipy.stats.gaussian_kde to estimate the a probability
>> density based on some scattered 2D samples. What I would like to do
>> eventually is plot a line that surrounds (say) 90% of the probability
>> density.
>>
>> Clearly this line corresponds to some contour of the density function
>> (which I can extract out easily enough from KDE density estimates on
>> a grid), but I'm not sure how to figure out what exact contour value
>> it is that I want.
>>
>> Given the KDE density estimates on a grid, I could empirically figure
>> out which value is closest, but I was wondering if there's a simpler
>> closed-form solution... (And apologies if it's somehow obvious; I'm
>> feeling a bit foggy-headed about this.)
>
> I don't think there is a closed-form solution for n>1-D. It shouldn't be too
> hard to evaluate the KDE on a grid, then search for the value between 0 and the
> peak where the integral is around 90%.
I am not sure I understand exactly the problem, but if the problem is to
find a contour level of a Gaussian density, it has a closed form for any
dimension. For the actual code, you can look at
scikits.learn.machine.em, function gauss_ell, which is used by my Em
toolbox for gaussian mixtures
http://projects.scipy.org/scipy/scikits/browser/trunk/learn/scikits/learn/machine/em/densities.py
The function can be used without any other code, I think (at least, I
remember I wanted it that way:) ). This is based on the fact that if X ~
N(mu, sigma), then (X-mu)' * sigma^-1 * (X-mu) is a one dimensional
random variable following a chi square.
cheers,
David
More information about the SciPy-user
mailing list