11

我有 200 个数据行(意味着一小组数据)。我想进行一些统计分析,但在此之前我想排除异常值。

用于此目的的潜在算法是什么?准确性是一个值得关注的问题。

我对 Stats 非常陌生,因此需要非常基本的算法方面的帮助。

4

7 回答 7

23

总的来说,让这样一个问题变得困难的是,没有对异常值的严格定义。我实际上建议不要使用一定数量的标准偏差作为截止值,原因如下:

  1. 一些异常值会对您对标准差的估计产生巨大影响,因为标准差不是一个可靠的统计数据。
  2. 标准差的解释很大程度上取决于数据的分布。如果你的数据是正态分布的,那么 3 个标准差就很多了,但是如果它是对数正态分布的,那么 3 个标准差就不是很多了。

有一些好的方法可以继续:

  1. 保留所有数据,只使用稳健的统计数据(中位数而不是平均值,Wilcoxon 检验而不是 T 检验等)。如果您的数据集很大,可能会很好。

  2. 修剪或 Winsorize 您的数据。修剪意味着去除顶部和底部的 x%。Winsorizing 意味着将顶部和底部 x% 分别设置为第 x 和第 1-x 个百分位值。

  3. 如果你有一个小数据集,你可以绘制你的数据并手动检查它是否存在不合理的值。

  4. 如果您的数据看起来相当接近正态分布(没有重尾且大致对称),则使用中值绝对偏差而不是标准偏差作为您的检验统计量,并过滤到远离中值 3 或 4 个中值绝对偏差。

于 2010-01-15T19:54:05.750 回答
5

首先绘制异常值的杠杆作用,然后进行一些好的眼间创伤(也就是看散点图)。

许多统计软件包都有异常值/残差诊断,但我更喜欢 Cook 的 D。如果您想使用mtsu.edu 中的这个公式,可以手动计算(原始链接已失效,来自 archive.org)。

于 2010-01-19T00:26:24.137 回答
3

您可能听说过“六西格玛”这个说法。

这指的是平均值周围的正负 3 sigma(即标准差)。

任何超出“6 sigma”范围的东西都可以被视为异常值。

回想起来,我认为“六西格玛”太宽了。

本文描述了它是如何达到“每百万机会中有 3.4 个有缺陷的零件”的。

对于认证目的,这似乎是一个非常严格的要求。只有您可以决定它是否适合您。

于 2010-01-15T06:27:05.120 回答
2

根据您的数据及其含义,您可能需要查看RANSAC(随机样本共识)。这在计算机视觉中被广泛使用,并且在尝试将具有大量异常值的数据拟合到模型时通常会提供出色的结果。

概念化和解释非常简单。另一方面,它是不确定的,根据应用程序可能会导致问题。

于 2010-01-15T19:59:46.343 回答
1

计算集合的标准偏差,并排除第一、第二或第三标准偏差之外的所有内容。

于 2010-01-15T06:12:59.523 回答
0

这是我在 SQL Server 中的处理方式

下面的查询将从一个虚构的 Scale 表中获取平均体重,该表为每个人提供一次称重,同时不允许那些过胖或过瘦的人放弃更现实的平均值:

  select w.Gender, Avg(w.Weight) as AvgWeight
    from ScaleData w
    join ( select d.Gender, Avg(d.Weight) as AvgWeight, 
                  2*STDDEVP(d.Weight) StdDeviation
             from ScaleData d
            group by d.Gender
         ) d
      on w.Gender = d.Gender
     and w.Weight between d.AvgWeight-d.StdDeviation 
                      and d.AvgWeight+d.StdDeviation
   group by w.Gender  

可能有更好的方法来解决这个问题,但它工作得很好。如果您遇到另一个更有效的解决方案,我很想听听。

注意:以上从图片中删除了顶部和底部 5% 的异常值,以达到平均值的目的。您可以通过调整 2*STDDEVP 中的 2* 来调整移除的异常值数量:http ://en.wikipedia.org/wiki/Standard_deviation

于 2010-02-17T20:35:35.930 回答
0

如果您只想分析它,假设您想计算与另一个变量的相关性,则可以排除异常值。但是,如果您想建模/预测,最好直接排除它们。

尝试使用封顶等方法处理它,或者如果您怀疑异常值包含信息/模式,然后将其替换为缺失,并对其进行建模/预测。我已经写了一些例子来说明如何使用 R 来解决这个问题。

于 2016-04-15T17:57:27.750 回答