无法使用PoweRlaw估算大型数据集的xmin,alpha

时间:2015-09-16 03:47:07

标签: r power-law

我有以下是样本数据集。第一列是序列号,第二列是数据。

使用R,我试图找到xmin,alpha和pvalue。上述数据集是离散的,值很大并且将数据视为连续的。由于某种原因,R无法为est= estimate_xmin()提供正确的输出。这是相同的代码。

> library('poweRlaw')
> m_bl = conpl$new(sample_data$V1)
> est = estimate_xmin(m_bl)
> m_bl$setXmin(est)
Warning message:
In min(which(internal[["dat"]] >= (x - .Machine$double.eps^0.5))) :
  no non-missing arguments to min; returning Inf
> 
> est
$KS
[1] Inf

$xmin
[1] NA

$pars
[1] NA

attr(,"class")
[1] "estimate_xmin"
> 

如果我错过了什么,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:2)

estimate_xmin有一个可选参数xmax

  

estimate_xmin(m,xmins = NULL,pars = NULL,xmax = 1e + 05)

来自文档:

  

为了加速离散分布的计算,这是明智的   设置上限,即xmax或明确给出where的值   搜索,即xmin。

由于样本中的最小值大于xmax的默认值 ,estimate_xmin 除非上限xmax充分增加,否则无法找到xmin:

> library('poweRlaw')

> m_bl = conpl$new(sample_data$V1)

> #==========================================
> est = estimate_xmin(m_bl)  

> m_bl$setXmin(est)
Warning in min(which(internal[["dat"]] >= (x - .Machine$double.eps^0.5))) :
  no non-missing arguments to min; returning Inf

> #------------------------------------------
> est = estimate_xmin(m_bl,xmax=3e+5)  

> m_bl$setXmin(est)
Warning in min(which(internal[["dat"]] >= (x - .Machine$double.eps^0.5))) :
  no non-missing arguments to min; returning Inf

> #------------------------------------------
> est = estimate_xmin(m_bl,xmax=5e+5)  

> m_bl$setXmin(est)

> #------------------------------------------
> est = estimate_xmin(m_bl,xmax=Inf)  

> m_bl$setXmin(est)

> #==========================================
> m_bl
Reference class object of class "conpl"
Field "xmin": 
[1] 11082439
Field "pars": 
[1] 15.83368
Field "no_pars": 
[1] 1