R语言————用箱线图检查异常值
程序员文章站
2022-07-14 20:18:07
...
[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) #标记异常值
下一篇: 深度学习神经网络量化
推荐阅读