transitivity(graph, type = c("undirected", "global", "globalundirected",
"localundirected", "local", "average", "localaverage",
"localaverageundirected", "barrat", "weighted"), vids = NULL,
weights = NULL, isolates = c("NaN", "zero"))
NULL
, in this case all vertices are considered. It is slightly faster
to supply NULL
here thaNULL
(the default) and the
graph has a weight
edge attribute, then it is used automatically.NaN
NaN
and they are not included in the averaging, for the
transitivity types that cglobal
NaN
if there
are no connected triples in the graph.For local
vids
There are several generalizations of transitivity to weighted graphs, here we use the definition by A. Barrat, this is a local vertex-level quantity, its formula is
$s_i$ is the strength of vertex $i$, see
strength
, $a_{ij}$ are elements of the
adjacency matrix, $k_i$ is the vertex degree, $w_{ij}$
are the weights.
This formula gives back the normal not-weighted local transitivity if all the edge weights are the same.
The barrat
type of transitivity does not work for graphs with
multiple and/or loop edges. If you want to calculate it for a directed
graph, call as.undirected
with the collapse
mode first.
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))
Run the code above in your browser using DataLab