我有一个使用 igraph 软件适合幂律的网络:
plf = power.law.fit(degree_dist, impelementation = "plfit")
plf 变量现在包含以下变量:
$continuous
[1] TRUE
$alpha
[1] 1.63975
$xmin
[1] 0.03
$logLik
[1] 4.037563
$KS.stat
[1] 0.1721117
$KS.p
[1] 0.9984284
igraph 手册解释了这些变量:
xmin = the lower bound for fitting the power-law
alpha = the exponent of the fitted power-law distribution
logLik = the log-likelihood of the fitted parameters
KS.stat = the test statistic of a Kolmogorov-Smirnov test that compares the fitted distribution with the input vector. Smaller scores denote better fit
KS.p = the p-value of the Kolmogorov-Smirnov test. Small p-values (less than 0.05) indicate that the test rejected the hypothesis that the original data could have been drawn from the fitted power-law distribution
我想对此幂律拟合进行“拟合优度”测试。但我不知道该怎么做,虽然我发现这个问题已经在在线论坛上提出过,但通常仍然没有答案。
我认为一种方法是做一个 chisq.test(x,y)。一个输入参数(比如 x)是 degree_dist 变量(观察到的网络度数分布)。另一个输入参数(比如 y)是拟合的幂律方程,它的形式应该是 P(k) = mk^a。
我不确定这是否是一种合理的方法,如果是,我需要有关如何构建拟合幂律方程的建议。
如果有帮助,我的网络的 degree_dist 是:
0.00 0.73 0.11 0.05 0.02 0.02 0.03 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 0.01
(这些是网络中 0-21 度发生的频率。(例如,73% 的节点具有 1 度,1% 的节点具有 21 度)。
** * ** * *** 编辑** * ** * ** * ****
我不确定上面使用 degree_dist 计算 plf 是否是错误的。如果是这样,我还使用网络中 100 个节点的度数运行相同的函数:
plf = power.law.fit(pure_deg, impelementation = "plfit")
其中,pure_deg 是:
21 7 5 6 17 3 6 6 2 5 4 3 7 4 3 2 2 2 2 3 2 3 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
这导致输出:
$continuous
[1] FALSE
$alpha
[1] 2.362445
$xmin
[1] 1
$logLik
[1] -114.6303
$KS.stat
[1] 0.02293443
$KS.p
[1] 1