↑↓ 选择 · ↵ 打开 · 共索引 374 篇

    如何判断一些数据是否造假呢?本福特定律

    如何判断一些数据是否造假呢?本福特定律

    ARCHIVE 这篇写于 2019 年,距今 6 年多了。里面的版本、链接和做法可能都已经过时,看的时候留个心眼。

    如何判断一些数据是否造假呢?

    有一个有趣的方法叫做本福特定律。

    在自然生活中有许多数据,例如各个国家的人口、GDP、国土面积,甚至是视频网站的播放量、元素的半衰期等,这些数据的首位数可能是 1、2、3、4、5、6、7、8、9,通常人们会以为每个数字打头的概率都相同,都是1~9,但实际上,科学家本福特等人发现:数字 1 打头的概率超过 30%。

    如果一组数据不满足本福特定律,那很有可能是因为人为修改而得来的假数据。

    例如有人曾经对 XX 公司的财报进行统计,发现不满足本福特定律。

    自然界为什么会有这么神奇的定律呢?接下来我们就来看一看吧。

    什么叫本福特定律?

    本福特定律(Benford’s law),说明一堆从实际生活得出的数据中,以 1 为首位数字的数的出现概率约为总数的三成,接近直觉得出之期望值 1/9 的 3 倍。推广来说,越大的数,以它为首几位的数出现的概率就越低。它可用于检查各种数据是否有造假。

    (摘录自维基百科)

    数学上的定义

    本福特定律说明在b进位制中,以数n起头的数出现的概率为 logb(n+1)−logb(n)。本福特定律不但适用于个位数字,连多位的数也可用。

    应用

    1972 年,Hal Varian 提出这个定律来用作检查支持某些公共计划的经济数据有否欺瞒之处。1992 年,Mark J. Nigrini 便在其博士论文 “The Detection of Income Tax Evasion Through an Analysis of Digital Frequencies."(Ph.D. thesis. Cincinnati, OH: University of Cincinnati, 1992.)提出以它检查是否有伪帐。

    推而广之,它能用于在会计、金融甚至选举中出现的数据。该定律被华盛顿邮报上的一篇文章引用,该文章以此为基础声称 2009 年伊朗总统大选中有造假。

    数据

    1. 李永乐老师的视频播放量:78/266=29.3%
    2. 国家地区人口:67/235=28.5%
    3. GDP :60/197=30.5%
    4. 国土面积:59/216=27.3%
    5. 斐波那契数列(前):45/154=29.2%
    6. 放射性元素的半衰期。

    证明

    本福特定律,不是严格的定律。

    1. 增长量正比于存量。

    Go 夜读数据 - 实践分析

    接下来,我们就以 Go 夜读每一期在 YouTube 和 Bilibili 还是那个的播放量为例来分析一下吧。

    数据来自于 2019-11-17 17:00:00 左右,后面几期的数据来源于 2019-12-15(仅供参考)。

    期数 名称 YouTube 播放量 Bilibili 播放量
    71 go-ini 配置库评析 80 422
    70 Go 中不常注意的各种细节集锦 260 924
    69 DevOps 之路 基于 Go 语言周边生态打造的行业技术中台 335 1084
    68 网络知识十全大补丸 551 2002
    67 SQL 连接池分析 244 1053
    66 #Paper Reading CSP 理解顺序进程间通信 134 467
    65 Go 原生网络模型 vs 异步 Reactor 模型 143 564
    64 深入浅出 Golang Runtime 393 1163
    63 Go 编码风格阅读与讨论 232 619
    62 Go-Micro 微服务框架 Part 1 391 1366
    61 Go Modules、Go Module Proxy 和 goproxy.cn 395 1384
    60 IPFS 星际文件系统 144 716
    59 #Paper Reading Real-world Go Concurrency Bugs 168 519
    58 What’s new in Go 1.13? 444 893
    57 sync/semaphore 源码浅析 113 449
    56 channel & select 源码分析 435 1651
    55 Go&WebAssembly 简介 158 686
    54 TiDB SQL 兼容性测试工具简介 82 287
    53 delete from map in go 115 315
    52 httprouter 简介 183 808
    51 sync/errgroup 160 481
    50 GoLand Tips & Tricks 775 1449
    49 TiDB Transaction 126 376
    48 TiDB Compiler 276 379
    47 TiDB Executor 149 475
    46 TiDB Source Code Overview 753 941
    45 goim 架构设计与源码分析 428 985
    44 Go map 源码阅读分析 289 940
    43 gomonkey 框架设计与应用实践 193 660
    42 An Introduction to Failpoint Design 257 366
    41 golint 及 golangci-lint 的介绍和使用 292 329
    40 atomic.Value 的使用和源码分析 165 372
    39 init function 使用分析 175 429
    38 kubernetes scheduler 源码阅读 211 641
    37 从 serverless 的一个设计说起 338 693
    36 k8s context 实践源码阅读 207 544
    35 context 包源码阅读 455 1294
    34 plan9 汇编入门,带你打通应用和底层 by Xargin 1124 1668
    33 Go defer 和逃逸分析 328 468
    32 etcd raft 源码阅读 1065 1534
    31 flag 包源码阅读 140 338
    30 go mod 源码阅读 part 4 70 351
    29 Go opentracing jaeger 集成及源码分析 243 436
    28 go mod 源码阅读 part 3 75 206
    27 go mod 源码阅读 part 2 98 349
    26 手把手教你基于 Github+Netlify 构建自动化持续集成的技术团队博客 225 998
    25 TSDB 引擎介绍,对比及存储细节 166 663
    24 go mod 源码阅读 part 1 292 683
    23 Drone 简单介绍和部分源码分析 319 347
    22 Go 开发工具讨论 529 861
    21 Go errors 处理及 zap 源码分析 275 492
    20 go test 及测试覆盖率 161 459
    19 如何开发一个简单高性能的http router及gorouter源码分析 314 571
    18 去中心化加密通信框架 CovenantSQL/DH-RPC的设计 198 231
    17 grpc 开发及 grpcp 的源码分析 1381 3822
    16 OpenFaas 介绍及源码分析 258 224
    15 多路复用资源池组件剖析 370 465
    14 sync.Pool 源码分析及适用场景 517 417
    13 Kubernetes 入门指南 4297 1311
    12 golang 中 goroutine 的调度 1342 1027
    11 Golang 代码质量持续检测实践 714 679
    10 http 包源码阅读 part3 246 999
    8 http 包源码阅读 part2 295 1002
    7 http 包源码阅读 part1 1615 568

    YouTube 总播放量:25520,平均播放量:425,播放量最多的是:《Kubernetes 入门指南》,4297,播放量最少的是:《go mod 源码阅读 part 4 》,70。 Bilibili 总播放量:44860,平均播放量:747,播放量最多的是:《grpc 开发及 grpcp 的源码分析》,3822,播放量最少的是:《go mod 源码阅读 part 3》,206。

    数据总期数为 60 期,其中:

    数字开头 YouTube 有多少期 占比 Bilibili 有多少期 占比
    1 23 38.3% 12 20%
    2 14 23.3% 4 6.7%
    3 8 13.3% 11 18.3
    4 5 8.3% 12 20%
    5 2 3.3% 5 8.3%
    6 0 0% 8 13.3%
    7 5 8.3% 1 1.67%
    8 2 3.3% 3 5%
    9 1 1.67% 4 6.67%

    表格看起来不直观,我将其转换为柱状图:

    从表格看出,在 Bilibili 上的播放量是不满足本福特定律的,从而我们是否也可以得知 Bilibili 存在数据造假呢?(纯粹的定律猜测,实际情况无法验证。)

    参考资料

    1. 淘宝“双11”2684亿销售额造假了吗?用本福特定律检验一下
    2. 本福特定律 - 维基百科

    茶歇驿站

    一个可以让你停下来看一看,在茶歇之余给你帮助的小站,这里的内容主要是后端技术,个人管理,团队管理,以及其他个人杂想。