什么是异常值
异常值简单来说就是偏离数据集整体的值。在统计学意义上,如果一个值偏离整体,那么就会影响其正态分布,进而影响需要以正态分布为前提的统计模型(如线性回归、方差分析)的结果准确度。
检验异常值的方法
原则
检验异常值的方法通常基于 原则(拉依达准则法)。即将超过3个标准差的数值视为异常值。一个变量整体如果正态分布,那么变量组成部分在 分布的概率为99.7%。超过3个标准差的概率为 ,属于小概率事件。
箱线图
箱线图(
)是一种利用数据中的五个统计量:最小值(
)、第一四分位数(
)、中位数(
)、第三四分位数(
)和最大值(
)来描述数据的一种方法。它可以简单地看出数据是否对称、分布的分散程度,还可以用于对多个样本进行比较。
检验异常值最直观的方法就是用箱线图进行可视化(也称
法)。它以四分位距(
)的1.5倍为标准,规定:超过上四分位+1.5倍
距离或下四分位-1.5倍
距离的点为异常点。
示例
#设置种子
set.seed(1234)
#生成200个服从N(0,1)的随机数
x <- rnorm(200)
#使用boxplot.stats函数查看统计。
#结果依次返回箱线图相关5个统计值、非缺失值个数、95%置信区间、异常值
boxplot.stats(x)
$stats
[1] -2.7322195 -0.7748037 -0.1718906 0.5565266 2.5489911
$n
[1] 200
$conf
[1] -0.32063066 -0.02315059
$out
[1] 3.043766 -2.855759
#绘制箱线图
boxplot(x)
从图中可以看出存在两个
,这两个
即是异常值。
set.seed函数功能是设置种子,方便结果的复现。如果不设置种子,x<-rnorm(200)生成的随机数每次会不一样,不利于结果重现。
R语言中,异常值的检测除了箱线图还有局部异常因子法(LOF法)、聚类分析方法、时间序列数据异常值检测、稳健马氏距离检测。本文为入门教程,不提。
异常值的处理
异常值的处理通常为:
- 删除包含异常值的个案(行变量)
- 将异常值按缺失值方法处理
- 不处理