如何估计scipy、numpy and/or Python中的80%累积分布点?

How do I estimate the 80% cumulative distribution point in scipy, numpy and/or Python?

Seaborn 有一个 kdeplot function,如果您传入 cumulative=True,则会绘制数据的累积分布。我需要注释或计算出累积分布为 80% 的 x 轴上的值,然后从该值绘制一条垂直线。

numpy、scipy 或 Python 中的其他地方是否有可以计算该值的方法?

如果您已经有cdf,那么您可以进行以下操作。我不确定你的数据是如何格式化的,但假设你有两个数组,一个 x 值和一个 y 值,你可以搜索 y 值刚好在 0.8 以上的索引。相应的 x 值就是您要查找的内容。一个快速的方法是:

,因为你的 y 值应该已经排序了
import bisect
index = bisect.bisect_right(y_vals, 0.8) - 1

这是最近邻方法。如果你想要一个稍微更准确的 x 值,你可以在 indexindex-1 之间进行线性插值。