首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的IQR异常值

R中的IQR异常值
EN

Stack Overflow用户
提问于 2018-03-03 23:30:39
回答 1查看 4.5K关注 0票数 2

我应该使用1.5*IQR规则来确定左右尾部的离群值,方法是在一个函数中使用这两个方程:

  • 第一季度-(1.5*IQR)
  • Q3+(1.5*IQR)

这就是我迄今尝试过的:

代码语言:javascript
复制
IQR.outliers <- function(x) {
  if(any(is.na(x)))
    stop("x is missing values")
  if(!is.numeric(x))
    stop("x is not numeric")
  Q3<-quantile(x,0.75)
  Q1<-quantile(x,0.25)
  IQR<-(Q3-Q1)
  left<-x<(Q1-(1.5*IQR))
  right<-x>(Q3+(1.5*IQR))
  c(left,right)
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-03 23:42:01

目前,您正在得到一个逻辑向量。相反,使用逻辑索引。假设你只想要价值观本身而不是它们的位置,那么:

代码语言:javascript
复制
IQR.outliers <- function(x) {
  if(any(is.na(x)))
    stop("x is missing values")
  if(!is.numeric(x))
    stop("x is not numeric")
  Q3<-quantile(x,0.75)
  Q1<-quantile(x,0.25)
  IQR<-(Q3-Q1)
  left<- (Q1-(1.5*IQR))
  right<- (Q3+(1.5*IQR))
  c(x[x <left],x[x>right])
}

检查一下它是否给出了合理的结果:

代码语言:javascript
复制
> IQR.outliers (1:100)
integer(0)
> IQR.outliers (c(1:100,1000))
[1] 1000
> IQR.outliers (rnorm(1000) )
[1] -3.522064 -3.296682  2.910200  2.671333
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49090357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档