统计学---极端异常值的检测
来源:互联网 发布:苹果手机日志软件 编辑:程序博客网 时间:2024/05/16 23:52
你在整理统计公司人的收入情况,手一抖,不小心把某个人的月薪26249变成262490了,某个人的月薪16895变成1689.5了。于是变成了如下的情况:
incomes=[25590, 23306, 26780, 29463, 22485, 262490, 24985, 1689.5, 17700, 18257, 24132, 21479, 19304, 16511, 18573, 26606, 20917, 19394, 24322, 28383, 16478, 29062, 23232, 17580, 26804, 28500, 25018, 24001, 27530, 27459, 22776, 19835, 16475, 15201, 28801, 19509, 19098, 17993, 15131, 26187, 25022, 27430, 19114, 18295, 25365, 23550, 20413, 19335, 21286, 22911]
有时候数据集中会包含一个或多个数值异常大或异常小的值,这样的极端值称为异常极端值(outlier)。这在现实数据集中是很有可能发生的,如数据录入错误、测量错误、试验错误、数据处理错误等。异常值的存在当然对数据统计产生很多不良的影响,例如降低数据统计的说服力和可信度。
因此,我们首先想到的是把异常值检测出来。这里就需要用到排序,利用排序,将数据从小到大进行排列。然后将数据进行等分。如果分成2部分,那这个数就是中位数。如果分为4部分,那这个数就叫四分位数。注意,这不是美式足球(橄榄球)中的四分位;四分位数不止一个,是3个,即通过3个四分位数将数据分为了4个数量上相等的部分。
这3个四分位数分别用Q1,Q2,Q3表示。你可能并不陌生,股票市场中,经常有Q1财报,Q2财报,Q3财报,Q4财报的说法,指的是四个季度的财报情况,一年4个季度,也是四等分。
那么,对于上面的数据,怎样计算Q1,Q2,Q3呢?可以利用pandas的describe函数。
import pandas as pdfour = pd.Series(data).describe()print(four)print('Q1= {0}, Q2= {1}, Q3={2}'.format(four['25%'],four['50%'],four['75%']))
输出结果:
count 50.000000mean 26835.150000std 34372.619505min 1689.50000025% 19102.00000050% 22843.50000075% 26037.750000max 262490.000000dtype: float64Q1= 19102.0, Q2= 22843.5, Q3= 26037.75
可以看出,pandas的describe函数不仅能得出数据集的样本数量,均值,标准差,最小值、最大值,以及3个四分位数,即在数据25%,50%,75%位置的数。我们通常把Q3-Q1的差值称为四分位距(interquartile range,IQR),或四分差。
那什么是异常极端值呢,用如下计算公式:
Q1 = four['25%']Q3 = four['75%']IQR = Q3 - Q1upper = Q3 + 1.5 * IQRlower = Q1 - 1.5 * IQRprint(upper, lower)
输出结果:
36441.375 8698.375
高于upper或者低于lower的值都属于异常极端值。
画出图像如下:
incomes = pd.DataFrame(incomes)import seaborn as snsimport matplotlib.pyplot as pltsns.boxplot(data=incomes, palette="Set1")plt.show()
很容易发现标为黑色菱形的这2个极端值。那这个计算极端值的1.5是怎么得来的呢,这是统计学中经过大量分析和经验积累得出的标准,一般情况不做调整。
- 统计学---极端异常值的检测
- 【数据建模 极端值的检测】离群值检测
- 馋,极端的欲望
- 算法的极端情况
- 关于TCP连接极端异常情况的处理方法的思考
- 函数调用的极端形式
- 异常值检测算法
- 异常值检测
- 异常值检测
- 一次监听异常的检测
- 异常检测的方法整理
- 关于R与Tableau的集成----异常值检测
- 统计学的研究对象
- 方差的统计学应用
- 统计学里的哲学
- 赤裸裸的统计学
- 统计学的理解
- 统计学的基本概念
- MATLAB实现一个简单的车牌识别小程序
- 英语导师思考总结
- C++内联
- Spring Boot初识
- 【BZOJ1857】传送带(三分)
- 统计学---极端异常值的检测
- Blog的API(php裸写
- (lintcode)第31题,数组划分
- 实验(堆栈)
- [ZJOI2005]午餐 贪心+dp
- 深入理解Java虚拟机之对象存活算法的实现(2)
- 【Python数据分析与展示】(八)数据合并、规整化
- JavaScript(4)- DOM
- 消失的硬盘空间:du与df统计不一致的解决方法