package rule;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

//格拉布斯准则

public class GLBS

{

static Map map=new HashMap();

List list;

double mean; //均值

double mean2; //平方均值

int listNum;

double variance; //标准差

public GLBS(List list)

{

this.list=list;

if(map.size()==0)

{

initMap();

}

mean_variance();

}

/**

* 均值和方差

*/

private void mean_variance()

{

listNum= list.size();

for(Double d: list)

{

mean+=d;

mean2+=d*d;

}

mean/=listNum; //均值

mean2/=listNum;

variance=Math.sqrt(mean2-mean*mean); // 标准差

}

private void initMap()

{

double[][] crisis= {

{0,0,0,1.148,1.425,1.602,1.729,1.828,1.909,1.977,2.036,2.088,2.134,2.175,2.213,2.247,2.279,2.309,2.335,

2.361,2.385,2.408,2.429,2.448,2.467,2.486,2.502,2.519,2.534,2.549,2.583,2.577,2.591,2.604,

2.616,2.628,2.639,2.65,2.661,2.671,2.682,2.692,2.7,2.71,2.719,2.727,2.736,2.744,2.753,2.76,

2.768,2.775,2.783,2.79,2.798,2.804,2.811,2.818,2.824,2.831,2.837,2.842,2.849,2.854,2.86,2.866,

2.871,2.877,2.883,2.888,2.893,2.897,2.903,2.908,2.912,2.917,2.922,2.927,2.931,2.935,2.94,2.945,

2.949,2.953,2.957,2.961,2.966,2.97,2.973,2.977,2.981,2.984,2.989,2.993,2.996,3,3.003,3.006,

3.011,3.014,3.017},

{0,0,0,1.153,1.463,1.672,1.822,1.938,2.032,2.11,2.176,2.234,2.285,2.331,2.371,2.409,2.443,2.475,2.501,

2.532,2.557,2.58,2.603,2.624,2.644,2.663,2.681,2.698,2.714,2.73,2.745,2.759,2.773,2.786,2.799,

2.811,2.823,2.835,2.846,2.857,2.866,2.877,2.887,2.896,2.905,2.914,2.923,2.931,2.94,2.948,2.956,

2.943,2.971,2.978,2.986,2.992,3,3.006,3.013,3.019,3.025,3.032,3.037,3.044,3.049,3.055,3.061,

3.066,3.071,3.076,3.082,3.087,3.092,3.098,3.102,3.107,3.111,3.117,3.121,3.125,3.13,3.134,3.139,

3.143,3.147,3.151,3.155,3.16,3.163,3.167,3.171,3.174,3.179,3.182,3.186,3.189,3.193,3.196,3.201,

3.204,3.207},

{0,0,0,1.155,1.481,1.715,1.887,2.02,2.126,2.215,2.29,2.355,2.412,2.462,2.507,2.549,2.585,2.62,2.651,

2.681,2.709,2.733,2.758,2.781,2.802,2.822,2.841,2.859,2.876,2.893,2.908,2.924,2.938,2.952,

2.965,2.979,2.991,3.003,3.014,3.025,3.036,3.046,3.057,3.067,3.075,3.085,3.094,3.103,3.111,3.12,

3.128,3.136,3.143,3.151,3.158,3.166,3.172,3.18,3.186,3.193,3.199,3.205,3.212,3.218,3.224,3.23,

3.235,3.241,3.246,3.252,3.257,3.262,3.267,3.272,3.278,3.282,3.287,3.291,3.297,3.301,3.305,

3.309,3.315,3.319,3.323,3.327,3.331,3.335,3.339,3.343,3.347,3.35,3.355,3.358,3.362,3.365,3.369,

3.372,3.377,3.38,3.383},

{0,0,0,1.155,1.492,1.749,1.944,2.097,2.22,2.323,2.41,2.485,2.55,2.607,2.659,2.705,2.747,2.785,2.821,

2.954,2.884,2.912,2.939,2.963,2.987,3.009,3.029,3.049,3.068,3.085,3.103,3.119,3.135,3.15,3.164,

3.178,3.191,3.204,3.216,3.228,3.24,3.251,3.261,3.271,3.282,3.292,3.302,3.31,3.319,3.329,3.336,

3.345,3.353,3.361,3.388,3.376,3.383,3.391,3.397,3.405,3.411,3.418,3.424,3.43,3.437,3.442,3.449,

3.454,3.46,3.466,3.471,3.476,3.482,3.487,3.492,3.496,3.502,3.507,3.511,3.516,3.521,3.525,3.529,

3.534,3.539,3.543,3.547,3.551,3.555,3.559,3.563,3.567,3.57,3.575,3.579,3.582,3.586,3.589,3.593,

3.597,3.6}};

for(int i=3; i<=100; i++)

{

add(i, 0.90, crisis[0][i]);

add(i, 0.95, crisis[1][i]);

add(i, 0.975, crisis[2][i]);

add(i, 0.99, crisis[3][i]);

}

add(101, 0.90, 3.02);

add(101, 0.95, 3.21);

add(101, 0.975, 3.39);

add(101, 0.99, 3.65);

}

private void add(int i, double d, double e)

{

map.put(i+d, e);

}

private double Subtract(int n, double a, double value)

{

if(n>100)

{

n=101;

}

return value-map.get(n+a);

}

/**

* @return 返回剔除了所有异常数据的list

*/

public List clipList()

{

int i=0;

while(clipOne())

{

if(listNum<3)

{

break;

}

i++;

}

System.out.println(i);

return list;

}

/**

* 至多剔除一个异常数据

* @return

*/

private boolean clipOne()

{

double t1=Math.abs(list.get(0)-mean)/variance;

double tn=Math.abs(list.get(listNum-1)-mean)/variance;

double sub1=Subtract(listNum, 0.90, t1);

double subn=Subtract(listNum, 0.90, tn);

if(sub1>0||subn>0)

{

double remove;

if(sub1>subn)

{

remove=list.get(0);

list.remove(0);

}

else

{

remove=list.get(listNum-1);

list.remove(listNum-1);

}

mean=(listNum*mean-remove)/(listNum-1); //均值更新

mean2=(listNum*mean2-remove*remove)/(listNum-1);

variance=mean2-mean*mean; //方差更新

listNum--; //个数更新

return true;

}

return false;

}

public double getMean()

{

return mean;

}

}

java实现格拉布斯准则_格拉布斯准则(java代码)相关推荐

  1. java国际化 英语的标识符_(转)Java 国际化

    1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, 为了解决这个问题Java给我们提供了一个工具类ResourceBundle, 帮助我们实现Java的国际 ...

  2. java 著名的应用程序_即刻就业:java的应用程序有哪些

    通常我们一般使用java语言制作web开发,目前市场流行的电商网站等基本都是由java编写后台,著名JavaIDE也是Java写的,比如NetBeans,Eclipse,IDEA,JBuidler等. ...

  3. java寻找最大的字母_【LeetCode(Java) - 744】寻找比目标字母大的最小字母

    [LeetCode(Java) - 744]寻找比目标字母大的最小字母 [LeetCode(Java) - 744]寻找比目标字母大的最小字母 文章目录 1.题目描述 2.解题思路 3.解题代码 1. ...

  4. java 子线程传参_踩坑之Java执行Linux命令死锁阻塞挂起

    1 问题背景 最近在做一个需求需要调用linux下的某个脚本来对ai的模型进行训练,很简单的需求,我像往常一样写下如下的代码片段: Process process = Runtime.getRunti ...

  5. java比go难学_为什么Go比Java快这么多?看完这个例子就懂

    一,前言 本次小测试并不是试图说明Go是java的替代,Go lang和Java本就不是实现相同类型任务的语言 :Java是企业开发语言,而Go是系统编程语言.为什么Go比Java快这么多?看完这个例 ...

  6. java 工作3年水平_有着4年java工作经验,应该达到什么样的水平?

    四年Java工作经验已经不短了,应该要有比较高的技术水准. 1.集合 几乎是面试必问的内容,问的基本是底层实现原理,实现类的优缺点. 2.设计模式 23种设计模式中重点研究常用的十来种就可以了,面试中 ...

  7. 南邮java大作业实验报告_南京邮电大学java第三次实验报告

    实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...

  8. JAVA工作总是维护项目_开发维护大型 Java 项目的建议

    原标题:开发维护大型 Java 项目的建议 假设你是正在开发和维护一个包含2000个类并使用了很多框架的Java开发者.你要如何理解这些代码?在一个典型的Java企业项目小组中,大部分能够帮你的高级工 ...

  9. java获取环境变量路径_通过System获取java环境变量的路径

    通过System获取java环境变量的路径代码为: import java.io.FileNotFoundException; import java.io.FileOutputStream; imp ...

  10. 此安装程序必须使用 java 开发工具包 (jdk) 执行_彻底搞懂Java开发工具包(JDK)安装及环境变量配置...

    [官方正版]java jdk 9学习笔记 78.4元 包邮 (需用券) 去购买 > 一.Java 和 JDK 是什么 Java:Java是一种优秀的程序设计语言,它有非常多的语言特性,如简单性. ...

最新文章

  1. postfix 遇到的问题
  2. 动态规划之 0-1背包问题及改进
  3. 某厂商APT防御思路
  4. Hashtable, ArrayList, List, Dictionary学习
  5. Detectron:Pytorch-Caffe2-Detectron的一些跟进
  6. 小度智能屏X10正式发布:10.1英寸超大屏 售价999元
  7. python课程第三周小结_python周报第三周
  8. php 易宝支付,网站接入易宝支付遇上的问题
  9. C程序设计(谭浩强版)第五章课后习题
  10. python的sqlite3说明_python之sqlite3使用详解
  11. PPT自学教程从小白到高手超详细讲解_1
  12. Linux中GoogleChrome谷歌浏览器安装好了打不开怎么办?
  13. HALF-GCD算法的阐述
  14. 【网络技术联盟站】瑞哥教你如何使用 Console 接口管理设备
  15. 测试应该知道的知识-python检查死链
  16. ps安装了可以打开但开始里面找不到_黑苹果安装入门(hackintosh install)
  17. 粒子群算法的matlab实现(一)
  18. 可微和可导的关系,全微分、偏微分、偏导数
  19. fNIRS研究行文指南
  20. Python笔记之不可不练

热门文章

  1. oracle基础知识文档,Oracle 基础知识分享PPT
  2. linux mysql apache php 安装_linux下安装apache与php;Apache+PHP+MySQL配置攻略
  3. mysql 什么时候用内连接_mysql显示内连接和隐式内连接的区别,什么时候非要用到显示内连接。...
  4. 轮播 一张中间 两张在旁边_篮球不是单机游戏,在我旁边的还有我的队友!
  5. 金三银四 | 吃透这套题,面试更有底气
  6. 测试人员转型是大势所趋:我的十年自动化测试经验分享
  7. 工作5年后我才发现:90%的技术问题,可以解决
  8. 云服务器如何重新引导,重新启动server服务器
  9. mysql 并发_mysql 的读写锁与并发控制
  10. c语言找最长串指针改错,2013年计算机二级C语言上机试题及解析35