网易首页 > 网易号 > 正文 申请入驻

关于幂律分布,你还应该知道如何用代码实现!| 集智百科

0
分享至

导语

今天我们继续学习幂律分布的基本概念——幂律概率分布,以及如何用代码实现幂律分布。内容来自集智百科,集智百科是复杂系统领域的百科全书,涵盖复杂系统领域的基本概念(持续完善中)。

我们正在组织撰写翻译相应的维基词条,并附上代码实现。想要自己创建词条,一起贡献知识的小伙伴们可以通过链接报名哦。点击「编辑」,做些改变,按下「保存」,你将影响世界!

幂律概率分布

(Power-law probability distributions)

下面我们来讨论这个分布的性质。 首先,它的矩可表示为:

帕累托型分布 | 来源:https://www.google.com

一种不满足上面的一般形式的修改,即指数截止幂律分布。

Tweedie分布是一族统计模型,其特征是基于可加(additive)与可再生(reproductive)卷积以及标度变换(scale transformation)的闭包(closure)。因此,这些模型都表达了方差和均值之间的幂律关系。这些模型作为数学收敛的焦点,类似于正态分布在中心极限定理中所扮演的角色。这种收敛效应解释了为什么在自然过程中, 方差-平均幂律表现得如此广泛, 就像泰勒在生态学中的定律和在物理学中的涨落标度。还可以证明,使用扩展箱( expanding bins) 的方法时,这种方差- 均值幂律分布(variance-to-mean power law)意味着存在1 / f噪声,而1/ f噪声可能是由于Tweedie收敛效应(Tweedie convergence effect)而产生的。

图形验证法

检验幂律概率分布

虽然人们已经提出了更成熟更稳健的方法,但通过随机样本检验幂律概率分布的最常用的图形方法还是帕累托双分位图(Pareto quantile-quantile plots )(或帕累托Q-Q图),平均剩余寿命图(mean residual life plot)和双对数图(Paretoquantile-quantile plots)。

(log-log图)

在双对数图上呈现直线是必要的,但并没有足够的证据证明他们的幂律关系,直线的斜率就对应于幂律指数。

另一种更强大的图形检验法是利用bundles of residual quantile functions 残余分位函数束 。(注意,幂律分布也称为帕累托分布。)这里假设从概率分布中获得随机样本,并且我们想知道分布的尾部是否遵循幂律(换句话说,我们想知道分布是否有“帕累托尾”)。此处随机样本也被称为“数据”。

帕累托Q-Q图是这样绘制的:它将取对数后(样本)数据的分位数与取均值为1的指数分布对应的分位数(或标准帕累托分布的位数)进行比较。如果得到的散点图表现是“渐近收敛”为直线,就应该怀疑其服从幂律分布。帕累托 Q-Q图的局限是它在尾部指数(也称为帕累托指数)接近于0时表现不佳,因为帕累托Q-Q图难以检验尾部是缓慢变化的分布。

帕累托分布 | 来源:https://www.google.com

另一种检验幂律概率分布的方法是平均剩余寿命图,它包含以下步骤:首先对数据取对数,然后将高于第 i 阶统计量的数据平均值与第 i 阶统计量进行比较绘制,从i = 1, ..., n,其中n是随机样本容量。如果绘制出的散点图走势呈现为一条“稳定”的水平直线,那么应该考虑其服从幂律分布。但由于平均剩余寿命图对异常值非常敏感(它并不稳健),所以它通常会产生一些难以解释的图形; 而这些图形通常被称为 Hill horror plots 。

Hill horror plots | 来源:https://www.google.com

双对数图是使用随机样本以图形方式检验尾部分布的另一种方式。使用这个方法必须要谨慎,因为双对数图中呈现直线对幂律概率分布是必要不充分条件,许多非幂律分布在双对数图上也显示为直线。这个方法是将特定数在该分布中的概率估计量的对数 | 对比这个数的对数 | 进行绘图。通常,此估计量是该数据在数据集中出现的次数的比例。如果图中的点在x较大时倾向于“收敛”为直线,则可得出结论,该分布具有“幂律尾”(power-law tail)。目前这些类型的绘图的应用示例已经发表。但这种方法的局限是,需要大量的数据才能使结果可靠。此外,它仅适用于离散(或分组)数据。

log-log Graph 双对数曲线图 | 来源:https://www.google.com

不过,目前已经提出了使用随机样本检验幂律概率分布的另一种图形方法。该方法包括绘制对数变换样本的束,是最早提出使用随机样本探索矩的存在和矩生成函数的工具,基于残差分位函数(RQF)(也称为残差百分位函数) ,它提供了许多众所周知的概率分布的尾部行为的完整表征,包括幂律分布与其他类型的重尾,甚至非重尾分布的分布。这种方法绘制的图形没有上面提到的平均剩余寿命图、双对数图和帕累托 Q-Q图的缺点,它们对异常值很敏感,能够直观地检验具有小值的幂律,并且不适用于分析大量数据。此外,其他分布类型的尾部也可以用这个方法观察检验。

绘制幂律分布

(Plotting power-law distributions)

一般来说,幂律分布是在双对数坐标轴上绘制的,强调右尾部分。最简便直观的方法是通过(互补)累积分布函数(cumulativedistribution function,缩写为cdf)说明:

累积分布函数 | 来源:https://www.google.com

注意,cdf也是幂律函数,只是它的标度指数较小。从数据处理角度,cdf的等价形式是rank-frequency 分布,即先按升序排列的观察值,再将它们与矢量对应。

尽管便于记录数据,抑或是便于拟合平滑概率密度(质量)函数,但这些方法在数据表示中引入了隐式偏差,因此应该避免。另一方面,所述的cdf法对处理这些隐式偏差更稳健(但并非没有偏误)并且保留了在双对数图形上的线性特征。

虽然在同时用线性最小二乘法拟合幂律时,使用cdf绘制优于pdf(概率密度函数),但其不可避免地在数学上有不准确性。因此,在估计幂律分布的指数时,建议使用最大似然估计。

从经验数据估计指数

有许多方法可以估算幂律尾部的标度指数值,但并非所有方法都能产生无偏且一致的结果。一些最可靠的技术通常基于最大似然估计。替代方法通常基于双对数概率,双对数累积分布函数或对数分组数据进行线性回归,但是,应该避免这些方法,因为它们都可能导致对标度系数的具有显著偏误的估计。

关于这些方法,以及能够使用它们的条件,可以进一步发现,这篇文章全面而详细地提供了可用的代码(Matlab、Python、R和C++)来评估和测试幂律分布的过程。

详细代码如下:

# coding: utf-8

# # 用numpy生成0,1之间的幂律分布

#

# ### 概率密度函数为

# f(x) = a*x^(a-1)

a = 0.4

# 采样数量

samples = 10000

s = np.random.power(a, samples)

# 绘图展示结果

import matplotlib.pyplot as plt

count, bins, ignored = plt.hist(s, bins=50)

x = np.linspace(0, 1, 100)

y = a*x**(a-1.)

normed_y = samples*np.diff(bins)[0]*y

plt.plot(x, normed_y)

plt.show()

# # 使用原生方法生成0,1之间的幂律分布

import math

# 分布函数的反函数

def rev(x,a):

return math.exp(math.log(x) / a)

# 生成分布

s1 = []

for i in range(samples):

s1.append(rev(np.random.uniform(0,1),a))

# 绘图

count, bins, ignored = plt.hist(s1,bins=50)

x = np.linspace(0, 1, 100)

y = a*x**(a-1.)

normed_y = samples*np.diff(bins)[0]*y

plt.plot(x, normed_y)

plt.show()

# # 线性拟合生成结果

# 统计不同区间的数据数量

divide_num = 100

ys = np.zeros(divide_num)

xs = np.linspace(0,1,divide_num)

for i in range(len(s)):

ys[int(s[i] * 100)] += 1

# 使用sklearn包中的回归工具

from sklearn import linear_model

# 回归

x_log = np.log(xs)

y_log = np.log(ys)

#线性拟合数据准备

X_para=[]

Y_para=[]

for x ,y in zip(x_log[1:],y_log[1:]):

X_para.append([float(x)])

Y_para.append(float(y))

# 使用sklearn的线性拟合函数进行拟合

regr = linear_model.LinearRegression()

regr.fit(X_para, Y_para)

#

plt.title("fit the log data")

plt.scatter(x_log,y_log,color ="black")

plt.plot(X_para, regr.predict(X_para),color='blue',linewidth=3)

plt.show()

通过R函数估计指数, 并绘制双对数数据拟合线:

详细代码如下:

pwrdist <- function(u,...) {

# u is vector of event counts, e.g. how many

# crimes was a given perpetrator charged for by the police

fx <- table(u)

i <- as.numeric(names(fx))

y <- rep(0,max(i))

y[i] <- fx

m0 <- glm(y~log(1:max(i)),family=quasipoisson())

print(summary(m0))

sub <-

paste("s=",round(m0$coef[2],2),"lambda=",sum(u),"/",length(u))

plot(i,fx,log="xy",xlab="x",sub=sub,ylab="counts",...)

grid()

lines(1:max(i),(fitted(m0)),type="b")

return(m0)

}

如果你有更好的代码,欢迎贡献到集智百科上,或者联系我们,成为我们的志愿者!

点击「编辑」,做些改变,按下「保存」,你将影响世界!

来源:集智百科
地址:
http://wiki.swarma.net/index.php?title=%E5%B9%82%E5%BE%8B%E5%88%86%E5%B8%83&variant=zh-hans
编辑:孟婕

推荐阅读

幂律与规模读书会招募

解读幂律分布与无标度网络

复杂系统入门必修课——幂律分布

社交网络中的幂律分布

点击「编辑」,做些改变,按下「保存」,你将影响世界!

推荐课程



集智俱乐部QQ群|877391004

商务合作及投稿转载|swarma@swarma.org

◆ ◆ ◆

搜索公众号:集智俱乐部

加入“没有围墙的研究所”

让苹果砸得更猛烈些吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
伊朗媒体:阿拉格齐暂无与美方会谈日程

伊朗媒体:阿拉格齐暂无与美方会谈日程

新华社
2026-04-25 04:10:02
美媒称特朗普派遣其女婿及特使赴巴基斯坦同伊朗谈判

美媒称特朗普派遣其女婿及特使赴巴基斯坦同伊朗谈判

新华社
2026-04-24 23:56:17
事件反转!福建女司机脚踹保安反被扇耳光,耳膜穿孔!保安大叔摊上大事了……

事件反转!福建女司机脚踹保安反被扇耳光,耳膜穿孔!保安大叔摊上大事了……

新民周刊
2026-04-24 19:24:17
4月必办!2个证件全国发放,人人都有,没领的抓紧办

4月必办!2个证件全国发放,人人都有,没领的抓紧办

黑哥讲现代史
2026-04-24 21:05:19
3次交手全胜 郑钦文2-1打崩前澳网冠军:奖金43万元 冲到世界第31

3次交手全胜 郑钦文2-1打崩前澳网冠军:奖金43万元 冲到世界第31

风过乡
2026-04-24 19:26:42
中组部有关负责同志宣布中央决定:陈东明履新

中组部有关负责同志宣布中央决定:陈东明履新

上观新闻
2026-04-24 17:21:07
很多地方单位拖欠工资,不是不想发是真的周转不过来

很多地方单位拖欠工资,不是不想发是真的周转不过来

爆角追踪
2026-04-24 18:34:02
人社部、财政部通知:支持大学毕业生“回炉”读技校

人社部、财政部通知:支持大学毕业生“回炉”读技校

深度报
2026-04-23 22:43:47
最高院:提供 “口交” “肛交”等进入式性服务,是否属卖淫行为?

最高院:提供 “口交” “肛交”等进入式性服务,是否属卖淫行为?

周军律师聊案子
2026-04-21 09:50:16
72岁王健林,被逼到崩溃边缘......

72岁王健林,被逼到崩溃边缘......

酷温coolwin
2026-04-24 16:46:47
大反转:掌掴女家长的男保安,真实身份曝光!

大反转:掌掴女家长的男保安,真实身份曝光!

仕道
2026-04-24 08:12:39
扒完 DeepSeek V4 报告,我翻出了这个隐藏彩蛋

扒完 DeepSeek V4 报告,我翻出了这个隐藏彩蛋

爱范儿
2026-04-24 19:27:22
华晨宇抚仙湖项目叫停!中国顶级淡水命脉,绝不给流量资本让路

华晨宇抚仙湖项目叫停!中国顶级淡水命脉,绝不给流量资本让路

离离言几许
2026-04-24 07:25:41
90年代下岗潮杨成武将军直言:让下岗工人自生自灭,我心里不同意

90年代下岗潮杨成武将军直言:让下岗工人自生自灭,我心里不同意

明月清风阁
2026-04-23 11:40:14
特朗普登机访华前,盟友先率团来北京一趟,美代表说出最终目标

特朗普登机访华前,盟友先率团来北京一趟,美代表说出最终目标

军机Talk
2026-04-24 17:24:36
61岁何智丽现状:从日本回老家上海,与老友聚餐,面色红润没发福

61岁何智丽现状:从日本回老家上海,与老友聚餐,面色红润没发福

以茶带书
2026-04-14 14:09:22
丁俊晖三度领先被赵心童反超,亨得利惊呼他要崩,结果让皇帝噤声

丁俊晖三度领先被赵心童反超,亨得利惊呼他要崩,结果让皇帝噤声

杨华评论
2026-04-25 00:46:43
被原村支书驾铲车推土掩埋村民仍在医院输液,辟谣“警察围观” 说法,警察到场后立即制止

被原村支书驾铲车推土掩埋村民仍在医院输液,辟谣“警察围观” 说法,警察到场后立即制止

红星新闻
2026-04-24 20:05:42
数十家车企集中“抢跑”!北京车展前夕:超40款新车上市,有品牌1天发5款

数十家车企集中“抢跑”!北京车展前夕:超40款新车上市,有品牌1天发5款

时代周报
2026-04-23 16:50:20
微软推员工“自愿买断式离职”约8750人符合条件!网友:年龄+工龄≥70,自己算一下

微软推员工“自愿买断式离职”约8750人符合条件!网友:年龄+工龄≥70,自己算一下

小星球探索
2026-04-24 20:41:59
2026-04-25 04:36:49
集智俱乐部 incentive-icons
集智俱乐部
科普人工智能相关知识技能
5786文章数 4670关注度
往期回顾 全部

头条要闻

欧盟公布制裁中国企业和个人名单 中方回应

头条要闻

欧盟公布制裁中国企业和个人名单 中方回应

体育要闻

上海男篮23连胜+主场全胜 姚明之后最强一季

娱乐要闻

停工16个月!赵露思证实接拍新剧

财经要闻

LG财阀内斗:百亿美元商业帝国争夺战

科技要闻

DeepSeek V4牵手华为,价格依然"屠夫级"

汽车要闻

零跑Lafa5 Ultra北京车展上市:11.88-12.48万

态度原创

房产
时尚
健康
游戏
亲子

房产要闻

新一轮教育大爆发来了!海口,开始疯狂建学校!

今日热点:爱奇艺回应暂停页面广告争议;经纪公司否认THEBOYZ解约成功……

干细胞如何让烧烫伤皮肤"再生"?

《光与影:33号远征队》发售一周年 销量破800万

亲子要闻

小狮子也只是个大宝宝呀,看到小朋友的车车满眼羡慕

无障碍浏览 进入关怀版