异常值的分析方法
1、简单统计量分析
做一个描述性统计,进而查看哪些数据不合理。最常用的是最大值和最小值,如年龄的最大值199,则存在异常。
2、3σ原则
针对服从正态分布的数据,
3、箱形图分析
首先,读取数据集,用sum(),mean()函数来分别获取缺失样本数、缺失比例。
saledata <- read.csv(file="catering_sale.csv",header = TRUE)
sum(complete.cases(saledata)) #TRUE为1,FALSE为0。结果为非缺失样本数
sum(!complete.cases(saledata)) #结果为缺失样本数
mean(!complete.cases(saledata)) #缺失比例
saledata[!complete.cases(saledata),] #获取缺失值记录
然后,进行箱形图分析
sp <- boxplot(saledata$销量,boxwex = 0.7) #画出箱形图,boxwex参数控制箱形的宽度
sd.s <- sd(saledata[complete.cases(saledata),]$销量) #结果是完整样本的标准差
mn.s <- mean(saledata[complete.cases(saledata),]$销量) #结果是完整样本的均值
points(1.1,mn.s,col="red",pch=18) #标出均值点,其中1.1为x轴坐标
arrows(xi,mn.s-sd.s,xi,mn.s+sd.s,code=3,col="pink",angle=75,length=.1) #画出箭头,从均值点到上、下标准差的距离
text(rep(c(1.05,0.95),length(sp$out)/2),sp$out,sp$out,col="red") #标出异常点的值,在点的左边、右边(1.05,0.95)各标示一半。其中sp$out是所有异常值点
最后,结合具体业务,判定哪些点为正常值,哪些点为异常值。
异常值的处理方法:
1、删除
2、视为缺失值,进行补数
3、平均值修正,可用前后两个观测的平均值修正。
4、不处理