用 Python 求解幂律分布

Posted

技术标签:

【中文标题】用 Python 求解幂律分布【英文标题】:Solving Power Law Distribution in Python 【发布时间】:2016-04-27 14:21:28 【问题描述】:

我的数据与power law 分布非常相似。使用 Python,我想通过求解以下形式的两个方程来近似数据:

y 是 y 轴数据。在 Python 中,它将是 data[i]。 x 将是i + 1。因此,我们得到两个方程,在第一个数据索引处有两个未知变量,在数据的其他地方有一个“随机”的第二个变量:

问题归结为解决问题

由于数学简化。我不知道如何使用像 numpy.linalg.solve 这样的库来求解这样的方程。如何使用 Python 找到 a 的值?

【问题讨论】:

你不需要方程求解器...a = (1/2)* math.log10 ( data[99]/data[0] ) 是的,它似乎与a = math.log(data[99] / data[0], 100)一起工作 【参考方案1】:

好的,我知道了。

import math

def get_power_law_variables(data):
    c = data[0]
    middle_index = len(data) / 2
    division = float(data[middle_index]) / c
    logarithm_base = middle_index + 1
    a = math.log(division, logarithm_base)
    return c, a

# Example usage
data = range(50, 150)
c, a = get_power_law_variables(data)
print c, a

【讨论】:

你能解释一下为什么使用middle_index作为日志库吗?

以上是关于用 Python 求解幂律分布的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 估计幂律分布的指数?

幂律分布与指数分布、幂律与分形

从幂律分布到特征数据概率分布——12个常用概率分布

产生幂律分布的随机数生成器?

积累分布用例-洛伦兹曲线和随机游走

强者越强-效率与公平的幂律视角