aron clauset幂律分布fitter的python实现

plfit的Python项目详细描述


这是幂律分布装配器的python实现。守则 这里最初托管在agpy上,但是 移动并重新打包以使setup.py更干净。

API Documentation

另请参见http://code.google.com/p/powerlaw,同一算法的另一个实现,并附加了bells&whills。

安装

我试图使setup.py文件运行良好,但它包含一些黑客,所以如果遇到麻烦, 请在github

git clone git@github.com:keflavich/plfit.git
cd plfit
python setup.py install

如果python setup.py install不起作用,可以尝试以下操作:

要安装cython函数,请运行: python setup.py build_ext --inplace

要安装Fortran函数:

cd plfit/plfit/
f2py -c fplfit.f -m fplfit --fcompiler=gfortran

说明

Aaron Clauset等人解决将幂律拟合到分布的问题 在this website和他们的论文中 Power-law distributions in empirical data。我有 创建了他们代码的python实现,因为我没有matlab或r 想做些幂律拟合。

幂律在天文学中非常常用,通常用于 描述初始质量函数(imf)、核心质量函数(cmf)和 通常是光度分布。天文学中的大多数分布趋向于 因为源计数太少或太窄 区分幂律与对数正态分布和其他分布。但是,为了这个 最后,我已经包含了测试机制来测试与power的一致性 如上述文件所述的法律。

python内部文档已经完成。为了方便起见,此处简要介绍了相关功能:

plfit作为类实现。这意味着您导入plfit,并声明plfit类的一个实例:

import plfit
X = rand(1000)
myplfit = plfit.plfit(X)

拟合结果将打印到屏幕上(如果需要),并作为对象的一部分存储。

alpha_kstest_是内部使用的函数,用于确定ks统计值和alpha值,作为xmin的函数。

有3个预定义的绘图功能:
    {Tt5} $图y轴上的KS与KS统计值 X轴具有“最佳拟合”α值,用误差条绘制。这些 绘图是确定xmin的其他值是否相似的有用方法 很合身。
  • plotcdf绘制累积分布函数和 最佳拟合幂律
  • plotpdf使用最佳拟合幂律绘制pdf的直方图。它 默认为日志绑定(即线性幂律拟合),但可以执行dn/ds和 线性组合。
其他有用功能:
  • test_pl使用拟合幂律作为蒙特卡罗的起点 测试幂律是否可接受。它返回一个“p值” 如果要考虑幂律拟合,则应为0.1(尽管p值较高 不能确保分配函数是幂律!).
  • plexp_inv创建具有指数的截止幂律分布 甩掉尾巴。它对测试很有用。
  • pl_inv创建纯截止幂律分布
  • test_fitter使用前两个函数来测试装配工的能力 为大量迭代返回正确的xmin和alpha值

powerlaw fitter在返回正确的alpha值时非常有效 但不善于返回正确的xmin值。

代码内部有3个实现。fplfit.f是fortran语言 函数,cplfit.pyx是cython函数,plfit.py是包装器和 包括一个只需要numpy的python实现。Fortran是最快的, 紧随其后的是赛顿。Python大约慢3倍。

截至2011年11月21日,有一个纯python(即,没有numpy)实现 在<;https://github.com/keflavich/plfit/blob/master/plfit/plfit_py.py>;-您可以 将此文件放入本地工作目录并导入,因为它包含 除了纯python之外没有其他需求。它比较慢,步履蹒跚,但它能工作,也许 会跑得很快H pypy

有关用法examples,请参见

一个非常简单的例子:

import plfit
from numpy.random import rand,seed

# generate a power law using the "inverse" power-law generator code
X=plfit.plexp_inv(rand(1000),1,2.5)

# use the numpy version to fit (usefortran=False is only needed if you installed the fortran version)
myplfit=plfit.plfit(X,usefortran=False)
# output should look something like this:
# PYTHON plfit executed in 0.201362 seconds
# xmin: 0.621393 n(>xmin): 263 alpha: 2.39465 +/- 0.0859979   Log-Likelihood: -238.959   ks: 0.0278864 p(ks): 0.986695

# generate some plots
from pylab import *
figure(1)
myplfit.plotpdf()

figure(2)
myplfit.plotcdf()

如果您使用此代码,请引用Clauset等人2009,并考虑在下面发表评论。

欢迎直接引用到源代码!python的翻译已经在下面的作品中被引用(也许还有其他的作品?):

Bitdeli badge

v1.0.1-仅对pypi进行错误修复;只需将内容添加到manifest.in v1.0-首次发布

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

推荐PyPI第三方库


热门话题
java如何在数据库中插入行时自动发送电子邮件?   从进程输出读取的Java问题   java质疑StyledDocument和JTextPane之间的关系,以及接口的正确使用   java错误getPlayer(args[0]);   java如何使Spring引导在重新打包的WAR中包含清单文件?   Java中的除法与模   java使用2d数组和JfreeChart制作散点图   java扩展SonarQube FindBugs插件和自定义FindBugs插件   javaspring:hibernate+ehcache   具有不正确的equals和HashCode实现的java HashMap   java Jaspersoft报告网。旧金山。jasperreports。发动机例外:net。旧金山。jasperreports。发动机填满JRepressionEvalException:计算表达式时出错   java如果输入与其变量不匹配,如何添加错误   在java中使用简单数组[]实现队列   无法启动上下文路径/hsx上的java FAIL应用程序