逃遁的奴分享 http://blog.sciencenet.cn/u/dugucan

博文

R 语言中异常值筛查以及替换的函数

已有 16759 次阅读 2014-5-12 16:21 |个人分类:R 语言|系统分类:科研笔记| R语言, 异常值, 自编函数

   SPSS 中异常值的筛查可疑通过箱线图来查看,原理是超出上下箱体 1.5 倍的四分位间距为异常值,超出 3 倍则为极端值。R 语言中有专门的 outliers 这个包用来检验异常值,但感觉不太方便。所以动手编写了一个函数 outlier.IQR。相较于 SPSS 中的同样功能,outlier.IQR() 还对异常值进行了替换,替换值自己设定,可以为 NA、平均值、中位数等等。

   以下为函数代码:

outlier.IQR <- function(x, multiple = 1.5, replace = FALSE, revalue = NA) {
 q <- quantile(x, na.rm = TRUE) #四分位间距3倍间距以外的认为是离群值
 IQR <- q[4] - q[2]
 x1 <- which(x < q[2] - multiple * IQR | x > q[4] + multiple * IQR)
 x2 <- x[x1]
 if (length(x2) > 0) outlier <- data.frame(location = x1, value = x2)
 else outlier <- data.frame(location = 0, value = 0)
 if (replace == TRUE) {
   x[x1] <- revalue
 }
 return(list(new.value = x, outlier = outlier))
}

   结果输出为列表,分别为 outlier.IQR()$new.valueoutlier.IQR()$outlier。前者为异常值替换后的新向量,后者为原向量中异常值及其所在位置。



https://blog.sciencenet.cn/blog-298532-793752.html

上一篇:语文教育趣闻
下一篇:R 语言中折线图下带有柱形图的做法
收藏 IP: 120.195.121.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 05:46

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部