用平均值替换异常值

机器算法验证 意思是 异常值 强大的 增删改查
2022-01-20 22:27:38

这个问题是我的一个不懂网络的朋友问的。我没有统计背景,我一直在互联网上搜索这个问题。

问题是:是否可以用平均值替换异常值?如果可能的话,是否有任何书籍参考/期刊来支持此声明?

4个回答

显然这是可能的,但尚不清楚这是否是一个好主意。

让我们详细说明这是一种有限或有缺陷的解决方案的几种方式:

  • 实际上,您是在说异常值完全不可信,您唯一可能的猜测是该值应该是平均值。如果这就是您的想法,那么忽略所讨论的观察结果可能会更诚实,因为显然您没有足够的信息来做出更好的猜测。

  • 不言而喻,您首先需要一个或多个标准来识别异常值(正如@Frank Harrell 所暗示的那样)。否则,这是一个任意和主观的程序,即使它是作为判断问题进行辩护的。根据某些标准,以这种方式删除异常值可能会产生更多异常值作为副作用。一个例子可能是离群值与均值的标准差远不止如此。移除异常值会改变标准偏差,新的数据点现在可能符合条件,依此类推。

  • 大概这里的平均值是指所有其他值的平均值,@David Marx 明确指出了这一点。没有这个规定,这个想法是模棱两可的。

  • 使用平均值似乎是一个安全或保守的过程,但将一个值更改为平均值将改变几乎所有其他统计数据,包括水平、规模和形状的测量以及它们的不确定性指标,@whuber 强调了这一点。

  • 平均值甚至可能不是一个可行的值:简单的例子是当值是整数时,但通常平均值不是整数。

  • 即使认为使用汇总度量是一件谨慎的事情,使用平均值而不是中位数或任何其他度量也需要一些理由。

  • 每当有其他变量时,修改一个变量的值而不参考其他变量可能会使数据点在其他意义上异常。

如何处理异常值是一个开放且非常困难的问题。松散地,不同的解决方案和策略具有不同的吸引力。

作为一个非常粗略的概括,从极端悲观主义者到极端乐观主义者,对统计和机器学习中的异常值的看法是连续的。极端悲观主义者觉得被要求充当统计调查官,其职责是在数据中发现异常值作为令人讨厌的污染物并严厉处理它们。例如,这可能是处理金融交易数据的人的立场,最诚实或最真实,但有些欺诈或犯罪。极端乐观主义者知道异常值很可能,而且通常是真实的——亚马逊,或亚马逊,足够真实,而且非常大。事实上,异常值通常是有趣的、重要的和有启发性的。洪水、火灾和金融危机就是这样,有些非常大。

以下是部分可能性列表。排序是任意的,并不意味着在适用性、重要性或任何其他标准方面传达任何顺序。这些方法也不是相互排斥的。

  • 一个(在我看来很好的)定义是“[o] utliers 是与大多数样本相关的样本值”(WN Venables 和 BD Ripley。2002. Modern Applied Statistics with S. New York:Springer,第 119 页)。然而,惊喜存在于旁观者的脑海中,并且取决于数据的某种默认或显式模型。可能存在另一种模型,在该模型下异常值一点也不奇怪,因此数据实际上是(比如说)对数正态或伽马而不是正态。简而言之,准备好(重新)考虑你的模型。

  • 进入实验室或现场再次进行测量。这通常是不切实际的,但它在几门科学中似乎是标准的。

  • 测试异常值是否真实。大多数测试对我来说看起来很做作,但您可能会找到一个您认为适合您的情况的测试。总是需要对测试是适当的非理性信念来应用测试,然后将其呈现为典型的理性。

  • 根据判断将它们扔掉。

  • 使用一些或多或少的自动化(通常不是“客观”)规则将它们扔掉。

  • 部分或完全忽略它们。这可能是正式的(例如修剪)或只是将它们留在数据集中,但由于太热而无法处理而将它们从分析中省略。

  • 使用某种调整将它们拉进来,例如 Winsorizing。

  • 通过使用其他一些稳健的估计方法来淡化它们。

  • 通过改变规模来淡化它们。

  • 通过使用非身份链接功能来淡化它们。

  • 通过拟合一些适当的肥尾、长尾或重尾分布来适应它们,不带或不带预测因子。

  • 通过使用指标或虚拟变量作为模型中的额外预测变量来适应。

  • 通过使用一些非参数(例如基于等级)的程序来回避这个问题。

  • 使用引导、折刀或基于排列的过程来处理隐含的不确定性。

  • 编辑以根据确定性逻辑将异常值替换为更可能的值。“18岁的祖母不太可能,但这个人是1932年出生的,现在是2013年,所以估计真的81岁了。”

  • 编辑以使用当前可接受的不完全白魔法的某种插补方法替换不可能或不可信的异常值。

  • 分析有无,并查看异常值在统计上、科学上或实践上的差异有多大。

  • 贝叶斯的东西。我之前完全不知道禁止提供任何细节的内容。

编辑第二版受益于其他答案和评论。我试图标记我的灵感来源。

你的问题暗示了几个问题。

  1. 什么是“异常值”?
  2. 是否应该替换“异常值”?
  3. 与其他一些估计相比,平均值有什么特别之处?
  4. 您将如何补偿以增加替换后的表观方差,导致方差过小?
  5. 为什么不使用能够抵抗异常值的稳健估计器?
  6. 这是自变量还是因变量?

1-5 中没有一个有明确的答案。如果您真的觉得这些“异常值”是错误的并且您不想使用稳健的统计方法,您可以让它们丢失并使用多重插补作为一种可能的解决方案。如果变量是因变量,一个稳健的选择是序数回归。

该提案有许多缺陷。这里可能是最大的。

假设您正在收集数据,并且您看到以下值:

2,3,1

到目前为止,平均值是6/3=2

然后是一个异常值:

2,3,1,1000

所以你用平均值替换它:

2,3,1,2

下一个数字很好:

2,3,1,2,7

现在平均值是 3。等一下,平均值现在是 3,但是我们将 1000 替换为平均值 2,只是因为它作为第四个值出现。如果我们改变样本的顺序怎么办?

2,3,1,7,1000

现在 1000 之前的平均值是那么我们应该用那个意思代替 1000 吗?(2+3+1+7)/4=13/4

问题是我们代替 1000 的错误数据取决于其他数据。如果样本应该代表独立的测量值,那是一个认识论问题。

那么你就有一个明显的问题,你不仅隐瞒了不符合你假设的数据,而且还在伪造它。当出现一些不需要的结果时,您增加并替换一个假值。这是错误的,因为应该是样本数。现在表示样本的数量,加上添加到数据中的软糖值的数量。的计算的有效性:即使是那些不使用 fudge 值的计算。你的也是一个软糖值!nnnnn

基本上,修剪掉不适合的结果是一回事(如果根据算法始终如一地完成,而不是根据实验者不断变化的情绪波动,则可以证明是合理的)。

从哲学、认识论和伦理学的角度来看,直接伪造的结果是令人反感的。

可能有一些情有可原的情况,这与结果的使用方式有关。例如,用当前平均值替换异常值是某些嵌入式计算机算法的一部分,这使其能够实现闭环控制系统。(它对一些系统输出进行采样,然后调整输入以实现控制。)一切都是实时的,因此必须在给定的时间段内提供一些东西来代替丢失的数据。如果这种捏造有助于克服故障并确保平稳运行,那么一切都很好。

这是另一个来自数字电话的示例:PLC(数据包丢失隐藏)。垃圾发生了,数据包丢失了,但通信是实时的。PLC 根据来自正确接收的数据包的最近音调信息合成假语音。因此,如果说话者说元音“aaa”,然后一个数据包丢失了,PLC 可以通过在帧持续时间(比如 5 或 10 毫秒或其他任何时间)外推“aaa”来填充丢失的数据包。“aaa”是这样的,它类似于说话者的声音。这类似于使用“平均值”来代替被认为是坏的值。那是一件好事; 它比声音的切入和切出要好,并且有助于清晰度。

如果捏造数据是向人们撒谎以掩盖失败工作的计划的一部分,那就是另一回事了。

因此,我们不能独立于应用程序来考虑它:如何使用统计信息?替换会导致无效的结论吗?有道德影响吗?

Cousineau 和 Chartier 的这篇文章讨论了用平均值替换异常值

http://www.redalyc.org/pdf/2990/299023509004.pdf

他们写:

Tabachnick 和 Fidell (2007) 建议用相应单元格中剩余数据的平均值替换缺失的数据。但是,此过程将趋向于减少人口的分布,使观察到的分布更加尖峰,并可能增加 I 型错误的可能性。一种更复杂的技术,多重插补,涉及用可能的值替换异常值(或缺失数据)(Elliott & Stettler, 2007; Serfling & Dang, 2009)。

还有一个 R 包“异常值”,它具有用平均值替换异常值的功能。我在我的谷歌搜索中也看到了一些命中,暗示 SPSS 也有这样的功能,但我不熟悉那个程序。也许如果您遵循这些线程,您可以发现实践的技术基础。

参考

  • Cousineau, D. 和 Chartier, S. (2010)。异常值检测和处理:综述。国际心理学研究杂志,3(1),58-67。