numpy直方图累积密度不等于1

我从另一个线程@EnricoGiampieri对累积分布图python的回答中获得了提示,我写道:

# plot cumulative density function of nearest nbr distances

# evaluate the histogram

values, base = np.histogram(nearest, bins=20, density=1)

#evaluate the cumulative

cumulative = np.cumsum(values)

# plot the cumulative function

plt.plot(base[:-1], cumulative, label='data')

我在np.histogram的文档中输入了density = 1,它说:

“请注意,除非选择了单位宽度的bin,否则直方图值的总和将不等于1;这不是概率质量函数。”

好吧,的确,当绘制它们时,它们的总和不是1。但是,我不理解“统一宽度的箱”。当我将垃圾箱设置为1时,我得到一个空图表;当我将它们设置为人口规模时,我的总和不等于1(更像是0.2)。当我使用建议的40个垃圾桶时,它们的总和约为.006。

有人可以给我一些指导吗?谢谢!

回答:

您需要确保垃圾箱的宽度均为1。即:

np.all(np.diff(base)==1)

为此,您必须手动指定垃圾箱:

bins = np.arange(np.floor(nearest.min()),np.ceil(nearest.max()))

values, base = np.histogram(nearest, bins=bins, density=1)

你会得到:

In [18]: np.all(np.diff(base)==1)

Out[18]: True

In [19]: np.sum(values)

Out[19]: 0.99999999999999989

以上是 numpy直方图累积密度不等于1 的全部内容, 来源链接: utcz.com/qa/408183.html

回到顶部