R igraph 手册页

如果您从 R 中使用 igraph,请使用此选项

transitivity {igraph}R 文档

图的传递性

描述

传递性衡量一个顶点的相邻顶点相互连接的概率。这有时也被称为聚类系数。

用法

transitivity(
  graph,
  type = c("undirected", "global", "globalundirected", "localundirected", "local",
    "average", "localaverage", "localaverageundirected", "barrat", "weighted"),
  vids = NULL,
  weights = NULL,
  isolates = c("NaN", "zero")
)

参数

要分析的图。

type

要计算的传递性类型。 可能的值

"global"

无向图的全局传递性。 这只是图中三角形和连通三元组的数量之比。 在有向图中,边方向被忽略。

"local"

无向图的局部传递性。 它是针对 vids 参数中给出的每个顶点计算的。 顶点的局部传递性是连接到顶点的三角形的数量与以该顶点为中心的三元组的数量之比。 在有向图中,边方向被忽略。

"undirected"

这与 global 相同。

"globalundirected"

这与 global 相同。

"localundirected"

这与 local 相同。

"barrat"

由 A. Barrat 定义的加权传递性。 详见下文。

"weighted"

barrat 相同。

vids

将计算局部传递性的顶点 ID。 这将被全局传递性类型忽略。 默认值为 NULL,在这种情况下,将考虑所有顶点。 在这里提供 NULLV(graph) 稍微快一些。

weights

加权传递性的可选权重。 对于其他传递性度量,它将被忽略。 如果它是 NULL(默认值)并且图具有 weight 边属性,则会自动使用它。

isolates

字符标量,定义如何处理度数为零和一的顶点。 如果它是 'NaN',那么它们的局部传递性将被报告为 NaN,并且它们不包含在平均值中,对于计算平均值的传递性类型。 如果没有度数为 2 或更高的顶点,则平均值仍将导致 NaN。 如果它是 'zero',那么我们将为它们报告 0 传递性,并且如果计算平均值,它们将包含在平均值中。

详细信息

请注意,传递性度量基本上有两类,一类是顶点级别的,另一类是图级别的属性。

传递性有几种推广到加权图的方法,这里我们使用 A. Barrat 的定义,这是一个局部顶点级别量,其公式为

C_i^w=\frac{1}{s_i(k_i-1)}\sum_{j,h}\frac{w_{ij}+w_{ih}}{2}a_{ij}a_{ih}a_{jh}

s_i 是顶点 i 的强度,参见 strengtha_{ij} 是邻接矩阵的元素,k_i 是顶点度,w_{ij} 是权重。

如果所有边权重都相同,则此公式会返回正常的非加权局部传递性。

barrat 类型的传递性不适用于具有多重和/或循环边的图。 如果要为有向图计算它,请首先使用 collapse 模式调用 as.undirected

对于 'global',如果图中没有连接的三元组,则为单个数字或 NaN

对于 'local',一个传递性得分向量,每个 'vids' 中的顶点一个。

作者

Gabor Csardi csardi.gabor@gmail.com

参考

Wasserman, S., and Faust, K. (1994). Social Network Analysis: Methods and Applications. Cambridge: Cambridge University Press.

Alain Barrat, Marc Barthelemy, Romualdo Pastor-Satorras, Alessandro Vespignani: The architecture of complex weighted networks, Proc. Natl. Acad. Sci. USA 101, 3747 (2004)

示例


g <- make_ring(10)
transitivity(g)
g2 <- sample_gnp(1000, 10/1000)
transitivity(g2)   # this is about 10/1000

# Weighted version, the figure from the Barrat paper
gw <- graph_from_literal(A-B:C:D:E, B-C:D, C-D)
E(gw)$weight <- 1
E(gw)[ V(gw)[name == "A"] %--% V(gw)[name == "E" ] ]$weight <- 5
transitivity(gw, vids="A", type="local")
transitivity(gw, vids="A", type="weighted")

# Weighted reduces to "local" if weights are the same
gw2 <- sample_gnp(1000, 10/1000)
E(gw2)$weight <- 1
t1 <- transitivity(gw2, type="local")
t2 <- transitivity(gw2, type="weighted")
all(is.na(t1) == is.na(t2))
all(na.omit(t1 == t2))


[包 igraph 版本 1.3.5 索引]