R 的詐欺偵測
Bart Baesens
Professor Data Science at KU Leuven
最好包含「超過 1000」個數字,且跨越「多個數量級」。
請注意,資料有時就是不符合 Benford 定律。
若資料集對「前兩位數」符合 Benford 定律,則首兩位數 $D_1D_2$ 等於 $d_1d_2$ 的機率近似為:
$$P(D_1D_2=d_1d_2)=\log\left(1+\frac{1}{d_1d_2}\right) \qquad d_1d_2\in [10, 11, ..., 98, 99]$$
benlaw <- function(d) log10(1 + 1 / d)
benlaw(12)
0.03476211
此檢驗比只看首位數更可靠,且最常用於舞弊偵測。
bfd.cen <- benford(census.2009$pop.2009, number.of.digits = 2)
plot(bfd.cen)

expenses 含 1000 筆報銷。benford.analysis 中的函式。bfd1.exp <- benford(expenses, number.of.digits = 1)
plot(bfd1.exp)

bfd2.exp <- benford(expenses, number.of.digits = 2)
plot(bfd2.exp)

R 的詐欺偵測