可以从数据中删除异常值吗?

机器算法验证 异常值
2022-02-14 16:02:08

我寻找一种从数据集中删除异常值的方法,我发现了这个问题

然而,在这个问题的一些评论和答案中,人们提到从数据中删除异常值是一种不好的做法。

在我的数据集中,我有几个异常值很可能只是由于测量误差。即使其中一些不是,我也无法逐个检查,因为数据点太多。它在统计上是否有效,而不仅仅是删除异常值?或者,如果不是,还有什么解决方案?

如果我只是将这些点留在那里,它们会以不反映现实的方式影响例如平均值(因为它们中的大多数都是错误的)。

编辑:我正在处理皮肤电导数据。大多数极端值是由于有人拉扯电线之类的伪影造成的。

EDIT2:我分析数据的主要兴趣是确定两组之间是否存在差异

4个回答

一种选择是排除异常值,但恕我直言,只有当您可以(几乎可以肯定地)争论为什么这些点无效(例如测量设备发生故障,测量方法由于某种原因不可靠......)时,您才应该这样做。例如,在频域测量中,DC 经常被丢弃,因为许多不同的项对 DC 有贡献,通常与您试图观察的现象无关。

去除异常值的问题在于,要确定哪些点是异常值,您需要有一个好的模型来判断什么是“好数据”或不是“好数据”。如果您不确定模型(应该包括哪些因素,模型具有什么结构,噪声的假设是什么……),那么您就无法确定异常值。这些异常值可能只是试图告诉您模型错误的样本。换句话说:去除异常值会强化你的(不正确的!)模型,而不是让你获得新的见解!

另一种选择是使用稳健的统计数据。例如,均值和标准差对异常值很敏感,“位置”和“传播”的其他指标更加稳健。例如,使用中位数代替平均值。代替标准偏差,使用四分位间距。您可以使用稳健回归,而不是标准的最小二乘回归。所有这些稳健的方法都以一种或另一种方式淡化了异常值,但它们通常不会完全删除异常值数据(即一件好事)。

我不建议在主要分析中排除任何异常值(除非你真的很肯定他们是错误的)。不过,您可以在敏感性分析中进行,并比较两种分析的结果。在科学中,当你关注这些异常值时,你经常会发现新的东西。

更详细地说,想想弗莱明对青霉素的开创性发现,基于他的实验被霉菌意外污染:

http://www.abpischools.org.uk/page/modules/infectiousdiseases_timeline/timeline6.cfm?coSiteNavigation_allTopic=1

纵观过去或现在,异常值检测通常用于指导生物医学科学的创新。例如,请参阅以下文章(带有一些合适的 R 代码):

http://www.la-press.com/a-comparison-of-methods-for-data-driven-cancer-outlier-discovery-and-a-article-a2599-abstract?article_id=2599

http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3394880/

http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0102678

最后,如果您有合理的理由排除某些数据,您可以这样做,最好是在敏感性分析中,而不是在主要分析中。例如,您可以排除所有在生物学上不合理的值(例如脓毒症患者的 48 摄氏度温度)。同样,您可以排除任何给定患者的所有第一次和最后一次测量,以最大限度地减少运动伪影。但是请注意,如果您在事后执行此操作(不是基于预先指定的标准),这可能会导致数据按摩。

以为我会添加一个关于删除异常值的警示故事:

还记得极地臭氧层空洞的问题吗?有一颗卫星被放置在极地上方的轨道上,专门用于测量臭氧浓度。几年来,来自卫星的后处理数据报告说,极地臭氧处于正常水平,尽管其他来源清楚地表明臭氧消失了。终于有人回去检查卫星软件了。事实证明,有人编写了代码来检查原始测量值是否在典型历史水平的预期范围内,并假设超出范围的任何测量值只是仪器的“尖峰”(即异常值),自动更正值幸运的是,他们还记录了原始测量值。在检查他们时,他们发现这个洞一直被报告。

“异常值”是一个方便的术语,用于将不符合您期望的流程外观的数据收集在一起,以便从分析中删除。

我建议永远不要(稍后警告)删除异常值。我的背景是统计过程控制,因此经常处理大量自动生成的时间序列数据,这些数据根据数据和分布使用运行图/移动箱线图等进行处理。

异常值的问题是它们将始终提供有关您的“过程”的信息。通常你认为的一个过程实际上是多个过程,它比你想象的要复杂得多。

使用您问题中的示例,我建议可能有许多“过程”。会有变化,因为...

  • 由一个电导装置采集的样品
  • 在电导装置之间采集的样本
  • 当受试者取下探针时
  • 当主体移动时
  • 一个受试者全身皮肤或不同采样日(头发、水分、油脂等)之间的差异
  • 科目之间的差异
  • 对测量人员的培训和员工之间的差异

所有这些过程都会在数据中产生额外的变化,并且可能会移动平均值并改变分布的形状。其中许多您将无法分成不同的流程。

因此,将数据点作为“异常值”删除的想法......我只会删除数据点,当我可以肯定地将它们归因于我不想包含在我的分析中的特定“过程”时。然后,您需要确保将不包含的原因记录为分析的一部分,因此很明显。不要假设归因,这是在数据收集过程中通过观察进行额外记录的关键。

我会质疑您的陈述“因为它们中的大多数都是错误”,因为它们不是错误,而只是您在测量中确定为不同的不同过程的一部分。

在您的示例中,我认为排除您可以归因于您不想分析的单独过程的数据点是合理的。