基于python的一种异常值快速判读剔除方法:“跳跃度”法
所谓的异常数据,就是在重复测量数据列中,与其他数据明显不一致的数据。
关于异常值的判断,主要有两种办法:技术性方法和统计学方法。前者是在对对象有一定的基本物理化学特性认识的基础上,判断测量数据的合理性;后者通过考察对象同样性质的数据进行正态性检验,从数据统计学角度判断数据的可信度。
而对于一般为未知对象的光谱测量,由于缺乏对对象的预先判断,一般采用统计学的方法判断数据的异常值。而由于一般用于正态分布的奈尔检验法等需要进行表格数据查询,不便于快速的异常值快速和剔除。
因此引入一种适合于自动快速处理判断数据异常值的方法——“跳跃度”判断方法。
其含义如下:
把一组测量统计数据X(1) 、X(2)、…X(n-1)、X(n)由大到小排列,用X(k+1)/X(k)来表示数据的跳跃度。依据统计学原理,若有异常数据,则必定位于数据列的两端。数据列左端的异常数据为异常大值,数据列右端的异常数据为异常小值。在测量数据出现异常的时候,对应的X(k+1)/X(k)比值必然有反常的大起大落,也就是数据发生突变。
对于右端,从起始值到为异常大值。对于左端,从到数据列的末端为异常小值。依据数据变化的跳跃性大小,把数据跳跃性变化稳定、没有较大落差的数据定义为正常数据,其它则视为异常数据。该判别的临界点可以依据测量的实际情况人为确定。跳跃度法的基本原理依据是:对于符合正态统计分布规律的数据,但数据总体数量够大时,越接近中间均值(视为真实值)时测量数据的存在概率越大,也即数据的跳跃度比值越大;越远离中间均值,数据越稀疏,数据跳跃度越小。该