检验概率分布是否符合幂律的工具箱

powerlaw的Python项目详细描述


powerlaw:一个用于分析重尾分布的python包
=================================================

``powerlaw``是一个使用
`clauset al开发的统计方法的工具箱。2007<;http://arxiv.org/abs/0706.1062>;``和'klaus等人。2011<;http://www.plosone.org/article/info%3adoi%2F10.1371%2fjournal.pone.0019779>;``确定概率分布是否符合幂律。学者们,请引用:


jeff alstott、ed bullmore、dietmar plenz。(2014)。powerlaw:用于分析重尾分布的python包。` plos one 9(1):e85777<;http://www.plosone.org/article/info%3adoi%2f10.1371%2fjournal.pone.0085777>;`

告诉您需要知道的一切。:


import power law
data=array([1.7,3.2…])数据可以是list或numpy array
results=powerlaw.fit(data)
print(results.powerlaw.alpha)
print(results.powerlaw.xmin)
r,p=results.distribution.compare(‘幂律’,‘对数正态’)


有关更多的解释、理解和图表,请参阅论文,
,它说明了‘幂律’的所有特性。有关数学的详细信息,请参见Clauset等人。2007年,它开发了这些方法。

quick links
----
`文章说明了powerlaw的所有特性,并附有图片<;http://arxiv.org/abs/1305.0215>;` `

`手稿中的代码示例,作为一个ipython笔记本<;http://nbviewer.ipython.org/github/jeffalstott/powerlaw/blob/master/reproft/reproft_code.ipynb>;` />;`\u

此代码是为python 2.x开发和测试的,使用的是http://www.enthough.com/products/epd.php>;`\uhought python发行版,随后修改为与3.x兼容。完整版本的enthought是
`可免费供学术使用<;http://www.enthough.com/products/edudownload.php>;` ` `.



最简单的安装方法是在命令行(Linux、Mac或Windows)中键入以下命令:


easy-install powerlaw

,或者更好的方法是:

>pip install powerlaw

``easy-install``或``pip``只需要在您的路径上,Linux或Mac可能就是这样。

`` pip``应该自动安装所有依赖项。这些其他依赖项是"numpy"、"scipy"和"matplotlib"。这些都存在于热情、水蟒和大多数其他科学巨蟒堆中。为了适应截断幂律或gamma分布,还需要"mpmath",这是不太常见的,并且可以通过以下方式安装:

pip install mpmath

d对于负数有足够的数字精度。

您也可以从github上的源代码中构建,尽管它可能比pypi版本稍早一点。



更新通知和邮件列表f加入google组进行更新'here<;https://groups.google.com/forum/?从群组开始!Forum/Powerlaw Updates>;`` ` ` `.


问题/讨论/帮助转到google group`here<;https://groups.google.com/forum/?从群组开始!论坛/Powerlaw General还接收更新信息。

-——————————————————————————————————————————————————————————————————————如果您想在"powerlaw"中看到某个功能,请提交问题<;https://github.com/jeffalstott/powerlaw/issue s>;`。
欢迎并鼓励提出扩展或纳入其他项目的请求和提议。《权力法则》的原著作者杰夫·阿尔斯托特现在只写了一些小改动,所以贡献是非常有用的。



还要感谢"Andreas Klaus<;http://neuroscience.nih.gov/fellows/fellow.asp?people_id=2709>;``uu,
`Aaron Clauset,Cosma Shalizi<;http://tuvalu.santafe.edu/~aaronc/powerlaws/>;``uu,
和`adam ginsburg<;http://code.google.com/p/agpy/wiki/powerlaw>;``用于使其代码可用。它们的实现是
生成"幂律"的关键起点。



iBution<;https://en.wikipedia.org/wiki/lognormal廑distribution>;`廑这是因为对数正态分布是另一个重尾分布,但它们可以通过一个非常简单的过程生成:将随机正变量相乘。因此,对数正态分布非常类似于正态分布,它可以通过将随机变量相加来创建;事实上,对数正态分布的对数是正态分布(因此得名),正态分布的指数是对数正态分布(这可能更好地称为对数正态分布)。一个表达式)。相比之下,创建一个幂律通常需要花哨的或异国情调的生成机制(这可能就是为什么你要从幂律开始寻找的原因;它们很性感)。因此,即使幂律只有一个参数(``alpha``:斜率),对数正态分布有两个参数(``mu`:基本正态分布中随机变量的平均值和``sigma`:基本正态分布的标准差),我们通常认为对数正态分布是一个简单的对观测数据的解释,只要分布与数据吻合。对于大多数数据集来说,幂律实际上比对数正态分布更不合适,或者可能同样好,但很少比对数正态分布好。这一事实是clausset al.论文的主要实证结果之一。2007年<;http://arxiv.org/abs/0706.1062>;```开发了`` powerlaw`实现的统计方法。

但是,对于许多数据集,只有当允许拟合参数"mu"变为负数时,才有可能进行高级对数正态拟合。这是否合理取决于你对生成数据的理论。如果数据被认为是由随机正变量相乘产生的,``mu``只是分布中值的对数;负的``mu``只表示这些变量的乘积通常低于1。然而,如果数据被认为是通过指数正态分布生成的,那么"mu"被解释为底层正态数据的中值。在这种情况下,正常数据可能是通过对随机变量(正和负)求和生成的,而"mu"是这些和的中值(和平均值)。负的"mu"表示随机变量通常为负。对于某些物理系统,这是完全可能的。不过,对于你正在研究的数据,这可能是一个奇怪的假设。首先,根据定义,所有适合的数据点都是正值,因为幂律必须有正值(实际上,``powerlaw``抛出0或负值)。为什么这些数据会由一个对*负*变量求和并指数化的过程生成?

这些随机变量应该是正的,一个可能的技巧是"幂律"的"对数正态"。这只是一个正规的对数正态分布,除了"mu"必须是正的。请注意,这并不强制底层正态分布仅为正变量之和;它只强制总和'*average*为正,但这只是一个开始。你可以用上面所示的正态分布来比较幂律和这个分布:

r,p=结果。分布比较("幂律","对数正态分布")

a.在得出数据实际上是幂律分布的结论之前,仔细考虑是否更可能的解释是,数据是通过正随机变量的乘法生成的,甚至是通过对随机变量的求和和和和求幂生成的;任何一种方法都允许对数正态分布,其可理解的负值为"mu"。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ApachePOI如何通过java从excel文件中删除空白列?   linux到后台Java服务应用程序的简单发送/接收接口   java ActionBarPullToRefresh什么都没发生   java从millis获取错误的整数天   java相同的代码在两个不同的包上表现不同   java将每个新的char元素写入一个文件(如果被覆盖)   mysql如何在Java中通过外键链接的多个表中插入数据   java环境下mysql网络文件访问   java当使用构建器模式时,为什么我不应该重用builderobject来访问对象配置?   java jQueryServlet post异常失败   java应该使用什么逻辑来创建像《愤怒的小鸟》中那样的锁屏   java Android:在不滑动的情况下更改ViewPager中的片段   java在使用我的程序逻辑时获得空输出