1

我的目标是使用powerlaw python 包找到无标度网络与随机(非无标度)网络无法区分的点

正如他们的论文中所述,人们应该始终通过将其与另一个分布的拟合进行比较来确定幂律拟合的优劣。

我希望实现类似二项分布的东西来比较拟合优度,但事实并非如此。

例如,我尝试使用以下代码来区分明显无标度的网络和明显的非无标度网络(两者都具有相似数量的节点/边):

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 值)

我是从错误的角度解决这个问题,还是应该自己实现二项分布?

我在问,因为我不是统计专家,我可能看不到所有可用分布的重要性。但他们似乎未能通过这个基本示例。

4

0 回答 0