使用“相同”的幂律度数分布创建随机图

3

我有一个无向图(蛋白质相互作用网络,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ás
那么,创建近似于我的度分布的随机网络是不可能的吗?我应该使用degree.sequence.game来创建随机图吗?最后一个问题,我如何知道我的蛋白质相互作用网络近似于幂律分布而不是其他任何分布?非常感谢您提前的回答,@Tamás。 - user2380782
1
只需使用 degree.sequence.game 即可获得与您的图形具有完全相同度数分布的随机图形。或者使用 rewire.edges 重连您的图形的边缘(虽然我会选择 degree.sequence.game)。关于幂律,我建议先阅读这篇文章: http://arxiv.org/abs/0706.1062.pdf。 - Tamás
@Tamás,如果你把你的评论写成答案,我会给予奖励。 - user2380782
1个回答

3
你如何知道你的PPI网络的度分布近似于幂律分布?它也可能是任何其他重尾分布。此外,所得到的幂律拟合的$xmin值表明,最佳拟合是在度数=178处实现的,并且在178度以下发生的任何情况都不能用该方法拟合的指数来近似。
如果您想创建一个具有与您的图形完全相同的度分布的随机网络,则可以尝试使用degree.sequence.game从头开始生成一个(如果您想要避免在同一对节点之间产生多个边,请确保使用method="vl"method="simple.no.multiple),或使用rewire.edges重新编写您的图形的边缘。
关于幂律分布,我建议阅读this paper,了解实际数据中类似幂律的分布。

我认为重尾分布总是趋向于渐进地遵循幂律。也许更好的词应该是重尾分布。 - Peaceful

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接