KS测试幂律

时间:2013-11-25 16:28:11

标签: r design-patterns power-law

我尝试使用Aaron Clauset,Cosma Rohilla Shalizi和M.E.J.概述的方法将powerlaw分布拟合到数据集。纽曼在他们的论文“经济数据中的幂律分布”。

我找到了与我自己的代码进行比较的代码,但有点神秘,其中一些来自,到目前为止的故事是,

为powerlaw拟合确定合适的xmin,我们采用每个可能的xmin拟合该数据的幂律,然后计算相应的exponet(a)然后计算拟合和观察数据的KS统计量(D),然后找到xmin对应于D的最小值.KS统计量如果计算如下,

cx   <- c(0:(n-1))/n # n is the sample size for the data >= xmin
cf   <- 1-(xmin/z)^a # the cdf for a powerlaw z = x[x>=xmin]
D <- max(abs(cf-cx))

我没有得到的是cx的来源,我们当然应该比较经验分布与计算分布之间的距离。类似的东西:

cx = ecdf(sort(z))
cf   <- 1-(xmin/z)^a
D <- max(abs(cf-cx(z)))

我想我只是遗漏了一些非常基本的东西,但请纠正我!

1 个答案:

答案 0 :(得分:1)

答案是他们(差不多)相同。最简单的方法是生成一些数据:

z = sort(runif(5,xmin, 10*xmin))
n = length(x)

然后检查两个CDF的值

R> (cx1 = c(0:(n-1))/n)
[1] 0.0 0.2 0.4 0.6 0.8
R> (cx2 = ecdf(sort(z)))
[1] 0.2 0.4 0.6 0.8 1.0

请注意它们几乎相同 - 基本上cx1提供大于或等于的CDF,而cx2 大于

顶级方法的优势在于它非常高效且快速计算。缺点是如果您的数据不是真正连续的,即z=c(1,1,2),则cx1是错误的。但是,如果是这种情况,那么您不应该将数据拟合到CTN分发中。