欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

R语言————用箱线图检查异常值

程序员文章站 2022-07-14 20:18:07
...

R语言————用箱线图检查异常值
[stats, n, conf, out]= boxplot.stats(x, coef=1.5, do.conf=TRUE, do.out=TRUE)
x:所要分析的数值向量
coef:盒子的长度,也就是说上图中盒须的长度需要是几倍的盒长(IQR)
do.conf: 是否要输出conf
do.out: 是否要输出out

stats:返回5个元素的值:盒须最小值,盒最小值,中位数,盒最大值,盒须最大值
n:非缺失值 的个数
conf: 返回中位数 的 95%的置信区间
out:返回异常值

得到离群值:
OutVals = boxplot(x)$out
which(x %in% OutVals)

删除离群值:
x[! x %in% OutVals]

不想画图,只想得到结果:
OutVals = boxplot(x, plot=FALSE)$out

set.seed(2016) # “编号为二零一六的随机数发生”,一个特定的种子可以产生一个特定的伪随机序列。为了让你的模拟能够可重复出现,因为很多时候我们需要取随机数,但这段代码再跑一次的时候,结果就不一样了,如果需要重复出现同样的模拟结果的话,就可以用set.seed()。在调试程序或者做展示的时候,结果的可重复性是很重要的,所以随机数种子也就很有必要。

x<-rnorm(100)  %取100个【0,1】区间的随机数
summary(x)   %看一下x的特征
boxplot.stats(x)  % 用箱线图分析一下
boxplot(x)   %画出箱线图
OutVals = boxplot(x)$out  %x的异常值是多少
which(x %in% OutVals)  % x的第几个数是异常值

多变量异常值检测:

x<-rnorm(100)
y<-rnorm(100)
df<-data.frame(x,y) #用x y生成两列的数据框
head(df) #看一下df前六行是什么
a<-which(x %in% boxplot.stats(x)$out)#寻找x为异常值的坐标的的位置
b<-which(y%in% boxplot.stats(y)$out)#寻找y为异常值的坐标位置
p1=intersect(a,b) #寻找变量xy均为异常值的坐标位置  ,intersect求交集的意思
plot(df) #画xy的散点图
p2<-union(a,b) #寻找变量x或y为异常值的坐标位置, union求并集的意思
points(df[p2, ],col="red",pch="x",cex=2)  #标记异常值

R语言————用箱线图检查异常值

相关标签: R