馬聽 MySQL資料庫聯盟
很多情況下,我們會認為在一堆數據中,以 1 為首位的數字出現的機率為 1/9。
但是,實際情況卻有些差異,這就是因為有本福特定律。
本福特定律,也稱為本福特法則,在一堆從實際生活得出的數據中,以1 為首位的數字出現機率約為總數的3 成,接近直覺得出的期望值1/9 的3 倍。
通俗得說,就是越大的數,以它為首的數出現的機率就越低。
在 b 進位制中,以 n 為首位的數字出現的機率為 logb(n + 1) − logb(n)。
下表就是在十進制首位數字的出現機率(其中 d 為首位的數字,p 為出現的機率):
那麼實際工作生活中,哪些數據真的符合本福特定律呢?
場景一:MySQL的表格資料量
例如MySQL的表格資料量,如果表格夠多,那也是滿足本福特定律的。
我們可以嘗試讓某款AI工具產生SQL語句,來判斷表格資料量是否滿足這個定律。
提示詞:
透過一個SQL語句,判斷MySQL表資料量是否滿足本福特定律,查詢的是information_schema.tables,TABLE_ROWS是每張表的行數,增加顯示機率。
產生的SQL語句如下:
SELECT
LEFT(CAST(TABLE_ROWS AS CHAR), 1) AS first_digit,
COUNT(*) AS frequency,
CONCAT(ROUND((COUNT(*) / (SELECT COUNT(*) FROM information_schema.tables WHERE TABLE_TYPE = ‘BASE TABLE’ AND TABLE_ROWS > 9) * 100), 2), ‘%’) AS probability
FROM
information_schema.tables
WHERE
TABLE_TYPE = ‘BASE TABLE’ AND TABLE_ROWS > 9 — 忽略行数小于10的表
GROUP BY
first_digit
ORDER BY
first_digit;
我自己測試,發現幾個實例基本上滿足本福特定律,只是機率稍微有點偏差,大家也可以試試看。
場景二:財務數據
2001年,美國最大能源交易商安然公司突然宣布破產,同時傳出可能有財務造假的消息。
為了驗證這個傳聞,有人使用了本福特定律來分析安然公司公佈的財務報表。
比較結果顯示,在左側的圖表中,財務數據與本福特定律高度吻合。
然而,觀察右側的圖表,可以發現安然公司在2000-2001年的財務數據與本福特定律有顯著的偏差。
特別是數字1、8、9的出現頻率遠高於本福特定律的預測,而數字2、3、4、5、7的出現頻率又明顯低於預期。
這項發現為安然公司可能有財務造假行為提供了有力的證據。
場景三:商品銷量
如果朋友覺得某些網站的銷售數據造假,就可以試試,統計各種商品的銷售量,看是否符合本福特定律。
當然,人生中,一定還有很多場景滿足本福特定律,這裡就不一一細講了。