Zintegruj oszacowanie gęstości jądra 2D

mamx,y dystrybucja punktów, za które otrzymujęKDE przezscipy.stats.gaussian_kde. To jest mój kod i jak wygląda wyjście (x,y dane można uzyskać ztutaj):

import numpy as np
from scipy import stats

# Obtain data from file.
data = np.loadtxt('data.dat', unpack=True)
m1, m2 = data[0], data[1]
xmin, xmax = min(m1), max(m1)
ymin, ymax = min(m2), max(m2)

# Perform a kernel density estimate (KDE) on the data
x, y = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([x.ravel(), y.ravel()])
values = np.vstack([m1, m2])
kernel = stats.gaussian_kde(values)
f = np.reshape(kernel(positions).T, x.shape)

# Define the number that will determine the integration limits
x1, y1 = 2.5, 1.5

# Perform integration?

# Plot the results:
import matplotlib.pyplot as plt
# Set limits
plt.xlim(xmin,xmax)
plt.ylim(ymin,ymax)
# KDE density plot
plt.imshow(np.rot90(f), cmap=plt.cm.gist_earth_r, extent=[xmin, xmax, ymin, ymax])
# Draw contour lines
cset = plt.contour(x,y,f)
plt.clabel(cset, inline=1, fontsize=10)
plt.colorbar()
# Plot point
plt.scatter(x1, y1, c='r', s=35)
plt.show()

Czerwony punkt ze współrzędnymi(x1, y1) ma (jak każdy punkt na wykresie 2D) powiązaną wartość podaną przezf (jądro lubKDE) od 0 do 0,42. Powiedzmy tof(x1, y1) = 0.08.

Muszę się zintegrowaćf z limitami integracji wx iy podane przez te regiony, w którychf ocenia namniej niżf(x1, y1), tj .:f(x, y)<0.08.

Za to, co widziałempython może przeprowadzić integracjęFunkcje i jednowymiarowe macierze poprzez integrację numeryczną, ale nie widziałem niczego, co pozwoliłoby mi na przeprowadzenie liczbowej integracji na tablicy 2D (f jądro) Ponadto nie jestem pewien, jak rozpoznałbym regiony podane przez ten konkretny warunek (tj .:f(x, y)mniej niż podana wartość)

Czy można to w ogóle zrobić?

questionAnswers(2)

yourAnswerToTheQuestion