我正在为软件构建进行统计。对于每个通过/失败和经过时间的构建,我都有数据,我们每星期生成约200个数据。
成功率很容易累计,我可以说在任何给定的一周内有45%的人通过了考试。但是我也想汇总经过的时间,并且我想确保我不会太误解数据。想通了我最好问专业人士:-)
说我有10个持续时间。它们代表通过和失败情况。一些构建会立即失败,这会使持续时间异常短。一些在测试期间挂起并最终超时,导致持续时间很长。我们会开发不同的产品,因此即使成功构建也会在90秒到4个小时之间变化。
我可能会得到这样的一套:
[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]
我的第一种方法是通过对集合进行排序并选择中间值来获得中值时间,在这种情况下为7812(我不理会偶数集的算术平均值)。
不幸的是,这似乎产生了很多差异,因为我只挑选了一个给定的值。因此,如果我趋向于此值,则取决于哪个构建在中间,它会在5000-10000秒之间反弹。
为了解决这个问题,我尝试了另一种方法-移除异常值,然后对剩余值进行均值计算。我决定将其拆分为三分位数,并且仅在中间的一个上工作:
[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]
在我看来,这看起来更好的原因有两个:
- 我们不希望对更快的构建采取任何措施,它们已经可以了
- 最长的构建可能是超时引起的,并且将始终存在。我们还有其他机制可以检测到这些
因此在我看来,这就是我要寻找的数据,但我担心通过消除真实性来实现平滑性。
这有争议吗?方法理智吗?
谢谢!