首页 > 解决方案 > matplotlib 直方图中“计数”和“观察次数”之间的差异

问题描述

matplotlib.pyplot.hist() 文档将参数“密度”(其不推荐使用的名称为“规范”)描述为:

密度:布尔,可选

如果为 True,则返回元组的第一个元素将是归一化以形成概率密度的计数,即直方图下的面积(或积分)总和为 1。这是通过将计数除以观察次数来实现的bin 宽度,而不是除以观察总数。

对于元组的第一个元素,它指的是 y 轴值。它说它设法通过以下方式使直方图下的面积为 1:计数除以观察次数乘以 bin 宽度。

观察次数观察次数有什么区别?在我看来,它们是同一件事:变量值落入某个 bin 的实例数(或计数数或观察数)。但是,这意味着每个 bin 的转换后的计数数只是 bin 宽度的 1(因为 # / #*bin_width = 1/bin_width),这没有任何意义。

有人可以为我澄清一下吗?感谢您的帮助,并对这个可能愚蠢的问题感到抱歉。

标签: pythonmatplotlibhistogram

解决方案


我认为文档中的措辞有点混乱。计数是给定 bin 中的条目数(bin 的高度),观察数是进入直方图的事件总数。

该文档对它们如何规范化进行了区分,因为通常有两种方法可以进行规范化:

  • count / number of observations- 在这种情况下,如果您将输出数组的所有条目相加,您将得到1
  • count / (number of observations * bin width)- 在这种情况下,输出数组的积分1是真实的概率密度。这就是这样matplotlib做的,他们只是想清楚这种区别。

推荐阅读