创建定向随机图,指定幂律度分布的α

时间:2014-10-20 07:04:38

标签: r igraph

我有一个真正的有向图,我知道节点和边的数量。度分布近似于幂律分布。现在我想创建一个随机图形,复制我的真实图形的以下特征:

  • 节点数
  • 边数
  • (类似)幂律的不确定性和出局 分配

我们假设g是10000个节点和30000个边缘的实际图表

exp.out = 2.2
exp.in = 2.3

set.seed(123)
g <- static.power.law.game(10000, 30000, exp.out, exp.in, multiple=TRUE)

但我不知道exp.outexp.in。然后我尝试使用plfit函数(downloaded here)来估计幂律指数:

plfit(degree(g, mode="in")+1)

# $xmin
# [1] 5
# 
# $alpha
# [1] 2.97
# 
# $D
# [1] 0.01735342

plfit(degree(g, mode="out")+1)

# $xmin
# [1] 5
# 
# $alpha
# [1] 2.83
# 
# $D
# [1] 0.01589222

然后我从中导出我的分布函数(分别用于indegree和outdegree):

  • p(x)~x ^ -2.97,对于x> = 5
  • p(x)~x ^ -2.83,对于x> = 5

根据static.power.law.game

documentation
  

游戏只是适当地使用static.fitness.game   构建的健身向量。特别地,顶点i的适应度是   i ^( - alpha),其中alpha = 1 /(gamma-1),gamma是给定的指数   在参数

据我所知,复制我的alphas我应该分别作为gammas传递1.3367(2.97 = 1 /(x-1))和1.35336(2.83 = 1 /(x-1))。然后

set.seed(321)
random.g <- static.power.law.game(10000, 30000, 1.35336, 1.3367, multiple=TRUE)
# Error in .Call("R_igraph_static_power_law_game", no.of.nodes, no.of.edges,  : 
#                  At games.c:3748 : out-degree exponent must be >= 2, Invalid value

然而static.power.law.game仅使度数指数高于或等于2这一事实让我觉得我可能错过了一些东西......

1 个答案:

答案 0 :(得分:0)

exp_outexp_in应该只是out-degree和in-degree分布的期望指数,不需要对从{{1}获得的指数进行任何转换}。但请注意,由于尺寸效应有限,您不太可能恢复“观察到的”指数