剔除“异常值”的一般原则是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剔除“异常值”的一般原则是什么?相关的知识,希望对你有一定的参考价值。
异常值(outlier)是指一组测定值中与平均值的偏差超过两倍标准差的测定值,与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。异常值outlier:一组测定值中与平均值的偏差超过两倍标准差的测定值。与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。在处理数据时,应剔除高度异常的异常值。异常值是否剔除,视具体情况而定。在统计检验时,指定为检出异常值的显著性水平α=0.05,称为检出水平;指定为检出高度异常的异常值的显著性水平α=0.01,称为舍弃水平,又称剔除水平(reject level)。异常值是指一组测定值中与平均值的偏差超过两倍标准差的测定值。与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。在处理数据时,应剔除高度异常的异常值。异常值是否剔除,视具体情况而定。在统计检验时,指定为检出异常值的显著性水平α=0.05,称为检出水平;指定为检出高度异常的异常值的显著性水平α=0.01,称为舍弃水平,又称剔除水平(reject level)。标准化数值(Z-score)可用来帮助识别异常值。Z分数标准化后的数据服从正态分布。因此,应用Z分数可识别异常值。我们建议将Z分数低于-3或高于3的数据看成是异常值。这些数据的准确性要复查,以决定它是否属于该数据集。肖维勒准则法(
Chauvenet):经典方法,改善了拉依达准则,过去应用较多,但它没有固定的概率意义,特别是当测量数据值n无穷大时失效。
参考技术A狄克逊准则法(Dixon):对数据值中只存在一个异常值时,效果良好。担 当异常值不止一个且出现在同侧时,检验效果不好。尤其同侧的异常值较接近时效果更差,易遭受到屏蔽效应。罗马诺夫斯基(t检验)准则法:计算较为复杂。格拉布斯准则法(Grubbs):和狄克逊法均给出了严格的结果,但存在狄 克逊法同样的缺陷。朱宏等人采用数据值的中位数取代平均值,改进得到了更为稳健的处理方法。有效消除了同侧异常值的屏蔽效应。国际上常推荐采用格拉布斯准则法。这些方法,都有各自的特点,例如,拉依达准则不能检验样本量较小(显著性水平为0.1时,n必须大于10)的情况,格拉布斯准则则可以检验较少的数据。在国际上,常推荐格拉布斯准则和狄克逊准则。
参考技术B在处理实验数据的时候,我们常常会遇到个别数据值偏离预期或大量统计数据值结果的情况,如果我们把这些数据值和正常数据值放在一起进行统计,可能会影响实验结果的正确性,如果把这些数据值简单地剔除,又可能忽略了重要的实验信息。这里重要的问题是如何判断异常值,然后将其剔除。判断和剔除异常值是数据处理中的一项重要任务,目前的一些方法还不是十分完善,有待进一步研究和探索。异常值outlier:指样本中的个别值,其数值明显偏离它(或他们)所属样本的其余观测值,也称异常数据,离群值。目前人们对异常值的判别与剔除主要采用物理判别法和统计判别法两种方法。所谓物理判别法就是根据人们对客观事物已有的认识,判别由于外界干扰、人为误差等原因造成实测数据值偏离正常结果,在实验过程中随时判断,随时剔除。统计判别法是给定一个置信概率,并确定一个置信限,凡超过此限的误差,就认为它不属于随机误差范围,将其视为异常值剔除。当物理识别不易判断时,一般采用统计识别法。
数据分析系列 之3σ规则/依据拉依达准则来剔除异常值
1 相关原理
3σ原则为
数值分布在(μ-σ,μ+σ)中的概率为0.6827
数值分布在(μ-2σ,μ+2σ)中的概率为0.9545
数值分布在(μ-3σ,μ+3σ)中的概率为0.9973
可以认为,Y 的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%.
2 代码实现
public class Pauta //创建拉依达类
private double arr[]; //接受原始数组
public Pauta(double temp[]) //利用构造方法来得的原始数组
this.arr=temp;
System.out.print("原始数组:");
for(double x:arr)
System.out.print(x+"、");
System.out.println();
public double average() //原始数组的算数平均值方法
double sum=0;
for(int x=0;x<arr.length;x++)
sum+=arr[x];
return sum/arr.length;
public double[] residualError() //原始数组的剩余误差方法
double rE[]=new double[] ;
for(int x=0;x<arr.length;x++)
rE[x]=arr[x]-average();
return rE;
public double standardVariance() //原始数组的标准方差值计算方法
double sum=0;
for(int int x=0;x<arr.length;x++)
sum+=Math.pow(arr[x]-average(),2);
return Math.sqrt(sum/(arr.length-1));
public void judge() //判断异常值方法,若异常,则输出
for(int int x=0;x<arr.length;x++)
if(Math.abs(arr[x]-average())>(3*standardVariance()))
System.out.println("该数组中的第"+(x+1)+"个元素属于异常值");
public class client
public static void main(String args[])
double data[]=new double[] 1,2,8,10,8,5,2,4,6,11,15;//原始数组
Pauta pau=new Pauta(data);//原始数组封装后输出
System.out.println("算数平均值:"+pau.average());//算数平均值
/*此处的剩余误差输出略*/
System.out.println("标准方差:"+pau.standardVariance());//标准方差
pau.judge();//判断异常值方法
参考资料:
https://wenku.baidu.com/view/cce8bacc142ded630b1c59eef8c75fbfc77d9407.html JAVA使用:3σ规则、依据拉依达准则来剔除异常值程序
以上是关于剔除“异常值”的一般原则是什么?的主要内容,如果未能解决你的问题,请参考以下文章