幂律与其他分布的比较

bor*_*ula 3 python power-law

我正在使用 Jeff Alstott 的 Python powerlaw 包来尝试使我的数据符合幂律。Jeff 的软件包基于 Clauset 等人讨论幂律的论文。

首先,我的数据的一些详细信息:

  1. 它是离散的(字数数据);
  2. 它严重向左倾斜(高偏度)
  3. 峰态(超峰度大于 10)

到目前为止我做了什么

df_data 是我的数据框,其中 word_count 是一个包含大约 1000 个单词标记的单词计数数据的系列。

首先我生成了一个合适的对象:

fit = powerlaw.Fit(data=df_data.word_count, discrete=True)
Run Code Online (Sandbox Code Playgroud)

接下来,我使用 fit.distribution_compare(distribution_one, distribution_two) 方法将数据的幂律分布与其他分布进行比较 - 即对数正态、指数对数正态拉伸指数截断幂律。

作为 distribution_compare 方法的结果,我为每个比较获得了以下 (r,p) 元组:

  • fit.distribution_compare('power_law', '对数正态') = (0.35617607052907196, 0.5346696007)
  • fit.distribution_compare('power_law', '指数') = (397.3832646921206, 5.3999952097178692e-06)
  • fit.distribution_compare('power_law', 'lognormal_positive') = (27.82736434863289, 4.2257378698322223e-07)
  • fit.distribution_compare('power_law', 'stretched_exponential') = (1.37624682020371, 0.2974292837452046)
  • fit.distribution_compare('power_law', 'truncated_power_law') =(-0.0038373682383605, 0.83159372694621)

来自幂律文档:

R:浮动

两组似然值的对数似然比。如果为正,则第一组可能性更有可能(因此产生它们的概率分布更适合数据)。如果为负,则相反。

p:浮点数

R 符号的显着性。如果低于临界值(通常为 0.05),则 R 的符号被视为显着。如果高于临界值,则 R 的符号被认为是由于统计波动造成的。

从幂律分布、指数分布和对数正态分布之间的比较结果来看,我倾向于说我有幂律分布。

这是对测试结果的正确解释/假设吗?或者也许我错过了一些东西?

小智 6

首先,虽然这些方法可能是由我、Cosma Shalizi 和 Mark Newman 开发的,但我们的实现是在 Matlab 和 R 中进行的。我认为您使用的 python 实现可能来自 Jeff Alstott 或 Javier del Molino Matamala 或 Joel奥恩斯坦(所有这些都可以从我的网站上找到)。

现在,关于结果。似然比检验 (LRT) 不允许您得出是否存在幂律分布的结论。它只是一个模型比较工具,这意味着它会评估幂律是否比其他替代方案更适合您的数据。(我这样说是因为 LRT 不是一种拟合优度方法。)因此,即使幂律分布优于所有替代方法,也不意味着您的数据幂律分布的。这仅意味着幂律模型是一种比其他模型更糟糕的数据统计模型。

要评估幂律分布本身是否是统计上合理的模型,您应该使用我们在论文中描述的半参数引导程序来计算拟合幂律模型的p值。如果p>0.1并且幂律模型优于 LRT 的替代方案,那么您可以得出对遵循幂律分布的数据的相对较强的支持。

回到您的具体结果:您的每个 LRT 比较都会生成一对(r,p),其中r是归一化对数似然比,p是该比率的统计显着性。这里测试p值的是r符号是否有意义。如果LRT 的p<0.05,则正号表示幂律模型受到青睐。查看您的结果,我发现指数和对数正态替代方案比幂律模型更适合数据。然而,对数正态、拉伸指数和截断幂律则不然,这意味着这些替代方案与幂律模型一样不适合数据。

如果没有幂律模型本身的假设检验的p值,则 LRT 结果无法完全解释。但即使是部分解释也与幂律模式的强有力证据不一致,因为对于这些数据来说,两个非幂律模型与幂律模型一样好(坏)。考虑到数据的右偏程度,指数模型确实比幂律更糟糕这一事实并不奇怪,因此没有什么值得大书特书的。