如何估计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 值,你可以在 index
和 index-1
之间进行线性插值。
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 值,你可以在 index
和 index-1
之间进行线性插值。