📜  四分位间距(IQR)(1)

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

四分位间距(IQR)

四分位间距(IQR)是描述数据分布的统计量之一,用于表示数据的分散程度。IQR是位置离散度量的一种,它表示在所有数据中,中间50%数据的范围,也就是数据的中间50%所在的范围。IQR主要用于发现数据集中存在的任何异常值。下面将介绍如何使用Python计算IQR。

计算IQR

要计算IQR,首先需要计算第1个四分位数(Q1)和第3个四分位数(Q3)。这可以通过使用 numpy 库中的 percentile 函数来完成。

import numpy as np

# 随机生成一个含10个元素的数组
data = np.random.randint(0, 50, 10)

# 计算数据的 Q1 和 Q3
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)

# 计算 IQR
iqr = q3 - q1
print("Q1 = ", q1)
print("Q3 = ", q3)
print("IQR = ", iqr)

上述代码中,我们使用 numpy 库中的 percentile 函数来计算第1个四分位数(Q1)和第3个四分位数(Q3)。然后通过相减计算IQR。最终打印出Q1,Q3和IQR的值。

检测异常值

一旦IQR被计算出来,我们可以使用以下公式来确定可能存在的异常值:

  • 下规则:小于 Q1 - 1.5 × IQR 或 大于 Q3 + 1.5 × IQR
  • 上规则:小于 Q1 - 3 × IQR 或 大于 Q3 + 3 × IQR

这里的 " × " 是乘号。

下面是使用Python将上述公式应用于数据集中的元素的示例:

# 随机生成含20个元素的数组
data = np.random.randint(0, 50, 20)

q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)

iqr = q3 - q1

# 检测存在于上下规则之外的值
outliers = [x for x in data if x < q1-1.5*iqr or x > q3+1.5*iqr]
print("异常值 = ", outliers)

上述代码中,我们生成一个含有20个元素的随机数组。然后计算Q1,Q3和IQR。最后,我们使用这些值来检查是否存在异常值。其中任何小于 Q1 - 1.5 × IQR 或 大于 Q3 + 1.5 × IQR 的值都被认为是异常值,并被添加到 outliers 列表中。

结论

四分位间距(IQR)可以用来描述数据集的离散程度,并可以用于检测异常值。上述示例使用了Python中的 numpy 库来计算IQR并检测异常值。