R中的IQR离群值

CringleVonChubbleslerry

我应该使用1.5 * IQR规则通过在函数中使用以下两个方程式来确定左右尾部的离群值:

  • Q1-(1.5 * IQR)
  • 第三季度+(1.5 * IQR)

到目前为止,这是我尝试过的:

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)
}

红外光谱

目前,您正在获得逻辑的载体。而是使用逻辑索引。假设您只需要值本身而不是它们的位置,那么:

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])
}

检查是否给出合理的结果:

> 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章