我想测试最适合从系统源代码中提取的特定指标(我称之为 SD)的分布。我猜他们遵循幂律行为。
- 我的样本:20 个系统
- 对于这 20 个系统中的每一个,我想测试每个 SD 值出现的内部分布是否遵循幂律(或者,至少有一个很好的拟合)。
- 从这些系统中提取的指标不是随机样本,而是单个系统内的所有事件。
- 该指标的取值范围未确定。
- 这些值是离散的。
我将测试在所有系统中,这个度量标准 SD 是否遵循 PowerLaw(或不遵循)。
我正在使用 Aaron Clauset 的方法论
http://tuvalu.santafe.edu/~aaronc/powerlaws/
还有 Colin S. Gillespie 创建的 R 包
https://cran.r-project.org/web/packages/powerlaw/vignettes/b_powerlaw_examples.pdf
总之,我对每个发行版(每个系统)的步骤是:
1.使用 MLE 估计幂律模型的参数 xmin 和 α(在图中它们是k)。
m_pl = displ$new(data)
est = estimate_xmin(m_pl)
m_pl$setXmin(est)
plot(m_pl)
2.计算数据与幂律之间的拟合优度。如果得到的 p 值大于 0.1,则幂律是数据的合理假设。
bs = bootstrap_p(fittedPowerLaw, no_of_sims=numberOfBootstrapSims, threads=8)
bs$p
一般问题1:方法正确吗?我看到很多例子,人们用样本数据测试分布。在这种情况下,我有来自每个正在测试的系统的所有事件,我可以使用相同的步骤吗?
结果
A- 好结果:
看图片似乎遵循 PowerLaw 模型。p 值:0.2368,因此幂律是一个合理的假设。
B - 不好的结果:
看图片,它似乎遵循 PowerLaw 模型。但是 p 值为 0.0292,排除了幂律。
问题 2:这些结果(A 和 B)是否正确?
C - 奇数结果:
Claset 说小样本会使结果产生偏差(例如,n<100 的样本)。我有一个示例,其中数据集很大(n > 3.000),但大多数数据具有相同的值(在本例中为 1)。该图看起来像我们有小数据,因为小的变化只出现在右侧。p 值:0.5976,因此幂律是一个合理的假设。
问题 3:在这种情况下,结果是否有效?