消除异常值的好形式?


12

我正在为软件构建进行统计。对于每个通过/失败和经过时间的构建,我都有数据,我们每星期生成约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]

在我看来,这看起来更好的原因有两个:

  • 我们不希望对更快的构建采取任何措施,它们已经可以了
  • 最长的构建可能是超时引起的,并且将始终存在。我们还有其他机制可以检测到这些

因此在我看来,这就是我要寻找的数据,但我担心通过消除真实性来实现平滑性。

这有争议吗?方法理智吗?

谢谢!


您仍然没有说为什么要测量经过时间。您是否需要估算要支付的总机器时间?您是否需要估算您可以进行多少次咖啡机旅行?如果您知道时代,您将采取什么行动?
StasK 2014年

另外,如果您要构建的产品种类繁多,那么跳动是很自然的事情,因此您不应该试图摆脱它。如果您可以衡量给定项目的复杂度(文件数,代码行数,例程数等),那么您可能会对通过复杂度标准化的经过时间感兴趣,这可能会更稳定。如果您想使其随着时间的推移变得真正稳定和平坦,那么您将无法学习何时需要采取行动。
StasK 2014年

@StasK:感谢您的评论,这是宝贵的意见。行动已经众所周知:其中许多构建耗时太长,我们应该努力使它们更快。我想使用综合度量来查看情况是好还是坏。
金·格拉斯曼(KimGräsman)2014年

是的,理想情况下,我可能会按产品进行此操作,但是源数据不会保留该信息,因此我根据对分发的了解作弊。当然,这可能会随着时间而改变,我可能不得不重新考虑。
金·格拉斯曼(KimGräsman)2014年

在我看来,您的数据中包含三个组:(i)构建该构建;(ii)失败的构建(并且您说它们往往会很快失败),以及(iii)失败的构建(或几乎如此)-如果不是您要采取行动的唯一群体,那可能就是主要的组织。时间的总和可能没有什么用;但是最长的构建第10个或构建时间分布的第10个百分位数之类的东西可能会更好地衡量您关心的极端分布。这大致就是EPA在其污染监测中使用的。
StasK 2014年

Answers:


8

考虑到您的目标,您的方法对我来说很有意义。它很简单,很简单,可以完成工作,并且您可能不想撰写有关它的科学论文。

在处理离群值时,应该始终做的一件事就是了解它们,并且您已经在这方面做得很好。因此,可能会改善您的方法:您可以使用有关挂起哪些版本的信息吗?您提到您具有“其他检测那些的机制”-您可以检测到它们,然后仅从样本中删除它们吗?

否则,如果您有更多数据,则可以考虑删除三分位数而不是五分位数...但是在某些时候,这可能不会有太大的不同。


当我说“其他”机制时,我指的是该数据集之外的完全不同的内容,因此我无法在此基础上做出决定。我们每天都在汇总数据,每天只能获得约50个构建,因此我认为五分位数可能生成的数据太少,但是感谢您的建议,我可以尝试一下!
金·格拉斯曼(KimGräsman)2014年

13

你在做什么被称为修剪均值

完成后,通常从两侧修剪相同的比例(修剪比例)。

您可以修剪介于0%(通常的平均值)到(几乎)50%(给出中位数)之间的任何值。您的示例从两端修剪掉了30%。

请参阅此答案和相关的 Wikipedia文章

[编辑:请参阅Nick Cox 关于该主题的精彩讨论

这是一个相当合理且功能强大的位置估算器。通常认为它比高度偏斜的分布更适合于近对称分布,但如果它符合您的目的*,则没有理由不使用它。最佳裁切量取决于您所拥有的分布类型和所需的属性。

*尚不清楚您要在这里估算什么。

还有许多其他可靠的方法可以概括分布的“中心”,您可能还会发现其中一些有用的方法。(例如,M估计量可能对您有用)

[如果要用修整后的均值进行相应的变异性度量,则Winsorized标准差可能对您有所帮助(本质上,在计算sd时,请使用最极端的值替换修整时要截断的值)。没有切断)。]


我实际上还没有检查过我的分布的典型形状,我认为它每周变化的程度取决于人们在哪里进行更改。实际上,它可能高度偏斜。
金·格拉斯曼(KimGräsman)2014年

谢谢您为我的黑客工作加上名字,顺便说一句。它激发了一些信心:-)
KimGräsman2014年

2

还有另一种方法是计算所有成对平均值的中位数或进行自举。

更新:

所有成对平均的中位数称为Hodges-Lehmann估计量。该估计器通常具有很高的效率。这百科全书条目由Scott L.赫什伯格说:

尽管对于非对称分布,中位数和Hodges-Lehmann估计量均优于样本均值,但Hodges-Lehmann估计量的均值渐近相对效率比中值大

自举法的相关性可能较低,并且计算量更大,但是您可以对数据进行替换以获取少量的随机样本,然后计算该子样本的平均值,进行多次并计算所有平均值的中位数。

在这两种情况下,您都不必再从数据值中选择一个值(在计算普通中位数时),而是从数据子集中的许多平均值中进行选择。


2
您能否描述这些方法的优缺点?单行答案是不够的。
StasK 2014年

1
我试图让更多的解释的更新
芬兰人奥雅纳尼尔森

成对平均值和自举似乎都涉及整个数据集的许多重新计算。该样本通常很小(<500个值),因此这可能不是问题,但看起来确实更复杂。很高兴知道,如果修剪后的均值过钝,还有更多的方法可以进行试验。谢谢!
金·格拉斯曼(KimGräsman)2014年

1

您似乎在做合理的事情:仅出于参考目的,出于类似的目的,我经常使用以下过程:但是我只对异常值异常值感兴趣。

计算五个数字摘要:最小值,Q1,中位数,Q3,最大值。计算四分位间距:Q3-Q1。在Q1-IQR * X和Q3 + IQR * X上设置离群值“栅栏”:其中“ X”的合理值为1.5。

使用Excel和上面的图形(使用1.5表示'X'**)产生一个较高的离群值:21011

MIN 50
Q1  3014
MEDIAN  8095
Q3  9073.25
MAX 21011
IQR 6059.25
UPPER FENCE 18162.125
LOWER FENCE -6074.875

因此,下面的围栏实际上对于您的示例没有用处或不切实际:这支持了另一篇文章中关于理解特定数据含义的重要性的观点。

(**找到了对“ 1.5”规则的引用:我并不是说这是权威,但对我来说似乎是一个合理的起点:http : //statistics.about.com/od/Descriptive-Statistics/a/什么是四分位数间距规则(htm

您还可以决定(也许)仅使用IQR本身内的数据点:这似乎会产生合理的结果(因为方法的成员资格非常相似)。

使用相同的数据,这会将以下数据点放置在“关注区域”中:

7812
3014
13400
21011
8993
8378
9100

在箱线图上:这些点将全部落在图的箱形部分(而不是晶须部分)内。

可以看出,该列表中包含一些不在原始列表中的项目(运行时间较长的版本);我不能说一个清单在任何方面都更准确。(再次,归结为了解您的数据集)。


谢谢,这在原则上似乎与我已经在做的非常接近。这种方法在什么方面比仅对数据集进行分区更好?
金格拉斯曼,2014年

1
我不能真正说出哪种方法更好:我根据统计书籍/网站中的内容提出了这一建议。该方法添加的一件事(我认为)是,您可以将“围栏”调整到您认为合适的任何位置(调整1.5系数);仅占据中间三分之一的位置可能更容易包含潜在的较高异常值(可以将其更好地分类为围栏之外).....但我不能肯定地说。关于使用四分位数的另一件事是,5位数摘要非常容易理解和常用。
monojohnny 2014年

感谢您提供的详细信息!我在Python中执行此操作,因此我已经有了一个函数,可以将数据集划分为N个部分,然后取出中间部分。更改为5个或7个分区是一个字符的更改。但是您的观点是正确的,很高兴看到另一种解决此问题的常用方法。再次感谢。
金格拉斯曼2014年

对我来说听起来不错:关于四分位数和栅栏(而不是具有可变分区),我还要再强调一点:是它们直接映射到箱线图:en.wikipedia.org/wiki/Box_plot允许(除其他外)图形化比较不同分布的标准方法。
monojohnny 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.