微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

高斯 kde 图下的面积不等于 1

如何解决高斯 kde 图下的面积不等于 1

我正在使用 gaussian_kde 在绘图上绘制概率分布。然而,我得到的规模并不是我所期望的。我本以为发行版会整合到 1。我附上了一个最小的例子

创建一些数据,权重于选项 1:

import numpy as np
from scipy import stats

option_1 = (0,0)
option_2 = (1,2)
option_3 = (-2,-2.5)

points = []
for i in range(100):
    points.append(option_1)
for i in range(10):
    points.append(option_2)
    points.append(option_3)

m1,m2 = zip(*points)

创建我的 KDE,Z:

yy = np.arange(-3,3,0.5)
xx = np.arange(-3,0.5)
X,Y = np.meshgrid(xx,yy)

positions = np.vstack([X.ravel(),Y.ravel()])
values = np.vstack([m1,m2])
kernel = stats.gaussian_kde(values)
Z = np.reshape(kernel(positions).T,X.shape)

如果你愿意,你可以绘制它:

import matplotlib.pyplot as plt
fig,ax = plt.subplots()
im=ax.imshow(np.rot90(Z),cmap=plt.cm.gist_earth_r,extent=[-3,-3,3])
ax.plot(m2,m1,'k.',markersize=2)
fig.colorbar(im)

ax.set_xlim([-3,3])
ax.set_ylim([-3,3])
plt.show()

然后尝试找到所有框下方的区域:

sum_of_Boxes = 0
for x in Z:
    for y in x:
        sum_of_Boxes += y * 0.5 * 0.5

这会导致 sum_of_Boxes = 1.738937123。我希望这个值至少在 1 左右。但是,我已经很失望了。在其他示例中,使用更大的数字和更重的集合,我更接近 area=1

我是否误解了高斯 KDE 的作用?我希望这些框会根据在其中一个中看到结果的概率来着色。如果盒子小得多(因此峰值更锐利),那么我认为图标上显示的数字会有意义。我该如何解决这个问题,使所有框下方的区域变为 ~1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。