磨刀不误砍柴工——利用JMP探索离群值

当你拿到数据开始分析时,第一步通常会做什么?
是使用功能强大的JMP Graph Builder(图形生成器) 做可视化分析?
或是利用JMP Distribution(分布)平台做描述性统计量分析?
又或是利用JMP多样的预测建模工具,找到最适当的预测模型?
虽然这些都是JMP为人所乐道的一些功能,但是作为使用JMP进行分析的第一步,除了上述平台外,你不妨考虑利用Explore Outliers (探索离群值)及 Explore Missing Values(探索缺失值)平台,来清洗你的数据,正所谓磨刀不误砍柴工。

也许你认为探索缺失值还能理解,毕竟空值要先剔除,对后续分析比较合理。但是,为什么需要将离群值也排除?假如这样的离群值正是代表数据总体的状况,是否对我们的分析会有影响?而且,离群值很难抓取出来,不能先忽略这个影响吗?
要厘清这些问题,我们需要先搞清楚什么是离群值。
Part.1 哪些数据属于离群值?
一元数据的离群值
我们先讨论一元数据的情况。
随机生成1000个标准正态分布Nor(0, 1)的值,如图一,其中标记红色的点,为超出[-4,4]范围的离群点,这样的发生几率为0.0063%,是非常小的几率,于是这样小几率区域上发生的点我们就视为离群值。

接着,我们来看二元变量的情形。
二元数据的离群值
在JMP软件中,利用Graph Builder(图形生成器) 分析,不论数据点是两个变量之间具有相同均值及变异数(X2 vs. X1)、或是具有不同均值及变异数(X3 vs. X1),如下方图二,我们都能用肉眼发现这些离群点(红点)似乎跟其他的点有不一样的趋势,且与数据中心点的距离较远。


而当两变量间有强相关性,也能发现有些离群点距离其他的样本点之间的距离较大(图三红点)。
另外,利用Fit Y by X(以X拟合Y)平台的Histogram Boarder功能观察两变量的分布(图三),我们发现
如果只关注单一变量,有些离群值则会侦测不到,如下图所示,这一个典型的例子说明,我们全盘考虑多变量的离群值时,会抓到一些潜在的离群点,避免只观察管控单一变量的误判。幸运的是,JMP提供了这样的多变量离群点观测平台。

到此,我们能够了解离群值的概念,就是找出相较于其他的样本点,距离样本中心较远,或是点的坐落位置与样本整体”趋势”不符合的点。有趣的是,离群点不代表有问题的点,而是代表与其他的样本有着差距而无相同的”趋势”。所以离群值,有可能代表良善社会的问题人物,也可能代表万恶城市中的一股清流,就看你的样本来自哪里。
接下来,我们用一个半导体制造的电性测试数据来进一步说明和验证。
半导体数据的案例说明
半导体晶圆制造的组件参数都有其对应电子特性。因此透过电性测试这些参数的结果便可反推对应制程的质量。晶圆代工厂一般称电性参数测试称为WAT (Wafer Acceptance Test),其客户需要检视WAT测试数据来确认制造质量。而新制程研发阶段更需要搜集大量WAT数据来解决制程问题或寻找优化的因子配置。
我们利用一组简单的WAT数据作为示范,其中包含10个观测参数数据。
当我们直接分析产线三的数据时,利用JMP Analyze>Distribution (分析>分布)功能,可以快速做出相应的直方图及Outlier Box Plot (离群值箱线图)观察是否有离群值。
结果如图四(a),Outlier Box 上的红色线段标记出最集中涵盖50%的区域,从此处我们可以发现数据集中在中间的区段。同样的,你也可以利用Graph Builder的箱线图功能完成箱线图的绘制,如图四(b)。

根据Quantile Range (分位数范围)离群值检验,我们发现参数一存在一个离群值(红点),利用Analyze>Screening>Explore Outliers (JMP>分析>筛选>探索离群值)平台中的Quantile Range Outliers(分位数范围离群值)功能,可以发现其离群值(图五),并可以针对数据做标记、排除、视为缺失值等动作。
同时,你也可以调整判定为离群值的规则,可以调整尾端百分位值(Tail Quantile)和其倍数(Q),以常见的IQR离群值检验,上限为Q3+1.5*IQR,上限为Q1-1.5*IQR为例, Tail Quantile 即为0.25, Q则为1.5。
而当你的数据较不符合正态分布时,可以考虑使用Robust Fit Outliers(稳健拟合离群值)作为离群值筛选平台。

但当我们更全面考虑,纳入所有产线的数据,你会发现产线三拥有较高的参数一测试结果,如图六,原本产线三上的离群值8.01反而较符合大多数数据的测试结果,而实际的离群值则转为产线三最高的三个值(图六红点),这样的结果也正如前面所说的样本出处的重要性,广泛获取能够代表总体数据对于筛选正确的离群值有着举足轻重的作用。

当考虑所有参数的影响,找出所有参数影响下的离群值时,JMP也提供了Robust PCA Outliers(稳健PCA离群值)或是K Nearest Neighbor Outliers (K最近邻离群值)功能供用户使用。你可以在Analyze> Screening> Explore Outliers(分析>筛选>探索离群值)下找到这两个功能平台。
在这里,我们使用K Nearest Neighbor Outliers 平台寻找离群值,利用复合选取距离较高的样本点,标记为离群值(图七)。

通过Graph Builder 确认这些被选为离群值的数据点在每一个参数上的分布位置可以发现,不是所有的点都属于单一参数的离群值(如数据点290, 295, 296, 297, 298, 299),这样的结果也和前面所提到的通过JMP多元离群值筛选平台,可以抓出许多在观测单变量下所忽略的潜在问题点(图八)。

现在,我们知道了JMP有很强大的平台可以帮助我们把离群值筛选出来,但是,如果没有把离群值筛选掉,会有哪些影响?
Part.2 离群值不剔除,会有什么影响?
化繁为简,我们先看一下两参数间的离群值影响。
我们观测WAT数据参数一和参数二之间的二次效应回归式估计的R-square值,在还没移除筛选出的离群值前,R-square值为0.602,如图九(a),而移除离群值后,R-square值上升为0.740,如图九(b),这说明移除离群值能够构建出更准确的模型,拥有差距更小的估计值。
当我们利用这些参数构建出预测结果,例如良率预估或是CP/FT 测试预估值等,我们便能更有效地侦测不良,降低成本,增加效益。


接着,放大考虑全部参数,并用这些参数预估后续Bin值结果,找到关键因子,并在最小化Bin值的设定下找到最佳因子设定值。
同样的,我们先考虑不移除离群值,找出最适合的回归模型。
利用JMP Fit Model(拟合模型)平台,我们得到回归模型R-square 大约为0.971,包含许多因子效应项,这其中可以看到许多的交互作用项效应比主效应强, 似乎比较混乱,且观察Residual by Row Plot 可以发现,筛选为离群值的那几个样本差距是比较大的(图十)。

下一步,我们把离群值移除,再做一次回归估计。
我们发现,不仅R-square 上升到0.999,关键因子也缩减到四个因子效应项,观察Residual by Row Plot,也没有发现差异比较大的样本(图十一)。因此,根据此回归公式预测的结果也会更准确,可防止做出错误的判断。

搜集更多的数据做后续测试回归式的准确度,我们可以在Analyze>Fit Y by X(分析>以X拟合Y)的平台下,比较回归式的预估值及实际的Bin 值,新数据依然能够有很好的水平。R-square有0.999的准确度,而且没有特殊的点有过大的差异(图十二)。

由此,我们可以看到,通过JMP的探索离群值平台,我们能够轻松快速地排除离群值,避免受到离群值影响误判因子之间的相关性或是做出错误的模型预测,导致错误的预估及决策。
作为分析的前哨站,JMP的Explore Outliers(探索离群值) 平台能够针对不同的应用场景,不论单变量或是多变量,数据是否为正态分布等等情形,一应俱全地提供相应的平台,让用户可以高效地寻找离群值,“让数据说真话”,真正地发挥数据在实际工作中的作用。
如果你也想在JMP中自己动手试试看的话,可下载JMP 30天免费试用:
https://www.jmp.com/zh_cn/download-jmp-free-trial.html?utm_campaign=td7013Z000002DxWTQA0&utm_source=bilibili&utm_medium=social