造假測試工具──Benford’s law Bittermelon 苦中作樂
http://bittermelon2009.blogspot.hk/2012/07/benfords-law.html先和各位玩一個小遊戲,請到政府統計處網站,下載最新一期的《
香港統計數字一覽2012》,看看第四頁的「主要統計指標」,那裡列出了20行統計數字(即「數值」一欄),由「1」到「9」計,當中那個字頭出現的次數最多?答案如下:「1」有6次,「2」有4次,「3」有5次,「4」至「6」有0次,「7」有1次,「8」有2次,最後「9」有2次。
好了,再隨意翻閱一下那部統計數字一覽,有沒有發覺,字頭低的數值,即數值的字頭是「1」、「2」或「3」出現的次數較其他字頭多?原來這個現象存在已久!
根據ISACA的一篇文章《
Assessing Data Authenticity with Benford’s Law》所介紹,這個現象原來有以下一段故事。
於1881年,數學家Simon
Newcomb發現用過的對數表的頭幾頁特別破爛,Newcomb想信這是因為研究人員時常翻閱那幾頁所致,而那幾頁所載的,正是字頭較低的數目字,例如
「1」和「2」字頭的數字。Newcomb因此推斷字頭低的數值較字頭高的數值常用。其後他將此發現於《American Journal of
Mathematics》發表。可是,由於缺乏實證,他的文章在當時沒有被重視。
到了1938年,當時身為通用電器實驗室的物理學家Frank Benford有同樣的發現,據說他當時對Simon
Newcomb的發現並不知情。Benford相信對數表的頭幾頁特別破爛,原因不在研究人員對低字頭的數字有偏好,他相信因為大部份數字都是低字頭。為
了證實他的想法,Benford從不同而且沒有關連的數據集(Datasets)收集了兩萬多個數值來做字頭分析,當中包括河流長度,美國各州份的人口數
值,以至門牌號碼等等,之後他將結果寫成了一篇文章於Proceedings of the American Philosophical
Society發表。Benford從分析中發現,若數值是關係到一個現象或者一宗事件(例如公司的銷售),其數值以「1」、「2」或「3」為字頭的機會
較「7」、「8」或「9」大。
經過其他人的不斷努力,Benford’s Law應運而生。簡單來說,「1」字頭的出現比率最高,有30.1%,其他字頭卻很低,而且字頭愈大,出現比率愈低,詳細如下:
Digit
|
Benford’s expected frequency (%)
|
1
|
30.1
|
2
|
17.6
|
3
|
12.5
|
4
|
9.7
|
5
|
7.9
|
6
|
6.7
|
7
|
5.8
|
8
|
5.1
|
9
|
4.6
|
不過,世上不是所有數據集都能適用於Benford’s Law,例如隨機數值。另外,適用於Benford’s Law的數據集都有以下特點:
1) 數據集必需是數值。
2) 數據集內的數值必需有關連,而且與同一種現象或同一宗事件有關,例如股票市場的股票價格。
3) 數值不會有上限和下限,例如實施最低工資的地方,其工資數值就不適用了。
4) 數值必需是自然產生,而且不是發明或分配出來的,例如電話號碼就不適用了。
5) 數值最好是四位數或以上。
在實際應用方面,有人就曾經利用Benford’s Law來檢查數據或者賬目是否造假,甚至有人試過利用它來檢查2009年伊朗總統大選的選舉結果,發現有部份選區的結果有問題。
目前的兩大審計軟件ACL和IDEA均有Benford’s
Law測試功能,Auditor只要將數據集輸進就能找出異常的交易。其實我也曾經試過採用此功能於實際的審核工作中,不過發覺並不容易操作。例如要檢視
的數據集是否真的適合使用Benford’s Law,數值要怎樣再算「異常」等等。
除了
維基外,香港專欄作家
Nice Lee也曾寫過一篇關於Benford’s Law的好文章,有興趣的話,不妨按以上的連結看看。