Grubbs算法在R语言里面有编辑好了的包。但是其算法一次只能检验出一个离群值。这个函数在包’outliers’中,对应的函数为grubbs.test()。其中几个参数的设置,大家可以查阅相关的函数说明,我们直接进入循环找多个离群值的主题。
我们自定义如下函数:

rep_grubbs<-function(x,level=0.05){##下面两个包是需要手动进行读取的,当然可以在函数里面读取,但是没有必要#library(stringr)#library(outliers)model<-function(y){if(y==1)return("最大值")elsereturn("最小值")}unnormal<-vector()for(i in 1:length(x)){test<-grubbs.test(x)if(test$p.value<level){x<-x[-which(x==as.numeric(str_extract_all(test$alternative,"\\d+")))]unnormal<-c(unnormal,as.numeric(str_extract_all(test$alternative,"\\d+")))print(paste0("检验出一个极值是离群值,其值为:",str_extract_all(test$alternative,"\\d+")))}else{print("此轮所检验的最值不是离群值,并且检验结束,打印所有离群值!")print(unnormal)break}}
}

其中参数,x表示要检验的数据集,不能是数据框等多维数据。只能是一维数据,多维数据可以参见我其他博客的数据拉直,先将数据拉直,然后再用这个函数进行检测就行了。level表示检测的α精度设置为多少,这里默认为0.05.可以按照自己需求修改。
应该注意到:我们并没有在grubbs.test()函数内部指定项opposite的值来,来选择是对最大阻还是最小值开始检测。我们不设置这个参数项,函数会自动检测,并返回极值中的一个离群值。这个极值可能是极大值,或者极小值。所以,我自定义的函数还是有改进的空间。
希望大家留言讨论。

Grubbs检验离群值——循环算法求出多个离群值相关推荐

  1. c语言建立并存储树,利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现...

    #include #include #include /* 利用十字链表存储有向图,可用于同时查找某个顶点的出度与入度: */ typedef struct edge {//顶点表 int headv ...

  2. KS检验、t检验、f检验、Grubbs检验、狄克逊(Dixon)检验、卡方检验小结

    1. KS检验 Kolmogorov-Smirnov检验是基于累计分布函数的,用于检验一个分布是否符合某种理论分布或比较两个经验分布是否有显著差异. 单样本K-S检验是用来检验一个数据的观测经验分布是 ...

  3. Java:求出1~999999之间的所有“水仙花数”并输出

    import java.util.Scanner;public class TestDemo{public static void findNum(int n){for (int i = 1; i & ...

  4. 相机畸变校正、求出参数、具体应用

    相机畸变校正.求出参数.具体应用 一.原理 二.具体步骤 三.参数获取程序代码 四.使用程序 后续版本: 畸变矫正应用封装后,耗时6ms 参数采集第二版,添加了一些异常判断和提示 参数获取程序源码 运 ...

  5. 7_2判断两个单链表是否相交,若相交,求出第一个交点

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

  6. ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!

    题目描述 求出区间[a,b]中所有整数的质因数分解. 输入 输入两个整数a,b. 输出 每行输出一个数的分解,形如k=a1*a2*a3...(a1< =a2< =a3...,k也是从小到大 ...

  7. ACMNO.16用迭代法求 。求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数 输入 X 输出 X的

    题目描述 用迭代法求 . 求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001.输出保留3位小数 输入 X 输出 X的平方根 样例输 ...

  8. ACMNO.12有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。 输入 N 输出 数列前N项和 样例输入 10

    题目描述 有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数. 输入 N 输出 数列前N项和 样例输入 10 样例输出 16.48 ...

  9. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字

    题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二 ...

最新文章

  1. STM32F103ZET6开发板PB3/4,PA13/14/15等I/O口的特殊配置
  2. Java虚拟机运行时的数据区域
  3. jzoj1029-电子眼【树形dp】
  4. 最实用的机器学习算法Top5
  5. 涨姿势,一个通信项目从开始到结束,原来还包括这些工作
  6. 限制用户擅自更改ip的方法
  7. java多线程系列:ThreadPoolExecutor源码分析,java基础面试笔试题
  8. linux中vim查看最后五行命令,Linux系统中Vi常用命令及高级应用
  9. 5.2创建socket
  10. linux代码折叠,VIM 代码折叠 :set foldmethod=marker
  11. 群晖之邮件服务器搭建
  12. PWN mistake [pwnable.kr]CTF writeup题解系列8
  13. VUX--小白初学使用安装
  14. NumPy基础之大作业(Iris数据分析)
  15. 搭建微信小程序HTTPS服务器
  16. 鼠标滑轮,滑动加载效果
  17. poj 1689 zoj 1422 3002 Rubbery (Geometry + BFS)
  18. VUE父组件向子组件传递数据
  19. Cascaded Shadow Map(CSM)中的一些问题
  20. 初识Tableau—(保姆级教程)

热门文章

  1. Inventor(C#)开发学习小结——入门篇
  2. 车好多让10万亿元的汽车消费市场跳起来
  3. 深入剖析Spring(一)——IoC的基本概念(从面向对象角度介绍)
  4. Linux定时任务与开机自启动脚本
  5. 仲至信息与Cornet Solutions签订日本经销合同
  6. Linux上杀毒软件有哪些?
  7. oracle中文名转拼音,oracle 汉字转拼音
  8. C语言实现LZW编码
  9. linux用户密码转换为明文,Linux strace 明文密码抓取
  10. 通道注意力机制keras_在TensorFlow+Keras环境下使用RoI池化一步步实现注意力机制