统计数据异常值的处理——R语言

2023-05-22,,

在数据分析工作中,面对收集而来的数据,数据清洗是首要环节。异常值(outlier)是数据清洗的重要环节,异常值可能直接会导致后面的数据分析、建模工作出现偏差,下面就给大家介绍一下如何处理数据中的异常值。

一、异常值判断

何为异常值?异常值,指的是样本中的一些数值明显偏离其余数值的样本点,所以也称为离群点。异常值分析就是要将这些离群点找出来,然后进行分析。异常点在某些场景下极为重要,如疾病预测,通常健康人的身体指标在某些维度上是相似,如果一个人的身体指标出现了异常,那么他的身体情况在某些方面肯定发生了改变,当然这种改变并不一定是由疾病引起(通常被称为噪音点),但异常的发生和检测是疾病预测一个重要起始点。相似的场景也可以应用到信用欺诈,网络攻击等等。在不同的数据中,鉴别异常值有不同的标准,常规有以下几种:

(1)数字超过某个标准值

这是最常用的异常值判断方法之一。主要是看数据中的最大值或最小值,依据专业知识或个人经验,判断是否超过了理论范围值,数据中有没有明显不符合实际情况的错误。比如,测量成年男性身高(M),出现17.8m这样的数据,显然不符合实际情况。又或者,如问卷数据使用1-5级量表进行研究,出现-2,-3这类数据,则可能提示为跳转题、空选等。

(2)数据大于±3标准差

3σ 原则是在数据服从正态分布的时候用的比较多,在这种情况下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。在数据处理的时候,按照正态分布的性质,三个标准差以外的数据都可以被看作是错误的数据从而排除掉。

二、异常值鉴别和处理

箱线图(Box plot)也称箱须图(Box-whisker Plot)、箱线图、盒图,可以用来反映一组或多组连续型定量数据分布的中心位置和散布范围,因形状如箱子而得名。1977年,美国著名数学家John W. Tukey首先在他的著作《Exploratory Data Analysis》中介绍了箱形图。用于反映一组或多组连续型定量数据分布的中心位置和散布范围。箱形图包含数学统计量,不仅能够分析不同类别数据各层次水平差异,还能揭示数据间离散程度、异常值、分布差异等等。

2.1 箱线图

箱线图很适合鉴别异常值,具体的判断标准是计算出数据中的最小估计值和最大估计值。如果数据数据超过这一范围,说明该值可能为异常值。箱盒图会自动标出此范围,异常值则用圆圈表示。连续型数据:在一定区间内可以任意取值的变量叫连续变量,其数值是连续不断的。例如,生产零件的规格尺寸,人体测量的身高、体重等,其数值只能用测量或计量的方法取得。可视化这类数据的图表主要有箱形图和直方图。离散型数据:数值只能用自然数或整数单位计算的则为离散变量。例如,企业个数,职工人数,设备台数等,只能按计量单位数计数,数值一般用计数方法取得。大多数图表可视化的都是这类数据,比如柱状图、折线图等。

在箱线图中,箱子的中间有一条线,代表了数据的中位数。箱子的上下底,分别是数据的上四分位数(Q3)和下四分位数(Q1),这意味着箱体包含了50%的数据。因此,箱子的高度在一定程度上反映了数据的波动程度。上下边缘则代表了该组数据的最大值和最小值。有时候箱子外部会有一些点,可以理解为数据中的“异常值”。由于箱线图不像柱状图、折线图那样简单常见,许多人都对它敬而远之。但只要我们搞清楚了以下几个统计学的基本概念,箱线图也可以变得“平易近人”。

四分位数是一组数据按照从小到大顺序排列后,把该组数据四等分的数,称为四分位数。第一四分位数 (Q1)、第二四分位数 (Q2,也叫“中位数”)和第三四分位数 (Q3)分别等于该样本中所有数值由小到大排列后第25%、第50%和第75%的数字。第三四分位数与第一四分位数的差距又称四分位距(interquartile range, IQR),包含全部数据的一半。

2.2 异常值的鉴别

箱线图可以直观明了地识别数据批中的异常值。箱形图可以用来观察数据整体的分布情况,利用中位数,25/%分位数,75/%分位数,上边界,下边界等统计量来来描述数据的整体分布情况。通过计算这些统计量,生成一个箱体图,箱体包含了大部分的正常数据,而在箱体上边界和下边界之外的,就是异常数据。判断数据的偏态和尾重。对于标准正态分布的大样本,中位数位于上下四分位数的中央,箱形图的方盒关于中位线对称。中位数越偏离上下四分位数的中心位置,分布偏态性越强。异常值集中在较大值一侧,则分布呈现右偏态;异常值集中在较小值一侧,则分布呈现左偏态。比较多批数据的形状。箱子的上下限,分别是数据的上四分位数和下四分位数。这意味着箱子包含了50%的数据。因此,箱子的宽度在一定程度上反映了数据的波动程度。箱体越扁说明数据越集中,端线(也就是“须”)越短也说明数据集中。凭借着这些“独门绝技”,箱线图在使用场景上也很不一般,最常见的是用于质量管理、人事测评、探索性数据分析等统计分析活动。

箱线图用来捕获一组数据中的异常值,在数据整理的过程中,异常值带来的不良影响是巨大的,我们需要额外重视异常值这一数据,异常值被定义为小于Q3-1.5IQR或大于Q1+1.5IQR的值,而箱线图会将这一部分的值额外展现出来,突出异常值的特异性。

2.3 异常值处理

异常值已经被找出来了,那么怎么处理呢?实际处理中没有固定的方法,要根据分析的目的来确定。

删除。如果想找出一般的规律,而且异常值也不太多,可以考虑删除。因为异常值可能会影响结论。很多节目中计算选手最后得分往往去掉一个最高分,去掉一个最低分,可能就是这个道理。比如我们现在研究就是要塞等级bd_stronghold_level为15级的玩家的道具消耗特征,这时候异常值显然会拉高整体的水平,影响判断,所以可以考虑删除,我们要了解大多数玩家。

放任不管。因为异常值代表的也是真实发生的事件,背后是具体的行为。有些值即使异常,也不会影响模型。比如我们研究wood_add_value和pay_price的关系,想做回归分析,也就是看道具消耗和充值金额的因果关系。我们能够很清楚的看到刚才找到的wood_add_value的4个异常值,虽然他们游离于群体之外,但是在对pay_price进行拟合的时候并没有使模型造成太大偏差。所以这种异常值对我们的模型来说很合理。

缺失值进行填充。因为贸然删除数据可能会损失信息,而如果放任不管可能又影响我们的模型,所以可以考虑用均值、临近值进行填充。如下面这个例子,依旧是用wood_add_value对pay_price进行回归预测(样本不一样了)。从图上看绿圈和红圈那两个点,有可能会影响回归线的方向(蓝色线是python拟合的,绿线和红线是我自己画的)。所以这种异常值还是处理掉比较好。[https://blog.csdn.net/dhr223/article/details/107086239/](数据清洗中异常值(离群值)的判别和处理方法)。

还有一些模型可用来处理异常值,请参看(异常数据4种剔除方法_4种常见异常值检测算法实现)[https://blog.csdn.net/weixin_39822493/article/details/111586403],不再赘述。

三、案例分析

案例1:职员薪酬分布

下图是不同地区数据分析师的薪酬统计情况。

图中的红线显然是各个城市中游水平的数据分析师能够获得的薪资标准,上边的蓝线区间为中上游,下边的蓝线区间为中下游,以此类推。简而言之,样本人群被四等分了。上海、北京、深圳的数据分析师,薪资范围接近,但是中上游水平的人,北京地区能获得更高的薪资,因为中位数(Q2)的位置更高。西安、长沙、天津则不利于数据分析师的发展。杭州的水平接近北上深,但是薪资上限受到一定限制。

案例2:学生成绩分布

分析不同学年、不同科目的学生成绩也是箱线图的常见应用场景。下图中我们可以看到学生的英语成绩相对其它科目普遍较好,而数学则大部分都出于80分以下。

有时候我们会发现箱形图的某一部分仿佛被隐藏了,比如下图的第一个箱子。

除此之外还有一些极端情况,箱子被压得很扁,甚至只剩下一条线,同时还存在着很多异常值。这些情况的出现,有两个常见的原因。第一,样本数据中,存在特别大或者特别小的异常值,这种离群的表现,导致箱子整体被压缩,反而凸显出来这些异常;第二,样本数据特别少,因此箱体受单个数据的影响被放大了。

参考文献

1.(箱线图怎么判断异常值_箱线图)[https://blog.csdn.net/weixin_28771421/article/details/112156576]

2.(快速识别异常值,箱线图分析来帮你)[https://zhuanlan.zhihu.com/p/269113406]

3.(数据分析--异常值处理)[https://blog.csdn.net/weixin_40444270/article/details/108920646]

统计数据异常值的处理——R语言的相关教程结束。

《统计数据异常值的处理——R语言.doc》

下载本文的Word格式文档,以方便收藏与打印。