2017-07-15 41 views
2

我目前正试图找到一种方法来计算适用于MLE截断分布的幂定律。分布如下所示:Power Law适用于poweRlaw包的临界分布

Image1

正如你所看到的,我能够适应整个分布(幂律配合),也下限(EXP-FIT)分开。我无法弄清楚的是如何拟合分布的上限(f.e.8 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") 

回答

0

你可以不适合这种类型与poweRlaw包(我是包装作者)的模型。

它不太可能被添加到附近的软件包中。

+0

感谢您的快速回答。你有没有其他方法想到如何解决这个问题? – Max

+0

对不起,没有(我没有那么有用) – csgillespie

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文件。从GitHub apt-get install libgl2

  • 下载powerlaw Python库代码:

    1. 安装Gnu Scientific Library (GSL)

      在Debian中。

    2. 解包并构建exponential-integral.tgz文件位于testing/pli-R-v0.0.3-2007-07-25/文件夹的以前下载的库。

      tar xzf exponential-integral.tgz 
      cd exponential-integral 
      make 
      
    3. 移动exp_int文件的可执行文件路径,从这里命名yourexecutablepath。从powerexp.R

      mv exp_int yourexecutablepath

    4. 修改exp_int_function_filename变量与文件的完整路径到exp_int可执行,即yourexecutablepath/exp_int

    5. eval exp.R,pareto.Rpowerexp.R R源代码包含所有需要的功能。

    6. 适合你的数据与指数截止一幂评估下列R-电话:

      data <- list(5, 3, ...) 
      powerexp.fit(unlist(data)) 
      

    最后一个命令的输出提供了多种输出值,其中exponent这给电力法则alpha value和rate其给出了指数截止参数。

  • +0

    尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/17098894) – Zabuza