使用本德福德定律测试数据集的库
项目描述
用于 Python 的本福德
引用
如果您发现Benford_py在您的研究中有用,请考虑添加以下引用:
@misc{benford_py,
author = {Marcel, Milcent},
title = {{Benford_py: a Python Implementation of Benford's Law Tests}},
year = {2017},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/milcent/benford_py}},
}
current version = 0.5.0
有关此版本和旧版本中的功能,请参阅发行说明
Python 版本 >= 3.6
安装
Benford_py 是 PyPi 中的一个包,所以你可以用 pip 安装:
pip install benford_py
或者
pip install benford-py
或者,您可以 cd 进入您的 python 发行版(或环境)的 site-packages 子文件夹,然后从那里进行 git clone:
git clone https://github.com/milcent/benford_py
如需快速入门,请转到演示笔记本,其中我展示了如何使用 SPY (S&P 500 ETF) 每日回报运行测试的示例。
有关函数和类的更细粒度的详细信息,请参阅文档。
背景
一个数字的第一个数字是它的最左边的数字
由于任何数字的第一个数字的范围可以从“1”到“9”(不考虑“0”),因此可以直观地预期在一组数字记录中每次出现的比例将均匀分布在1/9 ,即大约 0.1111 或 11.11%。
本福德定律,也称为第一位数字定律或有效数字现象,是发现在最不同来源的一系列记录中发现的数字的第一位数字不显示均匀分布,而是排列在这样数字“1”出现频率最高,其次是“2”、“3”,依次递减到“9”,出现频率最低的第一个数字。
符合 Benford 标准的数据集中第一位数字的预期分布如下所示
关于这个主题的第一个记录可以追溯到 1881 年,在 美国-加拿大天文学家和数学家Simon Newcomb的工作中,他指出在对数表中的第一页,其中包含以数字“1”和“2”开头的对数,更破旧,也就是说,更多的咨询。
在同一篇文章中,Newcomb 提出了某个数字“d”是数字的第一位数字的概率公式,由以下等式给出。
1938 年,美国物理学家弗兰克·本福德( Frank Benford)在一项调查中重新审视了这一现象,他称之为“反常数定律”,该调查对从河流面积到化合物分子量等各种来源收集的经验数据进行了 20,000 多次观察。 ,包括成本数据、地址号码、人口规模和物理常数。他们都或多或少地遵循了这种分布。
Benford 的工作范围似乎是这一现象以他的名字普及的一个很好的理由,尽管 Newcomb 早在 57 年前就对其进行了描述。
原始公式的推导也应用于数字中其他位置的数字比例的预期结果,如第二个数字的情况(BENFORD,1938),以及组合,例如前两个数字一个数字(NIGRINI,2012 年,第 5 页)。
然而,直到 1995 年,希尔才证明了这一现象。他的证明基于这样一个事实,即遵循本福德定律的数据系列中的数字实际上是“第二代”分布,即其他分布的组合。从各种分布中随机抽取的样本的联合形成了一个符合本福德定律的分布(HILL,1995)。
当按升序分组时,遵守本福德定律的数据必须接近几何序列(NIGRINI,2012,第 21 页)。由此得出,这个有序序列的对数必须形成一条直线。此外,这些数字的对数的尾数(小数部分)必须均匀分布在区间 [0,1] 内(NIGRINI, 2012, p.10)。
一般而言,当 (NIGRINI, 2012, p.21) 时,一系列数字记录遵循本福德定律:
- 它代表事件或事件的大小,例如城市人口、河流中的水流量或天体的大小;
- 它没有预先设定的最小或最大限制;
- 它不是由用作标识符的数字组成,例如身份或社会安全号码、银行账户、电话号码;和
- 它的均值小于中位数,并且数据没有集中在均值附近。
从这种预期分布可以看出,如果一系列记录中通常遵守法律的一组数字显示出所发现的比例存在偏差,则可能存在扭曲,无论是有意还是无意。
本福德定律已用于多个领域。在断言通常的数据类型是 Benford 兼容的之后,人们可以研究来自相同数据类型的样本以搜索不一致、错误甚至欺诈。
这个开源模块试图帮助人们使用 Python 以交互方式或以自动化脚本方式执行与本福德定律相关的测试。
它使用 numpy 和 pandas 的多功能性,以及用于可视化的 matplotlib,来提供这样的结果以及更多。
自从我上次在 Python 2 中测试它已经很长时间了。死亡时钟已经停止滴答作响,所以现在正式适用于 Python 3。它应该可以在 Linux、Windows 和 Mac 上运行,但如果遇到问题,请提交错误报告。
此外,如果您有一些不错的数据集可以运行这些测试,让我们试试吧。
谢谢!
米尔森特
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
benford_py -0.5.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 5af48d4abd572ffd3f1d85a738ffa5cfa3d459902397b6105db01775515bf190 |
|
| MD5 | c2eb55a0535924adf1d2a42081295b91 |
|
| 布莱克2-256 | 9a98643d32eac72ace755fd06eee566210c581ce536ed94956dd7b4e71e613ea |
benford_py -0.5.0-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 52e3c44fdce15cd9fc6372a5515654e19e14530384751ad9211efdcddd074622 |
|
| MD5 | cf755e6df867af8e56ce05c231278821 |
|
| 布莱克2-256 | c9253855e4960b74f50bc0e7089ac7a8a65d414c565aec3a6f183e8df7692e10 |