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

6 投票
2 回答
5614 浏览
提问于 2025-04-17 11:18

我现在在做一些网络分析,想要估算一个关于平均聚类系数和节点度数的幂律分布的指数。最好的方法是最大似然估计(MLE)。

我知道这里有类似的代码实现:http://tuvalu.santafe.edu/~aaronc/powerlaws/

不过,他们实现的代码主要是用来绘制一个曲线,显示的是 Pr(X >= x) 和 x 的关系,其中 x 是某个特定序列中的一个节点。换句话说,Pr(X >= x) 是指在 X 中,有一个节点的值等于或大于 x 的概率。

我已经在网上搜索了好几天,但还是没找到可以用来估算幂律分布指数的工具,特别是给定两个数值序列的情况下。

提前谢谢大家。

2 个回答

0

你可以看看 scipy.optimize 这个库。如果你一定要使用最大似然估计,那就先定义一个似然函数,然后用 fmin() 函数来找到 -似然的最小值(也就是似然的最大值)。如果你可以用其他方法的话,可以考虑使用 curve_fit()(这个方法是通过最小二乘法来拟合的)。

3

我知道这可能有点晚了,但你可以看看最近发布的 `powerlaw` 这个包。它里面有一个 iPython notebook,里面有一些可以运行的例子和图示。

撰写回答