原理参考:https://wenku.baidu.com/view/90cc05a7c8d376eeafaa3151.html

格拉布斯(Grubbs)准则法就是剔除数据集中偏离较远的数据,可以减少异常值对总体数据的影响。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <vector>using namespace std;// 格拉布斯表
double table[] = {0.0, 0.0, 0.0, 1.153,1.463,1.672,1.822,1.938,2.032,2.110,2.176,2.234,2.285,2.331,2.371,2.409,2.443,2.475,2.501,2.532,2.557,2.580,2.603,2.624,2.644,2.663,2.681,2.698,2.714,2.730,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.940,2.948,2.956,2.943,2.971,2.978,2.986,2.992,3.000,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.130,3.134,3.139,3.143,3.147,3.151,3.155,3.160,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};// 结构体数据结构
struct data_sort
{double  data;       // 原始数据int     id;         // 数据对应ID,便于回查原始数据列表
};// 排序法则,其中:< 升序    >降序
bool comparison(data_sort a,data_sort b)
{return a.data < b.data ;
}/*** @brief My_Grubbs 格拉布斯剔除法* @param data      待处理数据* @return*/
bool My_Grubbs(vector<data_sort> &data)
{sort(data.begin(), data.end(), comparison);// 计算平均值double data_sum = 0;for(int i=0; i<data.size(); i++){data_sum += data.at(i).data;}double data_ave = data_sum/data.size(); // 平均值// 计算标准差data_sum = 0;for(int i=0; i<data.size(); i++){data_sum += pow((data.at(i).data - data_ave), 2);}double data_s = sqrt(data_sum/(data.size() - 1));   // 标准差if(abs(data_ave - data.at(0).data) > abs(data.at(data.size()-1).data - data_ave))   // 当最小值与均值大于最大值与均值{if(abs(data.at(0).data - data_ave)/data_s > table[3])           // 满足Gn大于Gp(n)时,为异常值,剔除最小值{data.erase(data.begin());   // 剔除最小值My_Grubbs(data);            // 进行递归处理}else                            // 条件满足,可以结束{return true;}}else if(abs(data_ave - data.at(0).data) < abs(data.at(data.size()-1).data - data_ave))  // 当最大值与均值大于最小值与均值{if(abs(data.at(data.size()-1).data - data_ave)/data_s > table[data.size()-1])   // 满足Gn大于Gp(n)时,为异常值,剔除最大值{data.erase(data.begin()+data.size()-1);     // 剔除最大值My_Grubbs(data);                            // 进行递归处理}else                                            // 条件满足,可以结束{return true;}}else    // 当最大值与均值等于最小值与均值{if(abs(data.at(0).data - data_ave)/data_s > table[3])   // 满足Gn大于Gp(n)时,为异常值,剔除最大值和最小值{data.erase(data.begin());                       // 剔除最小值data.erase(data.begin() + data.size()-1);       // 剔除最大值My_Grubbs(data);                                // 进行递归处理}else                                                // 条件满足,可以结束{return true;}}
}

格拉布斯(Grubbs)准则法相关推荐

  1. 肖维勒准则matlab_莱因达 ( PauTa)准则、格拉布斯 ( Grubbs)准则、肖维纳 (Chauvenet)准则 三者的区别...

    展开全部 1.检测数量不同32313133353236313431303231363533e78988e69d8331333431363566 莱因达准则是以三倍测量列的标准偏差为极限取舍标准,其给定 ...

  2. grubbs准则 matlab_莱因达 ( PauTa)准则、格拉布斯 ( Grubbs)准则、肖维纳Chauvenet 三者的区别...

    莱因达 ( PauTa)原则.格拉布斯 ( Grubbs)原则.肖维纳 (Chauvenet)原则 三者的区别 莱因达 ( PauTa)原则.格拉布斯 ( Grubbs)原则.肖维纳 (Chauven ...

  3. (转)格拉布斯准则(Grubbs Criterion)处理数据异常

    (转)格拉布斯准则(Grubbs Criterion)处理数据异常 参考文章: (1)(转)格拉布斯准则(Grubbs Criterion)处理数据异常 (2)https://www.cnblogs. ...

  4. java实现格拉布斯准则_格拉布斯准则(java代码)

    package rule; import java.util.HashMap; import java.util.List; import java.util.Map; //格拉布斯准则 public ...

  5. 高通平台的usb2.0测试_深圳格拉布斯研究院全自动高通量催化剂制备及筛选设备已正式启用...

    2020年9月,深圳格拉布斯研究院正式启用全自动高通量催化剂制备及筛选设备,研究院有机合成平台已完成全部设备的安装调试工作,日筛选量上千个的高通量筛选中心正式运行. 全自动高通量催化剂制备及筛选设备, ...

  6. 试验设计与matlab数据分析 下载,试验设计与MATLAB数据分析(附光盘)

    第1章 试验设计与MATLAB数据分析简介 1.1 试验设计与数据分析的意义 1.2 试验设计中的几个常用概念 1.2.1 试验指标 1.2.2 因素和水平 1.2.3 响应(或输出) 1.2.4 试 ...

  7. 莱特准则 matlab,初学MATLAB,遇到一简单的题目,一点头绪也没有啊.99

    在无系统误差的情况下,测量中大误差出现的概率是很小的.在正态分布下,误差绝对值超过2.57σ(x)的概率仅为1%,误差绝对值超过3σ(x)的概率仅为0.27%≈1/370.对于误差绝对值较大的测量数据 ...

  8. grubbs检测c语言,Grubbs算法检测离群值

    ▲概述:一组测量数据中,如果个别数据偏离平均值很远,那么这个(这些)数据称作"可疑值".如果用统计方法-例如格拉布斯(Grubbs)法判断,能将"可疑值"从此组 ...

  9. Grubbs Test

    1.目的: 检测异常值Grubbs的检验(Grubbs 1969和Stefansky 1972)用于检测单变量数据集中的单个异常值,该单变量数据集遵循近似正态分布. 如果您怀疑可能存在多个异常值,建议 ...

  10. 华为2018软赛心得(西北36强)

    赛题: 本次赛题基本描述 由于租户对ECS实例(虚拟机,VM)请求的行为具有一定规律,可以通过对历史ECS实例请求的分析,预测到未来一段时间的ECS实例请求,然后对预测的请求分配资源(如图1所示),这 ...

最新文章

  1. 【复盘】第一次灌鸡汤
  2. 指定域的名称或安全标识(SID)与该域的信任信息不一致
  3. 用Apache Ivy实现项目里的依赖管理
  4. 【转】C++学习四 冒泡排序法的一些改进
  5. android获取3g或wifi流量信息,Android代碼----android獲取3G或wifi流量信息
  6. Apache SolrCloud安装
  7. 设置相机的距离_讲对焦(四):相机对焦有哪些小技巧?
  8. 【Python学习笔记】列表生成式和生成器
  9. vivado下载bit和ltx失败
  10. cmd强制删除文件夹
  11. 【Debug】 Packet for query is too large (1155878 > 1048576),max_allowed_packet设置.
  12. myeclipse创建web-project没有WebRoot文件夹
  13. C2AE: Class Conditioned Auto-Encoder for Open-set Recognition(CVPR 2019)部分翻译
  14. 这 26个 Python 技巧,你肯定还不知道!
  15. mfc 定时器绘制旋转六边形_OpenGL——旋转的六边形(动画)
  16. Linux入门学习笔记
  17. 数据分析师求职之三问三答
  18. 信息学奥赛一本通:2026:【例4.12】阶乘和
  19. 武汉计算机专业排名2015,2015武汉大学专业排名一览
  20. 2.5.10 DLPar动态分区(资源迁移)

热门文章

  1. 算法竞赛入门经典题解目录
  2. pom文件中的dependencyManagement和dependency
  3. SIFT算法详解(附有完整代码)
  4. java自学网视频教程,系列教学
  5. github 出现无法连接成功问题终极详解
  6. MATLAB数据拟合中的若干问题(待续)
  7. Unity 官方教程2
  8. Hadoop完全分布式配置
  9. 【论文笔记】韩家炜团队AutoPhrase:自动短语挖掘
  10. 触屏西门子plc和计算机通讯,西门子S7-200CPU之间及它们与触摸屏之间数据读取如何连接?...