惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
GbyAI
GbyAI
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
A
About on SuperTechFans
M
MIT News - Artificial intelligence
宝玉的分享
宝玉的分享
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
Google DeepMind News
Google DeepMind News
博客园 - Franky
B
Blog RSS Feed
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
用本福特定律演习疫情数据:一起来 Code Review - 少数派
2020-01-26 · via 少数派

前段时间双十一的数据被网传造假,李永乐老师就科普了一期用 本福特定律 来简单数据校验。具体的科普验证方式点击教程链接。

最近一直关注着武汉肺炎的疫情数据,闲来无事就想拿这些数据做点本福特定律的实操。(加上很久没写 JavaScript 了,练练手)。

什么是本福特定律

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

自然生活中有许多数据,例如各个国家的人口、GDP、国土面积,视频网站的播放量、元素的半衰期等自然界的数据,以 1 为首的数字出现概率约为30%:

  • 李永乐老师的视频播放量:29.3%
  • 国家地区人口:28.5%
  • GDP:30.5%
  • 国土面积:27.3%
  • 斐波那契数 29.2%

实操

提取数据

丁香园新型冠状病毒肺炎疫情实时动态 提取数据(截止北京时间1-26 11:27):每个县市提交的数据是应该是相对独立的,肉眼观察数据的跨度从一位数到三位数不等。但省份的数据是根据县市累加的数值,就不计算在样本里。

通过观察 html 的结构得知县市的疫情确诊数据都属于 .areaBlock2___27vn7 .subBlock2___E7-fW CSS 类名下,用 querySelectorAll 获取所有 DOM 节点数据,提取数字。

拿到数据之后简单对比一下提取出来的数据有没有明显出错。正确的话进行下一步操作。

计算以 N 为首位数字的概率

统计以N首位的数字个数
计算概率

完整代码如下:

var data = document.querySelectorAll('.areaBlock2___27vn7 .subBlock2___E7-fW')
var array = []
var result = {} 
data.forEach(x => array.push(x.innerText))
// 以下几个省因为没有细分县市区导致有遗漏:上海、天津、香港、澳门、台湾,影响不大,也可以手动塞进去
// 我在这里就没有插入了
// array.push(...['40', '13', '5', '5', '3'])
result = array.reduce((prev, i) => (prev[i[0]]++ || (prev[i[0]] = 1), prev), {});
Object.keys(result).map(i => result[i]/array.length)

表格计算/绘制图表

最后拿到9个数字的概率,和本福特定律进行比较。在Google 表格(一般的 Excel 软件也带这类函数、绘图表功能)里绘制图表并进行计算一些方差值。

⬅️左:插入图表 | ➡️右:插入函数计算
蓝线:本福特定律 | 红线:疫情确诊数据

A:以 N 为首位数字

B:本福特定律的概率

C:疫情确诊数据得出的概率

D:B-C 之间的差值绝对值

最后通过图表数据可以看到两条线基本倾向大致一致,以1为首位的数字概率相差幅度最大, 0.064。因为对数据分析没什么研究,权当抛砖引玉。 

欢迎指正 JavaScript 代码~