Benford's Law से अंक विश्लेषण

R में Fraud Detection

Bart Baesens

Professor Data Science at KU Leuven

परिचय

  • अख़बार के किसी रैंडम पेज पर जाएँ और सभी संख्याओं का पहला/सबसे बायाँ अंक (1,2,...,9) लिखें.
  • इन अंकों की अपेक्षित आवृत्तियाँ क्या होंगी?

अख़बार

R में Fraud Detection

परिचय

  • अख़बार के किसी रैंडम पेज पर जाएँ और सभी संख्याओं का पहला/सबसे बायाँ अंक (1,2,...,9) लिखें.
  • इन अंकों की अपेक्षित आवृत्तियाँ क्या होंगी?
  • सामान्य अनुमान होगा लगभग 1/9 = 11%

बारप्लॉट (रैंडम)

R में Fraud Detection

परिचय

  • अख़बार के किसी रैंडम पेज पर जाएँ और सभी संख्याओं का पहला/सबसे बायाँ अंक (1,2,...,9) लिखें.
  • इन अंकों की अपेक्षित आवृत्तियाँ क्या होंगी?
  • सामान्य अनुमान होगा लगभग 1/9
  • Benford's law: अपेक्षित आवृत्तियाँ
    • अंक 1 $\approx$ 30%
    • अंक 9 $\approx$ 4.6%

बारप्लॉट (Benford)

R में Fraud Detection

Newcomb और Benford

  • "लॉगैरिथमिक टेबल का अधिक उपयोग करने वाला कोई भी व्यक्ति यह स्पष्ट रूप से देखेगा कि दसों अंक समान आवृत्ति से नहीं आते, क्योंकि शुरुआती पन्ने आखिरी पन्नों से कहीं जल्दी घिस जाते हैं." (Newcomb, 1881)
  • Benford ने 20 अलग-अलग डेटासेट्स में संख्याओं के पहले अंकों का अध्ययन किया.

Newcomb और Benford

R में Fraud Detection

पहले अंक के लिए Benford's law

किसी डेटासेट में पहले अंक के लिए Benford's Law तब संतुष्ट होता है जब पहले अंक $D_1$ के $d_1$ होने की प्रायिकता लगभग यह हो: $$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$$

  • उदाहरण

    • $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's law स्केल बदलने पर अपरिवर्तित रहता है.

R में Fraud Detection

पहले अंक के लिए Benford's law

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

बारप्लॉट (Benford)

R में Fraud Detection

हम पहले 1000 Fibonacci numbers बनाते हैं.

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

हम 2 की पहली 1000 घातें भी बनाते हैं.

pow2 <- 2^(1:1000)
head(pow2)
2 4 8 16 32 64
R में Fraud Detection

पैकेज benford.anaysis का `benford` फंक्शन

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

फिबोनाची

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

2 की घातें

R में Fraud Detection

अभ्यास करते हैं!

R में Fraud Detection

Preparing Video For Download...