r语言学习系列16异常值处理

r语言学习系列16异常值处理

ID:44024113

大小:256.38 KB

页数:14页

时间:2019-10-18

r语言学习系列16异常值处理_第1页
r语言学习系列16异常值处理_第2页
r语言学习系列16异常值处理_第3页
r语言学习系列16异常值处理_第4页
r语言学习系列16异常值处理_第5页
资源描述:

《r语言学习系列16异常值处理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、16.异常值处理目录:一.用箱线图检测异常值二.使用局部异常因子法(LOF法)检测异常值三.用聚类方法检测异常值四.检测时间序列数据中的异常值五.基于稳健马氏距离检测异常值正文:异常值,是指测量数据中的随机错误或偏差,包括错误值或偏离均值的孤立点值。在数据处理中,异常值会极大的影响回归或分类的效果。为了避免异常值造成的损失,需要在数据预处理阶段进行异常值检测。另外,某些情况下,异常值检测也可能是研究的目的,例如,数据造假的发现、电脑入侵的检测等。一、用箱线图检测异常值在一条数轴上,以数据的上下四分位数(Q1-Q3)为界画一个矩形盒子(中间50%的数据落在盒

2、内);在数据的中位数位置画一条线段为中位线;用◇标记数据的均值;默认延长线不超过盒长的1.5倍,之外的点认为是异常值(用○标记)。盒形图的主要应用就是,剔除数据的异常值、判断数据的偏态和尾重。R语言实现,使用函数boxplot.stats(),基本格式为:[stats,n,conf,out]=boxplot.stats(x,coef=1.5,do.conf=TRUE,do.out=TRUE)其中,x为数值向量(NA、NaN值将被忽略);coef为盒须的长度为几倍的IQR(盒长),默认为1.5;do.conf和do.out设置是否输出conf和out返回值:

3、stats返回5个元素的向量值,包括盒须最小值、盒最小值、中位数、盒最大值、盒须最大值;n返回非缺失值的个数;conf返回中位数的95%置信区间;out返回异常值。单变量异常值检测:set.seed(2016)x<-rnorm(100)#生成100个服从N(0,1)的随机数summary(x)#x的汇总信息Min.1stQu.MedianMean3rdQu.Max.-2.7910-0.7173-0.2662-0.11310.59172.1940boxplot.stats(x)#用箱线图检测x中的异常值$stats[1]-2.5153136-0.732687

4、9-0.26620710.59292062.1942200$n[1]100$conf[1]-0.47565320-0.05676092$out[1]-2.791471boxplot(x)#绘制箱线图多变量异常值检测:x<-rnorm(100)y<-rnorm(100)df<-data.frame(x,y)#用x,y生成两列的数据框head(df)xy10.414523530.48522682-0.474718470.696768830.065993490.18551394-0.502477780.70073355-0.825998590.311681060

5、.166989280.7604624#寻找x为异常值的坐标位置a<-which(x%in%boxplot.stats(x)$out)a[1]788192#寻找y为异常值的坐标位置b<-which(y%in%boxplot.stats(y)$out)b[1]2737intersect(a,b)#寻找变量x,y都为异常值的坐标位置integer(0)plot(df)#绘制x,y的散点图p2<-union(a,b)#寻找变量x或y为异常值的坐标位置[1]7881922737points(df[p2,],col="red",pch="x",cex=2)#标记异常值

6、二、使用局部异常因子法(LOF法)检测异常值局部异常因子法(LOF法),是一种基于概率密度函数识别异常值的算法。LOF算法只对数值型数据有效。算法原理:将一个点的局部密度与其周围的点的密度相比较,若前者明显的比后者小(LOF值大于1),则该点相对于周围的点来说就处于一个相对比较稀疏的区域,这就表明该点是一个异常值。R语言实现:使用DMwR或dprep包中的函数lofactor(),基本格式为:lofactor(data,k)其中,data为数值型数据集;k为用于计算局部异常因子的邻居数量。library(DMwR)iris2<-iris[,1:4]#只选数

7、值型的前4列head(iris2)Sepal.LengthSepal.WidthPetal.LengthPetal.Width15.13.51.40.224.93.01.40.234.73.21.30.244.63.11.50.255.03.61.40.265.43.91.70.4out.scores<-lofactor(iris2,k=10)#计算每个样本的LOF值plot(density(out.scores))#绘制LOF值的概率密度图#LOF值排前5的数据作为异常值,提取其样本号out<-order(out.scores,decreasing=TR

8、UE)[1:5]out[1]42107231699iris2[ou

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。