# transitivity

##### Transitivity of a graph

Transitivity measures the probability that the adjacent vertices of a vertex are connected. This is sometimes also called the clustering coefficient.

- Keywords
- graphs

##### Usage

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

##### Arguments

- graph
- The graph to analyze.
- type
- The type of the transitivity to calculate. Possible values: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- vids
- The vertex ids for the local transitivity will be
calculated. This will be ignored for global transitivity types.
The default value is
`NULL`

, in this case all vertices are considered. It is slightly faster to supply`NULL`

- weights
- Optional weights for weighted transitivity. It is
ignored for other transitivity measures. If it is
`NULL`

(the default) and the graph has a`weight`

edge attribute, then it is used automatically. - isolates
- Character scalar, defines how to treat vertices with
degree zero and one. If it is
then they local transitivity is reported as`NaN`

`NaN`

and they are not included in the averaging, for the transitivity

##### Details

Note that there are essentially two classes of transitivity measures, one is a vertex-level, 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 vertex-level quantity, its formula is

$$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$ is the strength of vertex $i$, see
`graph.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.

##### Value

- For
a single number, or`global`

`NaN`

if there are no connected triples in the graph.For

a vector of transitivity scores, one for each vertex in`local`

.`vids`

##### concept

- Transitivity
- Clustering coefficient

##### References

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)

##### Examples

```
g <- graph.ring(10)
transitivity(g)
g2 <- erdos.renyi.game(1000, 10/1000)
transitivity(g2) # this is about 10/1000
# Weighted version, the figure from the Barrat paper
gw <- graph.formula(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 <- erdos.renyi.game(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))
```

*Documentation reproduced from package igraph, version 0.6.5-2, License: GPL (>= 2)*