【翻译】本福特定律和统计中的造假检测

英文原文地址:Benford’s Law and Accounting Fraud Detection

本福特定律

基本概念

本福特定律(也称为第一位数法或本福特分布)是一种概率分布,许多统计学的(但不是全部)数据集的第一个数字符合。 例如,

15435 是1
56    是5
9001  是9
199   是1
9     是9

本福特定律通常可用作欺诈性数据的指标,并可协助审计会计数据。本福特的分布是一种不均匀的分布,较小的数字比较大的数字有更大的出现j可能。

数位分布概率

第1位数字出现概率
10.301
20.176
30.125
40.097
50.079
60.067
70.058
80.051
90.046

本福特分布图

在这里插入图片描述

本福特分布公式

P ( d ) = l o g 10 ( d + 1 ) − l o g 10 d = l o g 10 ( 1 + 1 d ) P(d) = log_{10}(d + 1)-log_{10}d = log_{10}(1 + \frac{1}{d}) P(d)=log10(d+1)log10d=log10(1+d1)

本福特定律适用于哪类数据?

在大部分情况下,本福特定律可以适用于具有以下特征的数据:

  • 具有通过来自多个分布的数字的数学组合形成的值的数据。
  • 具有多种数字的数据,例如 具有数百,数千,数万等数值的数据。
  • 数据集相当大。
  • 数据是右倾斜的,即平均值大于中值,并且分布具有长的右尾而不是对称的。
  • 数据没有预定义的最大值或最小值(最小值为零)。

虽然有以上的限制,但实际上在会计中,符合上述特征的数据非常普遍。

会计欺诈检测与取证分析

应收账款,应付账款,销售和费用数据均基于两种类型的变量相乘的值,即价格和数量。 单独,价格和数量不太可能符合本福特定律,但很可能会成倍增加。 这种会计数据也可能是正确的。 大公司的交易级会计数据几乎总是会有大量的观察结果。

如果某些会计数据预计符合本福特定律但不符合,则并不一定意味着数据是欺诈性的。 然而,这将为进一步调查提供充分的理由。

以下是如何对会计数据执行本福特分布分析的一些示例。

示例1 大型企业的应付账款数据

分析显示,大型企业的应付几款的数据的数字第一位数字中有很大比例的1。经过仔细检查后发现,与上一个会计期间相比,还有更多的支付支票略高于1000美元。前一期的大部分支票金额低于100美元。

在一起财务调查中,负责的财务官随后受到质疑,他们回答称他们决定汇总金额以试图减少支票。低数字金额的合并是偏离本福特定律的常见解释,使财务官的解释变得合情合理。

经过进一步调查,据透露,该官员正在向他们创建的虚假壳公司写支票。

示例2:本福特的分析应用于组织的费用数据。

最初的本福特分析显示,数据的第一位数字中“非常大”的比例非常大。经过仔细检查,特定费用的许多条目达到45美元。发现费用对于运营组织至关重要,必须经常支付。调查了这笔特殊费用,然后被认为是合法的。

然后将Benford的分析应用于费用数据的副本,但省略了特定的频繁费用。发现排除该特定费用的数据与本福特的分布非常接近。

超越第一个数字推广本福特定律

通过查看第一个数字以外的数字,可以增强Benford的分析。

广义本福特的分布表

译者:本表的作用是表示分布规则还可以作用在不同的数位上。比如,0出现在第2位的概率是 11.97%,要高于平均值10%。

数位第1位第2位第3位第4位第5位
0NA0.119680.101780.100180.10002
10.301030.113890.101380.100140.10001
20.176090.108820.100970.100100.10001
30.124940.104330.100570.100060.10001
40.096910.100310.100180.100020.10000
50.079180.096680.099790.099980.10000
60.066950.093370.099400.099940.09999
70.057990.090350.099020.099900.09999
80.051150.087570.098640.099860.09999
90.045760.085000.098270.099820.09998

注意:由以上数据可以看出,在广义分布中,数字的出现概率要比第一个数字更加均匀。

一般分布公式

P ( d ) = ∑ k = 1 0 n − 2 1 0 n − 1 − 1 l o g 10 ( 1 + 1 10 k + d ) P(d)=\sum_{k=10^{n-2}}^{10^{n-1} - 1}log_{10}(1 + \frac{1}{10k+d}) P(d)=k=10n210n11log10(1+10k+d1)

Python中,验证数据是否符合本福特定律可以通过计算每个数字1到9作为首位数字的频率,并与理论频率(通常是1/3, 2/3, 1/4, 3/4, 1/5, 2/5, ...)进行对比来进行。以下是一个简单的步骤: 1. 首先,你需要整理数据并删除所有首位为0的值,因为根据本福特定律,首位不是0的数字才参与计算。 ```python import collections def benford_law(data): data = [int(d) for d in str(data).split()] first_digits = [d for d in data if d > 0] return first_digits ``` 2. 然后,计算实际频次: ```python def calculate_frequencies(first_digits): freqs = collections.Counter(first_digits) return {digit: freqs[digit] / len(first_digits) for digit in range(1, 10)} data = ... # 这里输入你要检查的数据 first_digit_freqs = calculate_frequencies(benford_law(data)) ``` 3. 比较实际频次与理论频次: ```python from scipy import stats expected_freqs = [1/10, 2/9, 3/8, 4/7, 5/6, 6/5, 7/4, 8/3, 9/2] chi_square_statistic, p_value = stats.chisquare(first_digit_freqs.values(), expected_freqs) if p_value > 0.05: # 设置显著性水平,如0.05代表p值大于0.05,则认为数据符合本福特定律 print("数据符合本福特定律") else: print("数据不符合本福特定律") ``` 在这里,`chi_square_statistic`是用来衡量差异程度的卡方统计量,`p_value`则是对应的P值,如果P值大于设定的显著性水平,那么我们可以接受数据符合本福特定律的假设。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值