|
java源碼在下,在main主方法里的data數(shù)組里輸入要測(cè)量的數(shù)據(jù)(個(gè)數(shù)長(zhǎng)度>=10個(gè)),會(huì)判斷里面有誤異常值,如果有則警告
/**
* @author 廖啟安
* @data 2018年4月12日
* @deprecated 功能:利用拉依達(dá)準(zhǔn)則來(lái)查找處異常值
* @version jdk8.0
*/
package main;
class Pauta{ //創(chuàng)建拉依達(dá)類
private double arr[]; //接受原始數(shù)組
public Pauta(double temp[]) { //利用構(gòu)造方法來(lái)得的原始數(shù)組
this.arr=temp;
System.out.print("原始數(shù)組:");
for(double x:arr) {
System.out.print(x+"、");
}
System.out.println();
}
public double average() { //原始數(shù)組的算數(shù)平均值方法
double sum=0;
for(int x=0;x<arr.length;x++) {
sum+=arr[x];
}
return sum/arr.length;
}
public double[] residualError() {//原始數(shù)組的剩余誤差方法
double rE[]=new double[] {};
for(int x=0;x<arr.length;x++) {
rE[x]=arr[x]-average();
}
return rE;
}
public double standardVariance() {//原始數(shù)組的標(biāo)準(zhǔn)方差值計(jì)算方法
double sum=0;
for(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 x=0;x<arr.length;x++) {
if(Math.abs(arr[x]-average())>(3*standardVariance())) {
System.out.println("該數(shù)組中的第"+(x+1)+"個(gè)元素屬于異常值");
}
}
}
}
public class client{
public static void main(String args[]) {
double data[]=new double[] {5,5,5,5,5,5,5,5,5,5,25};//原始數(shù)組
Pauta pau=new Pauta(data);//原始數(shù)組封裝后輸出
System.out.println("算數(shù)平均值:"+pau.average());//算數(shù)平均值
/*此處的剩余誤差輸出略*/
System.out.println("標(biāo)準(zhǔn)方差:"+pau.standardVariance());//標(biāo)準(zhǔn)方差
pau.judge();//判斷異常值方法
}
}
|
|