为 r 中的 barabasi 无标度模型设置 out.seq 参数
Setting out.seq parameter for barabasi scale free models in r
我有一个无向图。我想为此图创建巴拉巴西的无标度网络模型。我想传递 out.dist 参数来设置网络中的边数。但是,如果我将在 out.seq 中传递我的度数向量,那么无向网络中的度数之和将是边数的两倍。那么当我的网络是 undirected.My r 脚本是
时如何设置这个参数
library(igraph)
gtest <- graph.formula(A:B - A:B, X:Z - X:Y - X:B, C:Z , C:X ,A:C - A:C)
plot(gtest)
g_scale_ex <- ba.game(6 , out.dist = degree(gtest) , directed = F)
g_scale_ex 应该有 14 个边,而应该是 7 个边。
看起来你想要两件事之一。如果你想要精确的度数序列,那么你最好使用(使用新的 igraph 函数名称):
g <- sample_degseq(degree(gtest))
gsize(g) # Number of edges
# 7
gorder(g) # Number of nodes
# 6
如果您想要一个 Barabasi 优先连接网络,那么指定边的精确数量会有点困难。我回答了一个 ,其中有一个小函数可以生成正确的 out.seq
参数。
genOutSeq <- function(n, m) {
n <- n-1 # Shift it along
rem <- m %% n
c(0, rep(m%/%n + 1, rem), rep(m%/%n, n - rem))
}
set.seed(11)
g <- sample_pa(gorder(gtest), power = 1,
out.seq = genOutSeq(gorder(gtest), gsize(gtest)),
algorithm = "psumtree-multiple", directed = FALSE)
这将创建正确数量的边,但有些是多条边。默认算法不会创建多边,但可能不会创建完全正确的数字。
set.seed(11)
g <- sample_pa(gorder(gtest), power = 1,
out.seq = genOutSeq(gorder(gtest), gsize(gtest)),
directed = FALSE)
gsize(g)
# 6
据我所知,在您找到引号之前,没有办法继续添加边缘。在我链接到的答案中,我只是添加了一些随机边,因为只要您的图形不太密集,它通常不会那么多。
我有一个无向图。我想为此图创建巴拉巴西的无标度网络模型。我想传递 out.dist 参数来设置网络中的边数。但是,如果我将在 out.seq 中传递我的度数向量,那么无向网络中的度数之和将是边数的两倍。那么当我的网络是 undirected.My r 脚本是
时如何设置这个参数library(igraph)
gtest <- graph.formula(A:B - A:B, X:Z - X:Y - X:B, C:Z , C:X ,A:C - A:C)
plot(gtest)
g_scale_ex <- ba.game(6 , out.dist = degree(gtest) , directed = F)
g_scale_ex 应该有 14 个边,而应该是 7 个边。
看起来你想要两件事之一。如果你想要精确的度数序列,那么你最好使用(使用新的 igraph 函数名称):
g <- sample_degseq(degree(gtest))
gsize(g) # Number of edges
# 7
gorder(g) # Number of nodes
# 6
如果您想要一个 Barabasi 优先连接网络,那么指定边的精确数量会有点困难。我回答了一个 out.seq
参数。
genOutSeq <- function(n, m) {
n <- n-1 # Shift it along
rem <- m %% n
c(0, rep(m%/%n + 1, rem), rep(m%/%n, n - rem))
}
set.seed(11)
g <- sample_pa(gorder(gtest), power = 1,
out.seq = genOutSeq(gorder(gtest), gsize(gtest)),
algorithm = "psumtree-multiple", directed = FALSE)
这将创建正确数量的边,但有些是多条边。默认算法不会创建多边,但可能不会创建完全正确的数字。
set.seed(11)
g <- sample_pa(gorder(gtest), power = 1,
out.seq = genOutSeq(gorder(gtest), gsize(gtest)),
directed = FALSE)
gsize(g)
# 6
据我所知,在您找到引号之前,没有办法继续添加边缘。在我链接到的答案中,我只是添加了一些随机边,因为只要您的图形不太密集,它通常不会那么多。