其他分享
首页 > 其他分享> > 捍卫数据真实性的卫士-本福特定律

捍卫数据真实性的卫士-本福特定律

作者:互联网

互联网内容很难分辨真伪,一旦发生一些集中性的事件,无论是吹水公众号,工作不饱和的程序员以及一些不怀好意者都喜欢蹭热度,博流量,这些人对于数据,大数据均有理解和掌握,但普遍过于 时尚 ,就事论事便缺乏跨界,他们便偶尔制造一些rumor,伪造一些数据以传播panic。

如何识别真伪呢?这里有一个简单的方法,本福特定律!

本福特定律不能发现所有情况,它只能发现一小部分,它不是万金油,然而它很有意思。


一堆自然的数字中,比如全市所有街道门牌编号,以111开头的数字和以333开头的数字哪个更多?

直觉地理解,开头为111,222,…,999的数字概率是相等的,均是19\dfrac{1}{9}91​,然而并不是这样,真实情况是,以111开头的数字出现的概率要比以其它数字开头的数字出现的概率要大很多。

现在我们知道,这是个自然真理,它叫做 本福特定律(Benford’s law):
https://zh.wikipedia.org/wiki/%E6%9C%AC%E7%A6%8F%E7%89%B9%E5%AE%9A%E5%BE%8B

本福特定律的成立基于以下的事实:

识别伪造数据

如果你不懂足球,但是还想蹭个世界杯的热度,我觉得可以在世界杯比赛在酒吧聚会的夜晚多喝点酒,少说话,这样不容易让人发现自己其实连伪球迷都不是。

同样的,如果你不懂本福特定律,千万不要伪造数据。

2001年12月,全球500强中排名第七的安然公司在股价持续下跌的情况下向法庭申请破产,并向美国证监会承认会计造假。

这就是通过本福特定律发现的,大家可以搜一下这个经典案例。

本福特定律被认为是 捍卫数据真实性的卫士!

直观地理解

虽然有悖于直觉,但是仔细想一下,还是很容易理解的,我摘录一段wiki页面的内容:

一组平均增长的数据开始时,增长得较慢,由最初的数字a\displaystyle aa增长到另一个数字a+1\displaystyle a+1a+1起首的数的时间,必然比a+1\displaystyle a+1a+1起首的数增长到a+2\displaystyle a+2a+2,需要更多时间,所以出现率就更高了。

从数数目来说,顺序从1开始数,1,2,3,…,9,从这点终结的话,所有数起首的机会似乎相同,但9之后的两位数10至19,以1起首的数又大大抛离了其他数了。而下一堆9起首的数出现之前,必然会经过一堆以2,3,4,…,8起首的数。若果这样数法有个终结点,以1起首的数的出现率一般都比9大。

类似门牌系统,全世界的街道门牌均存在1号,2号…但是很少存在9871号的,换句话说,所有街道的门牌都是从1编址的,所以所有街道均存在1号,因此理所当然开头为1的门牌号最多。这只是一个直观的理解。

那么,我们如何能证明这个神奇的law呢?

当然,我不会推荐大家去阅读 A Statistical Derivation of the Significant-Digit Law 这篇论文:
http://www.gatsby.ucl.ac.uk/~turner/TeaTalks/BenfordsLaw/stat-der.pdf
我们更希望一个定性的直观化的证明,来快速理解本福特定律背后的逻辑。

我想试试,请接着阅读。

解释意义的“证明”

下面简单 “证明” 一下这个本福特定律,之所以加引号是因为这是定性分析的,而不是严格的,这只是一篇闲来无事写的文章,所以这只是一种解释意义上的证明,而非严格的证明。

现在让我们开始。

自然数从1开始增长。作为10进制数据,自然数的数位增加是 等比尺度缩放尺度 的。简单点说就是:

这可以用指数函数很好地表示:
在这里插入图片描述
我们把这个指数函数f(x)=10xf(x)=10^xf(x)=10x理解成一个自然数生成的 均匀的 时序过程,可以很好地理解这个过程:

xxx轴分隔成[0,1)[0,1)[0,1),[1,2)[1,2)[1,2),[2,3)[2,3)[2,3),[3,4)[3,4)[3,4),…等一个个小段,就可以将f(x)f(x)f(x)分为对应的:

生成每一个自然数的过程是均匀的,也就是说,生成1,2,3,4的过程和生成1034,1035,1036,1037的过程是完全一样的。

如本福特定律所述,首位数字nnn起头的数字包括:

把上述数字的数量加起来,就是 所有以nnn开头的数字的总量

由于我们要计算 nnn开头的数字出现的概率 ,所以我们就要看f(x)=10xf(x)=10^xf(x)=10x的自变量xxx的分布。

让我们按照上述分隔的小区间分而治之,来计算生成特定nnn开头的数字时,xxx的区间总量。

以100~999这个区间为例,数字444开头的就是400,401,402,…,499,由于f(x)=10xf(x)=10^xf(x)=10x是连续单调递增的,因此我们只需要求出400=10x1400=10^{x_1}400=10x1​,499=10x2499=10^{x_2}499=10x2​中的x1x_1x1​和x2x_2x2​,然后下面的式子就是在区间[2,3)[2,3)[2,3)中,数字444开头的概率:

log10(499+1)log1040032=log10500log10400=log1054\dfrac{log_{10}(499+1)-log_{10}400}{3-2}=log_{10}500-log_{10}400=log_{10}\dfrac{5}{4}3−2log10​(499+1)−log10​400​=log10​500−log10​400=log10​45​

于是,所有这些小区间中,以nnn开头的数字出现的分布概率,分别为:

X0,1=log10(n+1)log10n10=log10n+1nX_{0,1} = \dfrac{log_{10}(n+1)-log_{10} n}{1-0}=log_{10}\dfrac{n+1}{n}X0,1​=1−0log10​(n+1)−log10​n​=log10​nn+1​

X1,2=log1010×(n+1)log1010×n21=log10n+1nX_{1,2} = \dfrac{log_{10}10\times(n+1)-log_{10} 10\times n}{2-1}=log_{10}\dfrac{n+1}{n}X1,2​=2−1log10​10×(n+1)−log10​10×n​=log10​nn+1​

X2,3=log10100×(n+1)log10100×n32=log10n+1nX_{2,3} = \dfrac{log_{10}100\times(n+1)-log_{10} 100\times n}{3-2}=log_{10}\dfrac{n+1}{n}X2,3​=3−2log10​100×(n+1)−log10​100×n​=log10​nn+1​

X3,4=log101000×(n+1)log101000×n43=log10n+1nX_{3,4} = \dfrac{log_{10}1000\times(n+1)-log_{10} 1000\times n}{4-3}=log_{10}\dfrac{n+1}{n}X3,4​=4−3log10​1000×(n+1)−log10​1000×n​=log10​nn+1​

X4,5=log1010000×(n+1)log1010000×n54=log10n+1nX_{4,5} = \dfrac{log_{10}10000\times(n+1)-log_{10} 10000\times n}{5-4}=log_{10}\dfrac{n+1}{n}X4,5​=5−4log10​10000×(n+1)−log10​10000×n​=log10​nn+1​

现在让我们算个总的,先看分子,它表示各个小区间的分布的汇总:

T=Σm=0(log1010m(n+1)log1010mn)=(m+1)log10n+1nT=\Sigma_{m=0}^{\infty}(log_{10}10^m(n+1)-log_{10} 10^mn)=(m+1)log_{10}\dfrac{n+1}{n}T=Σm=0∞​(log10​10m(n+1)−log10​10mn)=(m+1)log10​nn+1​

然后我们看分母,它是所有的m+1m+1m+1个小区间的汇总:

S=Σm=01=m+1S=\Sigma_{m=0}^{\infty}1=m+1S=Σm=0∞​1=m+1

总体上,nnn开头的数字的概率为:

P=TS=log10n+1nP=\dfrac{T}{S}=log_{10}\dfrac{n+1}{n}P=ST​=log10​nn+1​

这就是 本福特定律 的证明了!


好了,

浙江温州皮鞋湿,下雨进水不会胖!(希望温州早日复工复产,温州加油!)

dog250 博客专家 发布了1556 篇原创文章 · 获赞 4842 · 访问量 1077万+ 他的留言板 关注

标签:10,log,卫士,dfrac,真实性,捍卫,100,log10,数字
来源: https://blog.csdn.net/dog250/article/details/104173127