📜  检测数据中异常值的四分位距(1)

📅  最后修改于: 2023-12-03 15:10:56.714000             🧑  作者: Mango

使用四分位距检测数据中的异常值

在数据分析中,我们常常需要检测数据中的异常值。其中,一种较为常用的方法是使用四分位距(interquartile range,IQR)。

什么是四分位距?

四分位距是一个描述数据集中变异情况的统计量,它是上四分位数(upper quartile,Q3)和下四分位数(lower quartile,Q1)之差,即:

$$ IQR = Q3 - Q1 $$

四分位距常用作箱线图中的 whisker(须),它被用来标记数据中的非异常值区间。

箱线图示例

如何使用四分位距检测异常值?

在进行四分位距检测之前,需要先计算数据的 Q1、Q3 和 IQR。具体步骤如下:

  1. 将数据从小到大排列。
  2. 找到数据集的中位数(median),将数据集分为两部分。如果数据集大小是奇数,则中位数为中间的数;如果数据集大小是偶数,则中位数为中间两个数的平均值。
  3. 分别计算数据集的 Q1 和 Q3。Q1 是数据集中位数以下数据的中位数,Q3 是数据集中位数以上数据的中位数。
  4. 计算数据集的四分位距,即 $IQR = Q3 - Q1$。

根据四分位距的定义,可以将数据集的非异常值定义为:

$$ [Q1-1.5\times IQR, Q3+1.5\times IQR] $$

因此,可以使用如下代码片段来检测数据集中的异常值:

def detect_outliers(data):
    q1, q3 = np.percentile(data, [25, 75])
    iqr = q3 - q1
    lower_bound = q1 - 1.5 * iqr
    upper_bound = q3 + 1.5 * iqr
    return data[(data < lower_bound) | (data > upper_bound)]

该函数接收一个数据集作为输入,并根据上述公式,计算出数据集的 Q1、Q3 和 IQR。然后,将数据集中小于下限或大于上限的数据筛选出来,并作为异常值返回。

总结

四分位距是一种常用的方法,可以帮助我们检测数据集中的异常值。使用四分位距的优势在于它可以忽略极端值的影响,更加稳健。同时,四分位距也可以用于绘制箱线图等数据可视化。