【问题标题】:IQR outlier in RR中的IQR异常值
【发布时间】:2018-03-03 23:30:39
【问题描述】:

我应该使用 1.5*IQR 规则,通过在函数中使用这两个方程来确定左右尾的异常值:

  • Q1-(1.5*IQR)
  • Q3+(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)
}

【问题讨论】:

  • 您的预期输出是什么?你想要一个标记观察的向量是它的任一侧的异常值吗?
  • 另外,请注意 boxplot 函数可以识别这些点。

标签: r


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2020-05-06
    • 2023-03-21
    • 2015-01-23
    • 2018-06-29
    • 2021-09-05
    相关资源
    最近更新 更多