Inconsistency between gaussian_kde and density integral sum

664 views Asked by At

Can one explain why after estimation of kernel density

d = gaussian_kde(g[:,1])

And calculation of integral sum of it:

x = np.linspace(0, g[:,1].max(), 1500)
integral = np.trapz(d(x), x)

I got resulting integral sum completely different to 1:

print integral
Out: 0.55618
1

There are 1 answers

0
cr1msonB1ade On BEST ANSWER

As stated in my comment, this is an issue with kernel density support. The Gaussian kernel has infinite support. Even fit on data with a specific range the range of the Gaussian kernel will be from negative to positive infinity. That being said the large majority of the density will lie within a range reasonably around the range of the fitted data.

If you would like a Gaussian kernel fitted within the range of your original data, you can fit a truncated Gaussian kernel by truncating the kernel and re-normalizing the truncated portion to integrate to 1, but I am not sure if that is what you want here. You can also truncate to a non-negative Gaussian kernel with similar logic.