Power Law适用于poweRlaw封装的截止分布

时间:2017-07-15 15:06:33

标签: r graph data-fitting mle power-law

我目前正试图找到一种方法来计算适用于MLE的截止分布的幂律。分布如下:

Image1

正如你所看到的,我能够分别适应整个分布(幂律拟合)和下界(exp-fit)。我未能弄清楚的是,如何拟合分布的上限(f.e. 8< x< 100)。

有没有办法用 poweRlaw 包或任何其他R包来做到这一点?我希望的是这样的东西(注意:它只是一个随机分布):

Image2

代码(如有必要):

#Power-Law
library("poweRlaw")
xmin1 <- 8
xmin2 <- 100
plf0 <- displ$new(deg)
plf0$setXmin(xmin1)
plf0_pars <- estimate_pars(plf0)
plf0$setPars(plf0_pars)

#Exponential
exp1 <- disexp$new(deg)
exp1$setXmin(xmin2)
exp1_pars <- estimate_pars(exp1)
exp1$setPars(exp1_pars)
plot(plf0)
lines(plf0, col="green")
lines(exp1, col="red")

2 个答案:

答案 0 :(得分:0)

您不能使用poweRlaw包(我是包作者)来使用这种类型的模型。

不太可能将其添加到附近包中的包中。

答案 1 :(得分:0)

以下解决方案提供了可以使用rpy2在Python上运行的R代码。

根据powerlaw的建议,answer by Kelvin提供了基于源代码的说明,主要来自:https://github.com/jeffalstott/powerlaw/blob/master/testing/pli-R-v0.0.3-2007-07-25/powerexp.R文件。

  1. 安装Gnu Scientific Library (GSL)

    在Debian中:apt-get install libgl2

  2. 从github下载powerlaw python库代码。
  3. 解压缩并构建位于先前下载的库的exponential-integral.tgz文件夹中的testing/pli-R-v0.0.3-2007-07-25/文件。

    tar xzf exponential-integral.tgz
    cd exponential-integral
    make
    
  4. 从此处将exp_int文件移至名为yourexecutablepath的可执行路径。

    mv exp_int yourexecutablepath

  5. 使用exp_int可执行文件的完整路径修改powerexp.R文件中的exp_int_function_filename变量,即yourexecutablepath/exp_int

  6. 评估exp.Rpareto.Rpowerexp.R R源代码,以包含所有必需的功能。

  7. 使用指数截止值来评估以下R调用,使您的数据符合powerlaw:

    data <- list(5, 3, ...)
    powerexp.fit(unlist(data))
    
  8. 最后一个命令的输出提供了几个输出值,其中exponent给出幂律 alpha 值,rate给出指数截止参数。