欢迎来到我关于 Outliers 的第二篇博客文章。 在这一集中,我将研究使用分位数范围来检测异常值。
在第 1 集中,我们着眼于描述和视觉识别异常值。 您可能还记得,在一些简单的一维(或单变量)情况下,我们需要识别异常值。 这些是最容易识别的,分位数范围是寻找它们的绝佳方法。
对于多维异常值检测,您将不得不等待我的下一篇文章!
什么是分位数?
分位数非常容易理解。 假设我们有一系列 20 个数字。 我们可以将数字从最低到最高排序。 然后,我们可以将这些点分组为分位数,这些分位数由排序数据中的切点标识,这些切点描述了 X% 的数据低于该点的点。
请注意,分位数通常表示为分数(从 0 到 1)。 它们完全对应于百分位数,范围从 0 到 100。 在这篇文章中,我将交替使用这些。
图 1 显示了排序前后的 20 个数字,以及 0.20 和 0.50 分位数(或 20日和 50日百分位数)。
Figure 1: Data from 20 point sample, random order and sorted图 1:来自 20 个样本的数据,随机顺序和排序
50的切入点日百分位数是样本的中位数。 (在这种情况下,中位数在数值上为 32.5,即 40 和 25 之间的中点。)
其他一些有趣的定义包括:
- 四分位数,将数据分成 25% 的组。 第一个四分位数代表落在最低 25% 的数据点,第二个四分位数代表落在 25% 和 50% 之间的数据点,依此类推。
- 四分位数范围或 IQR,它定义了 2 所涵盖的范围nd和 3路四分位数。
请注意,在谈论分位数时,没有对分布形状做出任何假设。
JMP 中的分位数计算在哪里?
您可以在以下三个位置找到列出的分位数JMP . Distribution 平台和 Graph Builder 都使用相同的计算。 探索离群值/分位数范围离群值在离群值敏感性方面为用户提供了更大的灵活性。 让我们逐一看看。
分销平台
在 Distribution 中,所有连续/数字数据直方图都包含表格分位数摘要。 默认情况下,JMP 显示几个感兴趣的分位数。 在图 1 中标记为 Original Data 的列上使用 Distribution 平台给出以下输出:

图 2 的中间表格显示了几个常见的分位数。 您可以通过选择红色热点并选择显示选项,然后设置分位数增量或自定义分位数来更改此表中显示的分位数。
图 2 中还显示了盒须图。 图中显示的符号在图 2 中进行了注释。
胡须的末端对检测异常值最感兴趣。 请注意,胡须长度是根据四分位数范围的最小值和最大值测量的,并且胡须在该范围 1.5 倍以内的最后一个数据点处结束。 这是异常值检测的常用经验法则。 落在这些晶须之外的点可能值得进一步研究。
但在图 1 和图 2 所示的数据集中,该技术没有检测到异常值。 这并不少见,尤其是在样本量较小的情况下。
图 3 显示了我之前博客文章中 1,000 个示例数据的分发平台输出。 这些样本取自随机正态分布,均值为 0.0,标准差为 1.0。 我还包括了 X1=4 处的点,它在我之前的帖子中被视觉识别为异常值:
Figure 3: Distribution platform output for 1,000 point sample from normal distribution图 3:1,000 个正态分布样本的分布平台输出
随着样本量的增加,一些点现在似乎是异常值(至少由胡须末端定义)。 在这种特殊情况下,由于我们知道数据来自具有 1,000 个点的正态分布总体,因此看到至少一个值为 4 的点可能并不少见。 在现实世界中,胡须之外的点可能需要额外调查。
在 Graph Builder 中制作箱形图和晶须图
您还可以在图形生成器中生成盒须图。 整个 Graph Builder 设置如图 4 所示:
Figure 4: Graph Builder setup for Box & Whisker plot (1,000 point sample from normal distribution)图 4:盒须图的图形生成器设置(来自正态分布的 1,000 个点样本)
请注意图表上方的图表类型图标(红色圆圈),它启用了 Box & Whisker 绘图类型。
与 Distribution 平台一样,晶须长度为 1.5* 四分位数范围,并从 25日百分位和从 75日百分位数。
探索异常值
如果我们想选择其他晶须限制怎么办?
如上所述,1.5*IQR 的晶须长度是识别异常值的常见做法。 我相信这可能来自于观察大样本正态分布。 超出四分位数范围的 1.5*IQR 可以显示包含 99.30% 的正态分布(在每个尾部留下 0.3488% 的数据)。 这将确定一个相对罕见的事件——如果你有正态分布。
但是,如果您没有正态分布怎么办? 如果分布看起来像这样怎么办?
Figure 5: Skewed distribution图 5:偏态分布
图 5 显示了 N=100 点的偏态分布,根据 1.5*IQR 方法,在上须线之外有五个异常值。 但是 X1=3 处的点真的是异常值吗? 或者可能还有其他点被胡须隐藏,需要进行离群值调查。 我们如何调整这个 1.5*IQR 规则?
JMP 允许您在 Analyze/Screening/Explore Outliers 下执行此操作,然后选择 Quantile Range Outliers 选项。 调出此选项会出现下面所示的输入屏幕,用于图 5 中总结的 100 点样本。
Figure 6: Quantile Range Outliers user interface and sample output图 6:分位数范围异常值用户界面和示例输出
“分位数范围异常值”面板有两个主要输入:
- 尾分位数 (TQ)。 该分数描述了将用于晶须计算的分布中的最小分割点。 (1-尾分位数)描述分布中的上切点。 这些切点之间的差异描述了后续计算中使用的范围。
- 对于前面描述的 IQR 计算,尾分位数将为 0.25,表示胡须将从 25日和 75日百分位数,范围将是四分位间距(或 75日-25日百分位数)。
- 分位数范围离群值中尾部分位数的默认值为 0.1,表示胡须将从 10日和 90日百分位数,长度取决于(90日-10日百分位数)范围。
- 问。 这是用于确定晶须长度的乘数。
- 在之前的 IQR 计算中,这是 1.5,因此四分位数间距乘以 1.5 得到晶须长度。
- Quantile Range Outliers 中 Q 的默认值为 3,表示晶须长度将由 (90日-10日百分位数)范围乘以 3。
分位数范围离群值的输出显示在图 6 面板的底部。 在这里我们看到列 X1 有一个 10日百分位数为 -1.283,以及 90日百分位数为 1.65556。 晶须的末端(在输出中标记为低阈值和高阈值 [分别为 LT 和 HT])基于以下计算:
长期 = 10日分位数 - (90日分位数 - 10日分位数)* Q
= -1.283 – (1.65556 – -1.283) * 3
= -10.099
HT = 90日分位数 + (90日分位数 - 10日分位数)* Q
= 1.65556 + (1.65556 – -1.283) * 3
= 10.4713
在这种情况下,该列中只有一个值超出高阈值,值为 12.0,显示在图 6 所示报告的底部。
对尾分位数和 Q 的敏感性
离群值检测灵敏度显然受尾分位数和 Q 的值控制。 传统的 1.5*IQR 和 3*(90日-10日分位数)方法都是可以接受的,前者对检测异常值更为敏感。 您可以使用“分位数范围离群值”平台根据特定情况的需要调整这些值。
虽然选择尾分位数和 Q 的有效性取决于您的特定分布,但我们可以通过查看正态分布来深入了解它们的行为。 下表显示了尾分位数和 Q 的几种组合,以及正态分布尾部值落在晶须之外的百分比:
Table 1: Percent of outliers detected in large sample normal distribution for various values of tail quantile and Q表 1:在大样本正态分布中针对尾分位数和 Q 的各种值检测到的离群值百分比
扩展这个想法,我们可以创建一个等高线图,显示表 1 中数量的更完整图片:
Figure 7: Percent of outliers detected in large sample normal distribution for various values of Tail Quantile and Q图 7:在尾分位数和 Q 的各种值的大样本正态分布中检测到的离群值百分比
图 7 清楚地表明,尾分位数的高值和 Q 的低值的组合使计算对异常值更加敏感,而 TQ 的低值和高 Q 使我们不那么敏感。
下一集
下次我们再讨论马氏距离,用于检测多个维度的异常值。
查看本系列中的所有帖子了解异常值.
你好@杰瑞鱼, 感谢您的答复。
感谢您的回复。 你说得对,我不应该完全抛弃它们,而是真正调查这些异常值在说什么。
我猜我太在意确保我的 K-Means 聚类没有负 CCC 值,因此急于尽可能多地删除异常值。
理解你上面的观点,它们真的很有用。 谢谢!
你好@疯狼, 感谢发帖。
你会发现 Distribution 平台使用的是 1.5*IRQ 方法,而 Analyze/Screening/Explore Outliers 默认使用 3*(90th-10th quantile) 方法。两者都是帮助识别异常值的合法方法。
请记住,此类工具旨在识别“潜在”异常值。因此,他们只是助手。您可以尝试两种方法,看看结果是否不同。如果异常值被识别(以任何一种方法),我会警告他们仍然应该被调查,而不是简单地立即被丢弃。数据可能试图告诉你一些重要的事情!所以在丢弃异常值时要谨慎。
在我看来,这两种方法中的任何一种都会捕捉到“非常糟糕”的异常值。如果你读我的第三篇博文在 Mahalanobis 距离和我(即将发布的)关于折刀距离的第 4 篇博文中,您会找到更多方法来帮助识别本文中讨论的棘手情况下的异常值。
祝你好运!
你好呀,
感谢这篇文章。 这对我来说非常有见地。
你提到:“传统的 1.5*IQR 和 3*(90日-10日分位数)方法都是可以接受的”
我如何知道我应该选择传统的 1.5*IQR 还是 3*(第 90-10 分位数),后者是 JMP 的默认值?
此外,我是否继续扫描并排除异常值,直到最终扫描显示我不再存在异常值?
好贴。 1.5 x IQR 有时被称为“步长”,离群值可以确定为上四分位数加一个步长或下四分位数减 1 个步长;更严格的方法可能是使用“2 个步长”+/- 各自的上/较低的四分位数以识别“远异常值”。
但是,当分布偏斜时,您声明的第二种方法通过处理 90 和 10 个百分点而不是 75 和 25 个百分点来扩展远离群值定义(使用 2 个步骤)。