数据处理之异常值分析、处理(R语言)

异常值的分析方法

1、简单统计量分析

做一个描述性统计,进而查看哪些数据不合理。最常用的是最大值和最小值,如年龄的最大值199,则存在异常。

2、3σ原则

针对服从正态分布的数据,

P(|x-\mu |>3\sigma )\leqslant 0.003

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、不处理

猜你喜欢

转载自blog.csdn.net/zjlamp/article/details/81292706