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 Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本