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