我有一个无向图(蛋白质相互作用网络,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
然后我使用由 power.law.fit
生成的 alpha 作为 exp.out
,来运行 statitc.power.law.game
:
random.g <- static.power.law.game(12551, 166189, 4.53, exponent.in=-1, finite.size.correction=T)
然而,当我这样做时,这两个分布并不相似...有什么帮助吗?顺便附上两张图片,一张是随机图形,另一张是真实PPI。
$xmin
值表明,最佳拟合是通过在度数=178处进行下限截断来实现的,而在178度以下发生的任何情况都不能用该方法拟合的指数来近似描述。 - Tamásdegree.sequence.game
即可获得与您的图形具有完全相同度数分布的随机图形。或者使用rewire.edges
重连您的图形的边缘(虽然我会选择degree.sequence.game
)。关于幂律,我建议先阅读这篇文章: http://arxiv.org/abs/0706.1062.pdf。 - Tamás