通过 plt.hist() 的累积分布函数

Cumulative distribution function via plt.hist()

我有数据,我想绘制经验累积分布函数。我从matplotlib official site中拿了一段代码。他们使用直方图绘制阶跃函数。

data = np.array([5, 8, 5, 9, 10, 15, 7, 12, 19, 21, 7, 10, 11,
    13, 18, 20, 20, 14, 15, 15, 21, 3, 8, 13, 14, 14, 15,
    14, 17, 24, 22, 28, 24, 22, 25, 16, 21, 24, 18, 20])

hist_cum, bin_edges, patches = plt.hist(data, bins='sturges', density=True,
                                         histtype='step',cumulative=True)

输出:histogram

问题是:数据中有一个'28'。公式表示 F(x) = P{X < x}。严格的不平等。这意味着它不能是 x=28 左边的 1。

我无法理解如何修复它。

几件事。首先,我认为您对 CDF 的理解是不稳定的。对于经验分布,所有 X > max(您的数据)的 CDF 图都是 1.0。正确的?来自该分布的随机样本 X 小于特定点 x,wayyyy 偏向图高端的概率为 1.0。

也就是说,我认为您想要做的是控制绘图的轴限制。在渲染绘图之前尝试修改这些命令:

plt.xlim(0, 28)
plt.xticks(np.arange(0,30,2))