常见异常值检测方法:原理与实践

作者:rousong2024.02.17 14:54浏览量:13

简介:本文将介绍几种常见的异常值检测方法,包括3sigma准则、Z-score、箱线图和Grubbs假设检验。这些方法在统计学和数据分析中广泛应用于识别和剔除异常值。通过理解这些方法的原理,我们可以更好地在实际应用中有效地检测和处理异常值,提高数据分析和预测的准确性。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在数据分析中,异常值是指远离数据集主体的数据点,它们与大多数数据点显著不同,可能由于错误、异常事件或测量误差等原因产生。异常值的存在可能会对数据分析产生负面影响,导致结果不准确或误导性。因此,在进行数据分析之前,对数据进行异常值检测和适当的处理是至关重要的。

下面介绍几种常见的异常值检测方法:

  1. 3sigma准则
    3sigma准则基于正态分布,认为超过3sigma的数据为异常点。在实践中,我们可以通过计算数据均值和标准差,然后确定3sigma的范围来检测异常值。如果数据点落在均值加减3个标准差的区间之外,则被视为异常值。这种方法基于统计学的原则,大约68%的数据值会在均值的一个标准差范围内,大约95%会在两个标准差范围内,大约99.7%会在三个标准差范围内。因此,如果数据点超过标准差的3倍,这些点很可能是异常值或离群点。

示例代码(Python):

  1. def three_sigma(s):
  2. mu, std = np.mean(s), np.std(s)
  3. lower, upper = mu-3*std, mu+3*std
  4. return lower, upper
  1. Z-score
    Z-score是一种基于标准分数的异常值检测方法。Z-score表示数据点与平均值的距离,通过计算每个数据点与平均值的差值,并将其除以标准差来获得Z-score。如果Z-score大于特定阈值(如3),则该数据点被视为异常值。这种方法的好处是它不依赖于数据的分布形状,只考虑数据点与平均值的相对距离。

示例代码(Python):

  1. def z_score(s):
  2. z_score = (s - np.mean(s)) / np.std(s)
  3. return z_score
  1. 箱线图(Boxplot)
    箱线图是一种可视化异常值的方法,基于四分位距(IQR)来识别异常点。箱线图由箱体、中位数、四分位数和异常值组成。箱体表示数据的主体部分,而异常值被定义为低于下四分位数(Q1)减去1.5倍四分位距(IQR)的值或高于上四分位数(Q3)加上1.5倍IQR的值。这种方法通过可视化方式直观地识别出异常值的位置。

  2. Grubbs假设检验
    Grubbs假设检验是一种基于统计的方法,用于检测正态分布或近似正态分布的数据中的异常值。该方法的基本思想是通过对数据进行排序并计算样本的均值和标准差,然后使用特定的公式计算G统计量(G-statistic)。如果G统计量的值大于临界值(通常为1.0或1.27),则将该数据点视为异常值。

示例代码(Python):

  1. def grubbs_test(s):
  2. s = sorted(s)
  3. n = len(s)
  4. m = n//2
  5. dev_m = s[m] - np.mean(s)
  6. dev_p1 = s[0] - np.mean(s)
  7. dev_p2 = s[n-1] - np.mean(s)
  8. g = np.abs(dev_m) / np.sqrt( ((dev_p1**2 + dev_p2**2 + (m-1)*dev_m**2) / (n-1)) )
  9. return g

在实际应用中,选择哪种异常值检测方法取决于数据的特性和分析目的。在某些情况下,可能需要结合多种方法来更准确地检测和处理异常值。通过理解和掌握这些方法,我们能够更有效地处理数据中的异常值,提高数据分析的准确性和可靠性。

article bottom image

相关文章推荐

发表评论