R语言-使用箱型图进行数据异常值分析
首先介绍本文章的主要内容:
1. 检查批量数据的完整性(录入不全)
2. 异常值分析(录入错误以及数据不合理)
箱形图(英文:Box plot),是一种用作显示一组数据分散情况资料的统计图。在各种领域也经常被使用,常见于品质管理,快速识别异常值。
一.箱子的中间一条线,是数据的中位数,代表了样本数据的平均水平。
二.箱子的上下限,分别是数据的上四分位数和下四分位数。这意味着箱子包含了50%的数据。因此,箱子的宽度在一定程度上反映了数据的波动程度。
三.在箱子的上方和下方,又各有一条线。代表着最大最小值。如果有点冒出去,理解成“异常值”就好。
示例数据集为:
- 商店销量与日期的关联记录
``
R语言代码:统计完整数据个数与不完整数据个数
#设置工作空间
setwd("F:/chapter3/数据探索")
#读取表单数据
saledata=read.csv(file="./data/catering_sale.csv",header=TRUE)
#记录完整数据个数
sum(complete.cases(saledata))
#记录不完整数据个数
sum(!complete.cases(saledata))
结果:说明有200个完整的数据和一个不完整的数据
#输出不完整数据占样本总量的大小
mean(!complete.cases(saledata))
#提取不完整所在的行
saledata[!complete.cases(saledata),]
# 异常值检测箱线图
sp <- boxplot(saledata$"销量", boxwex = 0.7)
title("销量异常值检测箱线图")
xi <- 1.1
#标准方差公式
sd.s <- sd(saledata[complete.cases(saledata), ]$"销量")
#中位数公式
mn.s <- mean(saledata[complete.cases(saledata), ]$"销量")
points(xi, mn.s, col = "red", pch = 18)
arrows(xi, mn.s - sd.s, xi, mn.s + sd.s, code = 3, col = "pink", angle = 75, length = .1)
text(rep(c(1.05, 1.05, 0.95, 0.95), length = length(sp$out)),
labels = sp$out[order(sp$out)], sp$out[order(sp$out)] +
rep(c(150, -150, 150, -150), length = length(sp$out)), col = "red")
可以看到在箱型图中超过上下界的8个销售额数值可能为异常值