我目前正试图找到一种方法来计算适用于MLE的截止分布的幂律。分布如下:
正如你所看到的,我能够分别适应整个分布(幂律拟合)和下界(exp-fit)。我未能弄清楚的是,如何拟合分布的上限(f.e. 8< x< 100)。
有没有办法用 poweRlaw 包或任何其他R包来做到这一点?我希望的是这样的东西(注意:它只是一个随机分布):
代码(如有必要):
#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 :(得分: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文件。
安装Gnu Scientific Library (GSL)
在Debian中:apt-get install libgl2
解压缩并构建位于先前下载的库的exponential-integral.tgz
文件夹中的testing/pli-R-v0.0.3-2007-07-25/
文件。
tar xzf exponential-integral.tgz
cd exponential-integral
make
从此处将exp_int
文件移至名为yourexecutablepath
的可执行路径。
mv exp_int yourexecutablepath
使用exp_int可执行文件的完整路径修改powerexp.R文件中的exp_int_function_filename
变量,即yourexecutablepath/exp_int
。
评估exp.R
,pareto.R
和powerexp.R
R源代码,以包含所有必需的功能。
使用指数截止值来评估以下R调用,使您的数据符合powerlaw:
data <- list(5, 3, ...)
powerexp.fit(unlist(data))
最后一个命令的输出提供了几个输出值,其中exponent
给出幂律 alpha 值,rate
给出指数截止参数。