Use this if you are using igraph from R
transitivity {igraph}  R Documentation 
Transitivity measures the probability that the adjacent vertices of a vertex are connected. This is sometimes also called the clustering coefficient.
transitivity(
graph,
type = c("undirected", "global", "globalundirected", "localundirected", "local",
"average", "localaverage", "localaverageundirected", "barrat", "weighted"),
vids = NULL,
weights = NULL,
isolates = c("NaN", "zero")
)
graph 
The graph to analyze. 
type 
The type of the transitivity to calculate. Possible values:

vids 
The vertex ids for the local transitivity will be calculated.
This will be ignored for global transitivity types. The default value is

weights 
Optional weights for weighted transitivity. It is ignored for
other transitivity measures. If it is 
isolates 
Character scalar, defines how to treat vertices with degree
zero and one. If it is ‘ 
Note that there are essentially two classes of transitivity measures, one is a vertexlevel, the other a graph level property.
There are several generalizations of transitivity to weighted graphs, here we use the definition by A. Barrat, this is a local vertexlevel quantity, its formula is
C_i^w=\frac{1}{s_i(k_i1)}\sum_{j,h}\frac{w_{ij}+w_{ih}}{2}a_{ij}a_{ih}a_{jh}
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 notweighted 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.
For ‘global
’ a single number, or NaN
if there
are no connected triples in the graph.
For ‘local
’ a vector of transitivity scores, one for each
vertex in ‘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 PastorSatorras, 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(AB:C:D:E, BC:D, CD)
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))