检测单变量离群值

R 中的欺诈检测

Tim Verdonck

Professor Data Science at KU Leuven

离群值

离群值是偏离大多数数据模式的观测。 离群鱼 离群值可能预示欺诈。

R 中的欺诈检测

离群检测

  • 一种常用的离群检测方法:

    • 计算每个观测的z 分数
    • 若其 z 分数的绝对值大于 3,则标记为离群
  • 观测 $x_i$ 的z 分数 $z_i$ 计算为:

$$z_i=\frac{x_i-\hat{\mu}}{\hat{\sigma}} = \frac{x_i-\overline{x}}{s}$$

  • $\overline{x}$ 为样本均值:$\overline{x}=\frac{1}{n}\sum_i x_i$
  • $s$ 为样本标准差:$s= \sqrt{\frac{1}{n-1}\sum_i(x_i-\hat{\mu})^2}$
R 中的欺诈检测

数据集 loginc 为 10 人的月收入(取对数):

loginc: 7.876 7.681 7.628  ...  7.764 9.912 # <-- 最后一个明显是离群值!
  • (1) 计算每个观测的z 分数
Mean <- mean(loginc)
Sd <- sd(loginc)
zscore <- (loginc - Mean) / Sd
  • (2) 检查 z 分数绝对值是否大于 3
abs(zscore) > 3
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  • 用这些 z 分数未识别到离群值!
R 中的欺诈检测

稳健统计

  • 经典统计方法依赖(正态性)假设,单个离群值也会显著影响结论并导致误判。
  • 稳健统计在含有离群值时也能给出可靠结果,并提供自动离群检测工具。
  • "常规结合稳健方法是理想做法,只有当二者差异足以影响结论时再担忧……但当它们不同,你应认真思考。"——J.W. Tukey(1979)
R 中的欺诈检测

位置估计量:均值与中位数

样本均值: $$\overline{x}=\frac{1}{n}\sum_i x_i$$

mean(loginc)

mean(loginc9)
7.986447

7.772392

loginc9 与 loginc 相同,但不含离群值。

将 $n$ 个观测从小到大排序,样本中位数 $Med(X_n)$ 为第 $(n+1)/2$ 个(若 $n$ 为奇数),或第 $n/2$ 与第 $n/2+1$ 个的平均(若 $n$ 为偶数)。

median(loginc)
7.816658
median(loginc9)
7.764296
R 中的欺诈检测

尺度估计量:sd

(1) 样本标准差: $$s= \sqrt{\frac{1}{n-1}\sum_i (x_i-\hat{\mu})^2}$$

sd(loginc)
0.6976615
sd(loginc9)
0.1791729
R 中的欺诈检测

尺度估计量:mad、IQR

(2) 中位绝对偏差: $$Mad(X_n)=1.4826Med(|x_i-Med(X_n)|)$$

(3) 四分位距(标准化): $$IQR(X_n)= IQR = 0.7413(Q_3-Q_1)$$ 其中 $Q_1$ 和 $Q_3$ 为第一、第三四分位数

IQR(loginc)/1.349
0.2056784
mad(loginc)
0.2396159
mad(loginc9)
0.201305
IQR(loginc9)/1.349
0.1839295
R 中的欺诈检测

用于离群检测的稳健 z 分数

代入稳健估计量计算稳健 z 分数:

$$z_i=\frac{x_i-\hat{\mu}}{\hat{\sigma}} =\frac{x_i-Med(X_n)}{Mad(X_n)}$$

robzscore <- (loginc - median(loginc)) / mad(loginc)

abs(robzscore) > 3 ## 检查离群值
FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
robzscore[10] ## 该离群值的稳健 z 分数
8.748523
R 中的欺诈检测

箱线图

  • Tukey 箱线图也是常用的离群检测工具
  • 若观测落在围栏之外,则标记为离群 $$[Q_1-1.5IQR; Q_3+1.5IQR]$$

箱线图说明

R 中的欺诈检测

示例:住院天数(LOS)

boxplot(los, col = "blue", ylab = "Lenght of Stay (LOS)")$out
59  33  42  67  35  47 102  36  27  31  27  30  29  32  37  27  38

LOS 箱线图(ggplot)

R 中的欺诈检测

校正箱线图

  • 在偏态分布中,箱线图可能将许多常规点标为离群。
  • 偏度校正箱线图使用稳健偏度来确定围栏,从而校正该问题(Hubert 和 Vandervieren,2008)

卡方分布箱线图

R 中的欺诈检测

LOS 示例:校正箱线图

按校正箱线图判定的离群值:

library(robustbase)
adjbox(los)$out
59  67 102

由校正箱线图计算的统计量:

adjboxStats(los)$stats
2  4  8 13 47
R 中的欺诈检测

LOS 示例:箱线图 vs 校正箱线图

LOS_箱线图

LOS_校正箱线图

R 中的欺诈检测

开始练习吧!

R 中的欺诈检测

Preparing Video For Download...