You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

幂律拟合曲线与数据点不重合的原因及可信度疑问

幂律拟合曲线偏离数据点的原因与结果可信度分析

问题背景

我尝试使用Alstott等人开发的powerlaw包对网络度分布数据进行幂律拟合,代码如下:

import networkx as nx
import powerlaw
import matplotlib.pyplot as plt

g = nx.powerlaw_cluster_graph(1000, 25, 0.9)

degrees = list(dict(g.degree).values())

fit = powerlaw.Fit(degrees, discrete=True)

fig, ax = plt.subplots(figsize = (10,10))

powerlaw.plot_pdf(degrees, color='r', marker = 'o', linestyle='', ax=ax) #plotting binned data points
fit.power_law.plot_pdf(color = 'darkblue', ax=ax) #plotting fitted curve

ax.set_xlabel('k', fontsize = 16)
ax.set_ylabel('P(k)', fontsize = 16)
ax.set_title('Degree Distribution of a Network', fontsize = 20)
ax.tick_params(labelsize = 12)
plt.text(0.05, 0.6, f'γ =  {round(fit.power_law.alpha, 2)}', transform=plt.gca().transAxes, fontsize=20, color='darkblue')
plt.text(0.05, 0.55, '$x_{min}$ = ' + f'{fit.power_law.xmin}', transform=plt.gca().transAxes, fontsize=20, color='darkblue')
plt.text(0.05, 0.50, f'KS Distance: {round(fit.power_law.D, 2)}', transform=plt.gca().transAxes, fontsize=20, color='darkblue')

结果显示蓝色拟合曲线与红色分箱数据点距离较远,Kolmogorov-Smirnov(KS)距离较低,且fit.noise_flag为false(拟合有效),但拟合曲线偏离所有数据点,请问该情况的原因是什么?拟合结果是否可信?

原因分析

  • 生成网络的分布特性不符:你使用的nx.powerlaw_cluster_graph生成的是Holme-Kim网络,属于广义聚类截断幂律网络,并非严格的无标度幂律分布。当参数p=0.9时,网络的聚类倾向极强,度分布会出现明显的截断特征,纯幂律模型无法匹配这类数据的整体分布。
  • xmin的自动选择逻辑:powerlaw包的Fit函数会自动筛选xmin,仅对x >= xmin的数据段进行幂律拟合。如果xmin取值过高,拟合曲线仅对应数据的尾部区间,而你绘制的是全范围的分箱数据点,视觉上自然会出现曲线与大部分数据偏离的情况。
  • 绘图与拟合的范围差异:powerlaw.plot_pdf绘制的是全量数据的分箱概率密度,而拟合曲线是基于xmin之后的局部数据生成的,两者覆盖的数据范围不一致,导致视觉上的偏离感。

拟合结果可信度判断

这个拟合结果仅对xmin之后的尾部数据段有参考价值,对整个度分布而言不可信:

  • 原网络的度分布是截断幂律,而非纯幂律,用纯幂律模型拟合本身就不符合数据的真实分布特性;
  • 低KS距离仅说明拟合在xmin限定的局部数据段上符合幂律,但无法代表整个网络的度分布特征。

内容的提问来源于stack exchange,提问作者Lifeisafartinthewind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:03:13