使用R boxplot.stats函数进行异常检测

异常值一般指数据远离大多数观察值。有很多种方式进行异常值检测,如基于变量空间距离度量,把距离太远的观察值标记为异常值。还有基于数据分布的检测方法,本文利用boxplot.stats函数来解释基于分布的异常检测方法,并利用ggplot图视表示。

boxplot.stats函数原理

该检测方法先假定数据的预期分布,把背离这种分布的数值标记为异常值。

首先计算数据集的四分位数据Q1、Q3,利用公示计算四分位距:IQR=Q3-Q1 ;
然后就能计算两边的异常值(或离群值):

  • 上须值:Q3+1.5*IQR
  • 下须值:Q1-1.5*IQR

识别异常值就是计算大于上须值或小于下须值的数据。

library(ggplot2)
library(tibble)

set.seed(222)

m <- as_tibble(rnorm(100)) %>% mutate(id=row_number(), .before="value")
head(m, 10)
#     id    value
# <int>    <dbl>
#     1  1.49   
#     2 -0.00189
#     3  1.38   
#     4 -0.380  
#     5  0.184  
#     6 -0.247  
#     7 -1.22   
#     8  1.56   
#     9  0.427  
#    10 -1.20 

st <- boxplot.stats(m$value)
out_points <- filter(m, m$value %in% st$out)
out_points

#      id value
#   <int> <dbl>
# 1    70 -2.77
# 2    74 -2.53

# 首先画原始数据,然后再用红色画出离群值
ggplot(m, aes(x=id, y=value)) + geom_point() +
  geom_point(data = out_points, aes(x=id, y=value, color ="red"))

ggplot(m, aes(y=value)) + geom_boxplot() +
  ggtitle("箱线图展示")
在这里插入图片描述
在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值