作者:小伍哥
來源:小伍哥聊風控
大家好,我是小伍哥,今天給大家分享一個好像有用,好像又沒啥用的奇奇怪怪的知識,風控嘛,就是玩兒。
〇、“本福特定律”是什麼?
“本福特定律”(Benford's law),也稱“本福特法則”,它說明一堆從實際生活得出的數據中,以1為首位數字的數(如12、135、1083首位數字均為1)的出現概率約為總數的三成,接近人們主觀直覺得出的期望值1/9的3倍。
推廣來說,越大的數,以它為首位數字甚至是首幾位數字出現的概率就越低。在十進制首位數字的出現概率中,1最高(30.1%),逐漸遞減,9最低(4.6%)。
在美國大選中,有人就使用了該定律質疑拜登選票異常,在統計了特朗普和拜登在威斯康星州密爾沃基縣470多個選區的得票數首位數字後發現,特朗普的這一曲線較為符合“本福特定律”的曲線,而拜登的曲線形狀則出現異常。拜登在包括威斯康星州密爾沃基、伊利諾伊州芝加哥和賓夕法尼亞州阿勒格尼的曲線均不滿足“本福特定律”,而與此同時,特朗普在多個地區的曲線卻又正好滿足或基本滿足該定律。
一、基本概念
本福特定律(也稱為第一位數法或本福特分布)是一種概率分布,許多統計學的(但不是全部)數據集的第一個數字符合。例如,
15435 首位是 1
56 首位是 5
9001 首位是 9
199 首位是 1
9 首位是 9
本福特定律通常可用作欺詐性數據的指标,并可協助審計會計數據。本福特的分布是一種不均勻的分布,較小的數字比較大的數字有更大的出現j可能。
二、數位分布概率第1位數字出現概率10.30120.17630.12540.09750.07960.06770.05880.05190.046三、本福特分布圖四、本福特分布公式
六、本福特定律适用于哪類數據?
需要注意的是,“本福特定律”也有一定的使用條件。首先,數據樣本需要盡可能的多,至少要在3000個以上;其次,數據樣本跨度要大,比如人的身高就不滿足“本福特定律”,因為大多數人身高在1米至2米這一區間;最後,數據樣本應是自然的,不能有人為操控,例如手機号碼和郵政編碼不滿足“本福特定律”,因為這些都是1開頭或特定數字開頭。
也正是因為有特定使用條件,“本福特定律”可用于檢查各項數據是否存在造假行為,因為若有人為因素影響數據,所得首位數字的概率及概率曲線圖将不符合“本福特定律”。
在大部分情況下,本福特定律可以适用于具有以下特征的數據:
雖然有以上的限制,但實際上在會計中,符合上述特征的數據非常普遍。
七、會計欺詐檢測與取證分析應收賬款,應付賬款,銷售和費用數據均基于兩種類型的變量相乘的值,即價格和數量。單獨,價格和數量不太可能符合本福特定律,但很可能會成倍增加。這種會計數據也可能是正确的。大公司的交易級會計數據幾乎總是會有大量的觀察結果。
如果某些會計數據預計符合本福特定律但不符合,則并不一定意味着數據是欺詐性的。然而,這将為進一步調查提供充分的理由。
以下是如何對會計數據執行本福特分布分析的一些示例。
1)大型企業的應付賬款數據
分析顯示,大型企業的應付幾款的數據的數字第一位數字中有很大比例的1。經過仔細檢查後發現,與上一個會計期間相比,還有更多的支付支票略高于1000美元。前一期的大部分支票金額低于100美元。
在一起财務調查中,負責的财務官随後受到質疑,他們回答稱他們決定彙總金額以試圖減少支票。低數字金額的合并是偏離本福特定律的常見解釋,使财務官的解釋變得合情合理。
經過進一步調查,據透露,該官員正在向他們創建的虛假殼公司寫支票。
2)本福特的分析應用于組織的費用數據
最初的本福特分析顯示,數據的第一位數字中“非常大”的比例非常大。經過仔細檢查,特定費用的許多條目達到45美元。發現費用對于運營組織至關重要,必須經常支付。調查了這筆特殊費用,然後被認為是合法的。
然後将Benford的分析應用于費用數據的副本,但省略了特定的頻繁費用。發現排除該特定費用的數據與本福特的分布非常接近。
超越第一個數字推廣本福特定律通過查看第一個數字以外的數字,可以增強Benford的分析。
八、廣義本福特的分布表本表的作用是表示分布規則還可以作用在不同的數位上。比如,0出現在第2位的概率是 11.97%,要高于平均值10%。
數位 |
第1位 |
第2位 |
第3位 |
第4位 |
第5位 |
0 |
NA |
0.11968 |
0.10178 |
0.10018 |
0.10002 |
1 |
0.30103 |
0.11389 |
0.10138 |
0.10014 |
0.10001 |
2 |
0.17609 |
0.10882 |
0.10097 |
0.1001 |
0.10001 |
3 |
0.12494 |
0.10433 |
0.10057 |
0.10006 |
0.10001 |
4 |
0.09691 |
0.10031 |
0.10018 |
0.10002 |
0.1 |
5 |
0.07918 |
0.09668 |
0.09979 |
0.09998 |
0.1 |
6 |
0.06695 |
0.09337 |
0.0994 |
0.09994 |
0.09999 |
7 |
0.05799 |
0.09035 |
0.09902 |
0.0999 |
0.09999 |
8 |
0.05115 |
0.08757 |
0.09864 |
0.09986 |
0.09999 |
9 |
0.04576 |
0.085 |
0.09827 |
0.09982 |
0.09998 |
注意:由以上數據可以看出,在廣義分布中,數字的出現概率要比第一個數字更加均勻。
九、一般分布公式根據上面的數據,我們可以得到一般的分布公式
十、上市公司年報淨利潤數據驗證本福特定律
我們用上市公司的利潤數據來驗證下本福特定律。
我們采用tushare接口獲取2019、2020年年報(第4季度)數據,取其中的淨利潤數據,然後我們隻考慮淨利潤為正的情況。
xxxxxxxxxxbr
# 驗證本福特定律
import tushare as ts # 股票數據獲取的一個包
import math
import matplotlib.pyplot as plt
import pandas as pd
from functools import reduce
from pylab import *
# 這一句讓pyplot支持中文顯示
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 獲取首位的函數
def firstDigital(x):
x= round(x)
while x >= 10:
x //= 10
return x
# 首位概率累加
def addDigit(lst, digit):
lst[digit-1] =1
return lst
# 理論值:每位概率理論值用于對比
th_freq=[math.log((x 1)/x, 10) for x in range(1,10)]
#分别獲得2019,2020年報數據
df= ts.get_report_data(2019, 4)
# 隻取淨利潤>0的數據,首先進行次數統計
freq= reduce(addDigit, map(firstDigital, filter(lambda x:x>0, df['net_profits'])), [0]*9)
# 再計算實際概率
pr_freq= [x/sum(freq) for x in freq]
print(th_freq)
print(pr_freq)
# 作圖
plt.title('用上市公司2019年報淨利潤數據驗證本福特定律')
plt.xlabel("首位數字")
plt.ylabel("概率")
plt.xticks(range(9), range(1,10))
plt.plot(pr_freq,"r-",linewidth=2, label= '實際值')
plt.plot(pr_freq, "go", markersize=5)
plt.plot(th_freq,"b-",linewidth=1, label= '理論值')
plt.grid(True)
plt.legend()
plt.show()
xxxxxxxxxxbr# 驗證本福特定律brimport tushare as ts # 股票數據獲取的一個包brimport mathbrimport matplotlib.pyplot as pltbrimport pandas as pdbrfrom functools import reducebrfrom pylab import *br# 這一句讓pyplot支持中文顯示brmpl.rcParams['font.sans-serif'] = ['SimHei']br# 獲取首位的函數brdef firstDigital(x):br x= round(x)br while x >= 10:br x //= 10br return xbr# 首位概率累加brdef addDigit(lst, digit):br lst[digit-1] =1br return lstbr# 理論值:每位概率理論值用于對比brth_freq=[math.log((x 1)/x, 10) for x in range(1,10)]br#分别獲得2019,2020年報數據brdf= ts.get_report_data(2019, 4)br# 隻取淨利潤>0的數據,首先進行次數統計brfreq= reduce(addDigit, map(firstDigital, filter(lambda x:x>0, df['net_profits'])), [0]*9)br# 再計算實際概率brpr_freq= [x/sum(freq) for x in freq]brprint(th_freq)brprint(pr_freq)br# 作圖brplt.title('用上市公司2019年報淨利潤數據驗證本福特定律')brplt.xlabel("首位數字")brplt.ylabel("概率")brplt.xticks(range(9), range(1,10))brplt.plot(pr_freq,"r-",linewidth=2, label= '實際值')brplt.plot(pr_freq, "go", markersize=5)brplt.plot(th_freq,"b-",linewidth=1, label= '理論值')brplt.grid(True)brplt.legend()brplt.show()
xxxxxxxxxxbrbr
從圖形上看,兩者拟合度還是比較高的。據說有些上市公司數據造假就是被用本福特定律查出來的。所以不認真學習的話,造假都造不好。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!