因为我一直在做一些社交网络分析,所以我偶然发现了在网络度上拟合概率分布的问题。
因此,我有一个概率分布 P(X >= x)
,从目测来看,它遵循具有指数截断的幂律而不是纯幂律(直线)。
因此,假定具有指数截断的幂律分布方程为:
f(x) = x**alpha * exp(beta*x)
我如何使用 Python 估计参数 alpha
和 beta
?
我知道 scipy.stats.powerlaw 包存在并且它们有一个 .fit()
函数,但它似乎没有完成这项工作,因为它只返回绘图的位置和比例,哪个似乎只对正态分布有用?这个包的教程也不够。
附言我很清楚 CLauset et al 的实现但它们似乎没有提供估计交替分布参数的方法。
最佳答案
Powerlaw库可以直接用于估计参数如下:
安装所有 pythons 依赖项:
pip install powerlaw mpmath scipy
运行适合python环境的powerlaw包:
import powerlaw data = [5, 4, ... ] results = powerlaw.Fit(data)
从结果中获取参数
results.truncated_power_law.parameter1 # power law parameter (alpha) results.truncated_power_law.parameter2 # exponential cut-off parameter (beta)
关于python - 估计幂律分布中的指数截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063097/