数据分析系列 之3σ规则/依据拉依达准则来剔除异常值

Posted 琅晓琳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析系列 之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σ规则、依据拉依达准则来剔除异常值程序

以上是关于数据分析系列 之3σ规则/依据拉依达准则来剔除异常值的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 大数据剔除坏值

数据处理之异常值检测

测试中的异常数据剔除用啥方法?

数据预测的步骤

如何发现数据中的异常值?对异常值是怎么处理的?

Python 详解K-S检验与3σ原则剔除异常值