使用直方图绘制累积分布#

这显示了如何将累积的归一化直方图绘制为阶跃函数,以便可视化样本的经验累积分布函数 (CDF)。我们还展示了理论上的 CDF。

hist演示了该功能的其他几个选项。即,我们使用normed参数对直方图进行归一化,并对累积参数使用几个不同的选项。normed参数采用布尔值。当 时True,bin 高度被缩放,使得直方图的总面积为 1。累积关键字参数更细微。像normed一样,你可以传递 True 或 False,但你也可以传递 -1 来反转分布。

由于我们显示的是标准化和累积直方图,因此这些曲线实际上是样本的累积分布函数 (CDF)。在工程中,经验 CDF 有时被称为“非超越”曲线。换句话说,您可以查看给定 x 值的 y 值,以获得不超过该 x 值的样本的概率和观察值。例如,x 轴上的值 225 对应于 y 轴上的大约 0.85,因此样本中的观察值不超过 225 的可能性为 85%。相反,将cumulative-1 设置为此示例的最后一个系列创建了一条“超越”曲线。

选择不同的 bin 计数和大小会显着影响直方图的形状。Astropy 文档有一个关于如何选择这些参数的精彩部分:http: //docs.astropy.org/en/stable/visualization/histogram.html

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)

mu = 200
sigma = 25
n_bins = 50
x = np.random.normal(mu, sigma, size=100)

fig, ax = plt.subplots(figsize=(8, 4))

# plot the cumulative histogram
n, bins, patches = ax.hist(x, n_bins, density=True, histtype='step',
                           cumulative=True, label='Empirical')

# Add a line showing the expected distribution.
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))
y = y.cumsum()
y /= y[-1]

ax.plot(bins, y, 'k--', linewidth=1.5, label='Theoretical')

# Overlay a reversed cumulative histogram.
ax.hist(x, bins=bins, density=True, histtype='step', cumulative=-1,
        label='Reversed emp.')

# tidy up the figure
ax.grid(True)
ax.legend(loc='right')
ax.set_title('Cumulative step histograms')
ax.set_xlabel('Annual rainfall (mm)')
ax.set_ylabel('Likelihood of occurrence')

plt.show()
累积步长直方图

参考

此示例中显示了以下函数、方法、类和模块的使用:

由 Sphinx-Gallery 生成的画廊