【发布时间】:2015-09-08 02:33:45
【问题描述】:
在估计核密度之后,谁能解释一下原因
d = gaussian_kde(g[:,1])
并计算它的积分和:
x = np.linspace(0, g[:,1].max(), 1500)
integral = np.trapz(d(x), x)
我得到的积分和与 1 完全不同:
print integral
Out: 0.55618
【问题讨论】:
-
假设 g[:,1] 是非负数
-
由于高斯分布有无限的支持,估计的高斯内核也将超过
g[:,1].max()。尝试将x的两个边界扩展为g[:,1]中的数据范围。 -
用 x = np.linspace(g[:,1].min(), g[:,1].max(), 1500) 结果变化不大:0.55642
-
试试:
rang=g[:,1].max() - g[:,1].min(),x = np.linspace(g[:,1].min() - rang, g[:,1].max() + rang, 1500) -
这很有帮助。密度估计后,支持范围发生大于初始数据范围。
标签: python numpy kernel-density