Benford Yasası ile basamak analizi

R ile Dolandırıcılık Tespiti

Bart Baesens

Professor Data Science at KU Leuven

Giriş

  • Rastgele bir sayfadan bir gazete al ve tüm sayılardaki ilk ya da en soldaki basamağı (1,2,...,9) not et.
  • Bu basamakların beklenen frekansları nedir?

gazete

R ile Dolandırıcılık Tespiti

Giriş

  • Rastgele bir sayfadan bir gazete al ve tüm sayılardaki ilk ya da en soldaki basamağı (1,2,...,9) not et.
  • Bu basamakların beklenen frekansları nedir?
  • Doğal tahmin yaklaşık 1/9 = %11 olur.

barplotrnd

R ile Dolandırıcılık Tespiti

Giriş

  • Rastgele bir sayfadan bir gazete al ve tüm sayılardaki ilk ya da en soldaki basamağı (1,2,...,9) not et.
  • Bu basamakların beklenen frekansları nedir?
  • Doğal tahmin yaklaşık 1/9 olur.
  • Benford yasası: beklenen frekanslar
    • basamak 1 $\approx$ %30
    • basamak 9 $\approx$ %4.6

barplotbf

R ile Dolandırıcılık Tespiti

Newcomb ve Benford

  • "On basamağın eşit sıklıkta görülmediği, logaritma tablolarını çok kullanan ve ilk sayfaların son sayfalardan daha hızlı yıprandığını fark eden herkes için aşikârdır." (Newcomb, 1881)
  • Benford, 20 farklı veri kümesindeki sayıların ilk basamağını inceledi.

newben

R ile Dolandırıcılık Tespiti

İlk basamak için Benford yasası

Bir veri kümesi, ilk basamak için Benford Yasası'nı sağlıyorsa, ilk basamak $D_1$'ın $d_1$'e eşit olma olasılığı yaklaşık olarak: $$P(D_1=d_1)=\log(d_1+1)-\log(d_1)=\log\left(1+\frac{1}{d_1}\right) \qquad d_1=1,\ldots,9$$

  • Örnekler

    • $P(D_1=1)=\log\left(1+\frac{1}{1}\right)=\log(2)=0.3010300$
    • $P(D_1=2)=\log\left(1+\frac{1}{2}\right)=\log(1.5)=0.1760913$
    • $P(D_1=9)=\log\left(1+\frac{1}{9}\right)=\log(1.111111)=0.04575749$
  • Pinkham, Benford yasasının ölçeklemeye göre değişmez olduğunu keşfetti.

R ile Dolandırıcılık Tespiti

İlk basamak için Benford yasası

benlaw <- function(d) log10(1 + 1 / d)
benlaw(1)
0.30103

barplotbf

R ile Dolandırıcılık Tespiti

İlk 1000 Fibonacci sayısını üretiyoruz.

fibnum <- numeric(1000)
fibnum[1] <- fibnum[2] <- 1
for (i in 3:1000) { fibnum[i] <- fibnum[i-1] + fibnum[i-2] } 
head(fibnum)
1 1 2 3 5 8

Ayrıca 2'nin ilk 1000 kuvvetini üretiyoruz.

pow2 <- 2^(1:1000)
head(pow2)
2 4 8 16 32 64
R ile Dolandırıcılık Tespiti

benford.analysis paketindeki `benford` fonksiyonu

library(benford.analysis)
bfd.fib <- benford(fibnum,
                   number.of.digits = 1)
plot(bfd.fib)

fibonacci

library(benford.analysis)
bfd.pow2 <- benford(pow2,
                    number.of.digits = 1)
plot(bfd.pow2)

pow2

R ile Dolandırıcılık Tespiti

Hadi pratik yapalım!

R ile Dolandırıcılık Tespiti

Preparing Video For Download...