找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3677|回复: 0
打印 上一主题 下一主题
收起左侧

依据拉依达准则来剔除异常值程序

[复制链接]
跳转到指定楼层
楼主
ID:307258 发表于 2018-4-13 13:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
java源码在下,在main主方法里的data数组里输入要测量的数据(个数长度>=10个),会判断里面有误异常值,如果有则警告
/**
* @author 廖启安
* @data 2018年4月12日
* @deprecated 功能:利用拉依达准则来查找处异常值
* @version jdk8.0
*/
package main;
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 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("该数组中的第"+(x+1)+"个元素属于异常值");
                        }
                }
        }
}

public class client{
        public static void main(String args[]) {
                double data[]=new double[] {5,5,5,5,5,5,5,5,5,5,25};//原始数组
                Pauta pau=new Pauta(data);//原始数组封装后输出
            System.out.println("算数平均值:"+pau.average());//算数平均值
            /*此处的剩余误差输出略*/
            System.out.println("标准方差:"+pau.standardVariance());//标准方差
            pau.judge();//判断异常值方法
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表