我有一个无向图(蛋白质 - 蛋白质相互作用网络,PPi),我知道它的度分布近似于幂律分布。我想创建1000个随机图,复制节点数,边数和"类似"幂律法外分布。
我的真实图g.lcc
有:
> g.lcc
#IGRAPH UN-- 12551 166189 --
#+ attr: name (v/c), V3 (e/n)
到目前为止我做的是:
#Calculate the alpha for my distribution
alpha <- power.law.fit(degree(g.lcc, mode="out"))
#$continuous
#[1] FALSE
#$alpha
#[1] 4.529602
#$xmin
#[1] 178
#$logLik
#[1] -1123.405
#$KS.stat
#[1] 0.0446421
#$KS.p
#[1] 0.7825008
然后我使用statitc.power.law.game
使用exp.out
生成的alpha power.law.fit
运行random.g <- static.power.law.game(12551, 166189, 4.53, exponent.in=-1, finite.size.correction=T)
:
{{1}}
然而,当我这样做时,这两个发行版甚至不相似......
任何帮助??
P.S用real.ppi和random.g附上两张图片
答案 0 :(得分:2)
您如何知道PPI网络的学位分布近似于幂律?它也可以是任何其他胖尾分布。此外,得到的幂律拟合的$xmin
值表示最佳拟合是通过在= 178处的较低截止值实现的,并且在178以下的度数处发生的任何值都不是通过该方法拟合的指数来近似。 p>
如果您想创建一个随机网络与完全相同的度数分布,您可以尝试使用degree.sequence.game
从头开始生成一个(确保使用{{ 1}}或method="vl"
如果要避免同一对节点之间有多条边),或使用method="simple.no.multiple
重写图形的边缘。
反电力法,我建议阅读this paper关于经验数据中类似幂律的分布。