我的老板想要我们的工单处理系统的指标,他想要的指标之一是“90% 的时间”,他将其定义为处理 90% 的工单所花费的时间。我猜他是在考虑 10% 的异常可以忽略不计。我希望这至少接近一些统计有效性。所以我得到了我放入 numpy 数组的时间列表。这是我想出的代码。
import numpy as np
inliers = data[data<np.percentile(data, 90)]
ninety_time = inliers.max()
这有效吗?有没有更好的办法?
百分位数是一种统计上完全有效的方法。它们用于提供对数据的可靠描述。例如,50% 的百分位数是中位数,箱线图通常显示 25%、50% 和 75% 的百分位数,以了解数据涵盖的范围。
90% 百分位数可以看作是对最大值的一种相当天真和粗略的估计,它比实际最大值更不容易受到异常值的影响。 (显然,它有些偏差——它总是小于真正的最大值。)谨慎使用这种解释。最安全的做法是按原样查看 90% 的百分位数 - 90% 的数据低于该值,10% 的数据高于该值。
您的代码有些多余,因为 percentile(data, 90)
返回数据中 90% 的元素小于或等于的值。所以我会说这正好是 90% 的时间,没有必要计算 <90% 的值。对于大量样本和连续值,<=90% 和 <90% 之间的差异无论如何都会消失。
我是一名优秀的程序员,十分优秀!