【iqr方法】计算、原理、应用与异常值检测全面解析

在数据分析和统计学中,理解数据的分布和变异性至关重要。IQR 方法(Interquartile Range Method),即基于四分位距的方法,是衡量数据分散程度的一种稳健统计量,并且广泛应用于检测数据集中的异常值。它提供了一种比标准差或方差更能抵抗极端值影响的度量方式。

什么是IQR?

IQR 代表四分位距(Interquartile Range)。它是衡量数据集分散程度的一个简单但强大的指标,具体指的是数据集中第三四分位数(Q3)第一四分位数(Q1)之间的差值。

四分位数的概念:

  • 第一四分位数 (Q1):也称为下四分位数,是将数据按升序排列后,位于整个数据集的25%位置上的值。简单来说,约有25%的数据点小于或等于Q1。
  • 第二四分位数 (Q2):也称为中位数,是将数据按升序排列后,位于整个数据集的50%位置上的值。约有50%的数据点小于或等于Q2。
  • 第三四分位数 (Q3):也称为上四分位数,是将数据按升序排列后,位于整个数据集的75%位置上的值。约有75%的数据点小于或等于Q3。

因此,IQR 的计算公式为:

IQR = Q3 – Q1

IQR 包含了数据集的中间50%的数据的范围。它不受极端值的影响,因为极端值(最大值和最小值)被排除在Q1和Q3的计算之外,这与全距(最大值 – 最小值)形成鲜明对比。

如何计算IQR?

计算 IQR 的步骤相对直接:

  1. 将数据集中的所有数据点按升序排列。
  2. 找到数据集的中位数 (Q2)。如果数据点数量是奇数,中位数就是中间的那个值;如果数据点数量是偶数,中位数是中间两个值的平均数。
  3. 找到第一部分的中位数 (Q1)。这部分数据是从最小值到Q2(不包含Q2本身,取决于计算方法,有时包含)的数据。
  4. 找到第二部分的中位数 (Q3)。这部分数据是从Q2(不包含Q2本身)到最大值的数据。
  5. 计算 Q3 和 Q1 的差值:IQR = Q3 – Q1

计算示例:

假设数据集为:10, 15, 12, 18, 20, 22, 14, 16, 30

  1. 升序排列: 10, 12, 14, 15, 16, 18, 20, 22, 30
  2. 计算 Q2 (中位数): 数据集有9个点,中位数是第 (9+1)/2 = 5 个点,即 16。
  3. 计算 Q1: 数据集前一半是 10, 12, 14, 15。这部分的中位数是 (12+14)/2 = 13。所以 Q1 = 13。
  4. 计算 Q3: 数据集后一半是 18, 20, 22, 30。这部分的中位数是 (20+22)/2 = 21。所以 Q3 = 21。
  5. 计算 IQR: IQR = Q3 – Q1 = 21 – 13 = 8。

在这个例子中,IQR 是 8,表示中间 50% 的数据分布在一个宽度为 8 的范围内。

为什么使用IQR?

使用 IQR 的主要原因在于其对异常值的稳健性。不像标准差或方差那样容易受到数据集中极端值的影响,IQR 仅关注数据的中间部分。这使得它在存在极端值或数据分布不对称时,成为一个更可靠的数据分散程度指标。

  • 抵抗极端值: 计算 IQR 只依赖于 Q1 和 Q3 的值,这两个值本身就排除了数据集的极端头部和尾部25%的数据。
  • 描述集中趋势周围的分散: 它有效地描述了数据集中最密集区域(中间50%)的扩散程度。
  • 适用于非正态分布数据: 对于非正态分布或有偏分布的数据,IQR 通常比标准差更能提供有意义的分散信息。

IQR主要用于哪里?

IQR 在多个领域和数据分析场景中都有应用:

  • 描述性统计: 作为描述数据分布中心趋势(与中位数结合)和分散程度(与 IQR 结合)的常用工具,尤其在箱线图中扮演核心角色。
  • 数据探索性分析 (EDA): 快速了解数据集的集中程度和变异性,识别数据的整体形状。
  • 比较不同数据集: 可以用来比较不同组或不同时间点的数据分散程度。
  • 异常值检测: 这是 IQR 最重要的应用之一,通过 IQR 方法建立边界来识别潜在的异常值。

如何使用IQR进行异常值检测(IQR方法)?

基于 IQR 的异常值检测方法利用四分位距构建一个“合理范围”,任何落在这个范围之外的数据点都被认为是潜在的异常值。这个方法通常采用一个乘数(最常用的是 1.5)来定义边界。

异常值检测的原理:

该方法设定了两个边界,称为下边界(Lower Bound)上边界(Upper Bound)

  • 下边界 = Q1 – k * IQR
  • 上边界 = Q3 + k * IQR

其中 k 是一个乘数,通常取 1.5。这个值 1.5 是由 Tukey 在箱线图的上下触须(whiskers)中引入并普及的,它提供了一个在许多实际数据集中都能较好工作的默认阈值。大于 Q3 + 1.5 * IQR 或小于 Q1 – 1.5 * IQR 的数据点通常被标记为异常值。

为什么使用 1.5?

选择 1.5 这个值并非随意,它与正态分布有一定的关联。对于正态分布的数据,落在 Q1 – 1.5 * IQR 和 Q3 + 1.5 * IQR 之间的数据点约占总数的 99.3%。这意味着只有约 0.7% 的数据点会落在这些边界之外。因此,使用 1.5 作为乘数可以有效地识别那些在典型正态分布中极少出现的极端值。

异常值检测步骤:

  1. 计算数据集的 Q1 和 Q3。
  2. 计算 IQR = Q3 – Q1。
  3. 选择一个乘数 k(通常取 1.5)。
  4. 计算下边界:Lower Bound = Q1 – k * IQR。
  5. 计算上边界:Upper Bound = Q3 + k * IQR。
  6. 检查数据集中的每一个数据点:
    • 如果数据点 < Lower Bound,则认为它是异常值。
    • 如果数据点 > Upper Bound,则认为它是异常值。

异常值检测示例:

沿用之前的示例,数据集升序排列为:10, 12, 14, 15, 16, 18, 20, 22, 30
我们已经计算出 Q1 = 13,Q3 = 21,IQR = 8。
使用 k = 1.5:

  • 下边界 = Q1 – 1.5 * IQR = 13 – 1.5 * 8 = 13 – 12 = 1。
  • 上边界 = Q3 + 1.5 * IQR = 21 + 1.5 * 8 = 21 + 12 = 33。

现在检查数据集中的数据点:

  • 10 在 [1, 33] 范围内。
  • 12 在 [1, 33] 范围内。
  • 30 在 [1, 33] 范围内。

在这个小数据集的例子中,没有数据点超出 [1, 33] 的范围,因此基于 1.5 * IQR 方法,没有检测到异常值。

如果我们加入一个极端值,比如数据集变为:10, 12, 14, 15, 16, 18, 20, 22, 30, 50。

  1. 升序排列: 10, 12, 14, 15, 16, 18, 20, 22, 30, 50 (10个点)。
  2. 计算 Q2: (16+18)/2 = 17。
  3. 计算 Q1: 前一半 10, 12, 14, 15, 16。 Q1 = 14。
  4. 计算 Q3: 后一半 18, 20, 22, 30, 50。 Q3 = 22。
  5. 计算 IQR: IQR = 22 – 14 = 8。

下边界 = Q1 – 1.5 * IQR = 14 – 1.5 * 8 = 14 – 12 = 2。
上边界 = Q3 + 1.5 * IQR = 22 + 1.5 * 8 = 22 + 12 = 34。

检查数据点:

  • 10 在 [2, 34] 范围内。
  • 30 在 [2, 34] 范围内。
  • 50

    50 > 34。因此,根据 IQR 方法,50 被标记为异常值。

如何处理使用IQR方法发现的异常值?

识别出异常值后,如何处理取决于具体的分析目的和对数据的理解。常见的处理方式包括:

  • 进一步调查: 异常值可能是真实数据中的特殊情况,也可能是数据录入错误或测量问题。首先应该调查这些点的来源和原因。
  • 移除: 如果确定异常值是错误或不应该出现在分析中,可以将其从数据集中移除。但移除应谨慎进行,特别是对于小数据集。
  • 转换: 对数据进行数学转换(如对数转换)有时可以减少异常值的冲击,使其更接近数据集的中心。
  • 保留并使用对异常值不敏感的方法: 如果异常值是真实的并且重要,但会影响某些统计分析(如均值、标准差),可以考虑使用对异常值不敏感的统计方法(如中位数、IQR、非参数检验)。

总结

IQR 方法通过计算数据集的四分位距(Q3 – Q1)提供了一个稳健的数据分散度量。由于其对极端值不敏感的特性,IQR 不仅是描述性统计中的重要指标,更是进行异常值检测的常用且有效的方法。通过计算 Q1 – 1.5 * IQR 和 Q3 + 1.5 * IQR 来建立异常值边界,可以系统地识别出那些远离数据集中间部分的数据点,为后续的数据清洗和分析工作提供依据。

了解和掌握 IQR 方法,对于进行可靠的数据分析和确保结果的准确性具有实际意义。

iqr方法