我的目标是找到无标度网络与使用powerlaw python package
的随机(非规模)网络无法区分的地步如their paper所述,人们应该通过将幂律与其他分布的拟合进行比较来确定幂律的优点。
我希望能够实现像二分法分布这样的东西,以便比较拟合优度,但事实并非如此。
例如,我尝试使用以下代码来区分明显无标度的网络和明显无标度的网络(两者都具有相似数量的节点/边缘):
non_sf_graph = nx.gnp_random_graph(10000, 0.002)
sf_graph = nx.barabasi_albert_graph(10000, 10)
fitpl = powerlaw.Fit(list(sf_graph.degree().values()))
fitnpl = powerlaw.Fit(list(non_sf_graph.degree().values()))
for dist in fitpl.supported_distributions.keys():
print(dist)
fitpl.distribution_compare('power_law', dist)
fitnpl.distribution_compare('power_law', dist)
输出表明,没有一个实现的发行版提供了一个工具来辨别优先附件模型和gnp随机图:
lognormal
(-0.23698971255249646, 0.089194415705275421)
(-20.320811335334504, 3.9097599268295484e-92)
exponential
(511.41420648854108, 7.3934851812182895e-23)
(24.215231521373582, 3.7251410948652104e-08)
truncated_power_law
(3.3213949937049847e-06, 0.99794356568650555)
(3.1510369047360598e-07, 0.99936659460444144)
stretched_exponential
(16.756797270053454, 1.6505119872120265e-05)
(8.7110005915424153, 8.7224098659112012e-05)
lognormal_positive
(30.428201968820289, 1.7275238929002278e-07)
(6.7992592335974233, 5.4945477823229749e-06)
(第一个值的符号表示第一个(正)或第二个(负)分布是否更合适,第二个值是该决定重要性的p值)
我是从错误的角度解决这个问题,还是应该自己实施二项分布?
我问,因为我不是统计专家,我可能看不到所有可用发行版的重要性。但他们似乎没有通过这个基本的例子。