`R/measure_centrality.R`

`eigenv_centrality.Rd`

Measures of eigenvector-like centrality and centralisation

```
node_eigenvector(.data, normalized = TRUE, scale = FALSE)
node_power(.data, normalized = TRUE, scale = FALSE, exponent = 1)
node_alpha(.data, alpha = 0.85)
node_pagerank(.data)
network_eigenvector(.data, normalized = TRUE)
tie_eigenvector(.data, normalized = TRUE)
```

- .data
An object of a

`{manynet}`

-consistent class:matrix (adjacency or incidence) from

`{base}`

Redgelist, a data frame from

`{base}`

R or tibble from`{tibble}`

igraph, from the

`{igraph}`

packagenetwork, from the

`{network}`

packagetbl_graph, from the

`{tidygraph}`

package

- normalized
Logical scalar, whether the centrality scores are normalized. Different denominators are used depending on whether the object is one-mode or two-mode, the type of centrality, and other arguments.

- scale
Logical scalar, whether to rescale the vector so the maximum score is 1.

- exponent
Decay rate for the Bonacich power centrality score.

- alpha
A constant that trades off the importance of external influence against the importance of connection. When \(\alpha = 0\), only the external influence matters. As \(\alpha\) gets larger, only the connectivity matters and we reduce to eigenvector centrality. By default \(\alpha = 0.85\).

A numeric vector giving the eigenvector centrality measure of each node.

A numeric vector giving each node's power centrality measure.

We use `{igraph}`

routines behind the scenes here for consistency and because they are often faster.
For example, `igraph::eigencentrality()`

is approximately 25% faster than `sna::evcent()`

.

`node_eigenvector()`

: Calculate the eigenvector centrality of nodes in a network`node_power()`

: Calculate the Bonacich, beta, or power centrality of nodes in a network`node_alpha()`

: Calculate the alpha or Katz centrality of nodes in a network`node_pagerank()`

: Calculate the pagerank centrality of nodes in a network`network_eigenvector()`

: Calculate the eigenvector centralization for a network`tie_eigenvector()`

: Calculate the eigenvector centrality of edges in a network

Eigenvector centrality operates as a measure of a node's influence in a network. The idea is that being connected to well-connected others results in a higher score. Each node's eigenvector centrality can be defined as: $$x_i = \frac{1}{\lambda} \sum_{j \in N} a_{i,j} x_j$$ where \(a_{i,j} = 1\) if \(i\) is linked to \(j\) and 0 otherwise, and \(\lambda\) is a constant representing the principal eigenvalue. Rather than performing this iteration, most routines solve the eigenvector equation \(Ax = \lambda x\).

Power or beta (or Bonacich) centrality

Alpha or Katz (or Katz-Bonacich) centrality operates better than eigenvector centrality for directed networks. Eigenvector centrality will return 0s for all nodes not in the main strongly-connected component. Each node's alpha centrality can be defined as: $$x_i = \frac{1}{\lambda} \sum_{j \in N} a_{i,j} x_j + e_i$$ where \(a_{i,j} = 1\) if \(i\) is linked to \(j\) and 0 otherwise, \(\lambda\) is a constant representing the principal eigenvalue, and \(e_i\) is some external influence used to ensure that even nodes beyond the main strongly connected component begin with some basic influence. Note that many equations replace \(\frac{1}{\lambda}\) with \(\alpha\), hence the name.

For example, if \(\alpha = 0.5\), then each direct connection (or alter) would be worth \((0.5)^1 = 0.5\), each secondary connection (or tertius) would be worth \((0.5)^2 = 0.25\), each tertiary connection would be worth \((0.5)^3 = 0.125\), and so on.

Rather than performing this iteration though, most routines solve the equation \(x = (I - \frac{1}{\lambda} A^T)^{-1} e\).

Bonacich, Phillip. 1991.
“Simultaneous Group and Individual Centralities.”
*Social Networks* 13(2):155–68.
doi:10.1016/0378-8733(91)90018-O
.

Bonacich, Phillip. 1987.
“Power and Centrality: A Family of Measures.”
*The American Journal of Sociology*, 92(5): 1170–82.
doi:10.1086/228631
.

Katz, Leo 1953.
"A new status index derived from sociometric analysis".
*Psychometrika*. 18(1): 39–43.

Bonacich, P. and Lloyd, P. 2001.
“Eigenvector-like measures of centrality for asymmetric relations”
*Social Networks*. 23(3):191-201.

Brin, Sergey and Page, Larry. 1998.
"The anatomy of a large-scale hypertextual web search engine".
*Proceedings of the 7th World-Wide Web Conference*. Brisbane, Australia.

Other measures:
`between_centrality`

,
`close_centrality`

,
`closure`

,
`cohesion()`

,
`degree_centrality`

,
`diffusion`

,
`features`

,
`heterogeneity`

,
`hierarchy`

,
`holes`

Other centrality:
`between_centrality`

,
`close_centrality`

,
`degree_centrality`

```
node_eigenvector(mpn_elite_mex)
#> Trevino Madero Carranza Aguilar Obregon Calles `Aleman Gonzalez` `Portes Gil`
#> 1 0.081 0.109 0.166 0.17 0.13 0.138 0.14 0.208
#> # ... with 27 more values from this nodeset unprinted. Use `print(..., n = Inf)` to print all values.
node_eigenvector(ison_southern_women)
#> EVELYN LAURA THERESA BRENDA CHARLOTTE FRANCES ELEANOR PEARL RUTH VERNE MYRA
#> 1 0.423 0.397 0.472 0.402 0.227 0.287 0.319 0.264 0.337 0.327 0.292
#> # ... with 7 more values from this nodeset unprinted. Use `print(..., n = Inf)` to print all values.
#> E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13
#> 1 0.215 0.228 0.356 0.261 0.431 0.447 0.522 0.639 0.505 0.323 0.159 0.361 0.251
#> # ... with 1 more values from this nodeset unprinted. Use `print(..., n = Inf)` to print all values.
node_power(ison_southern_women, exponent = 0.5)
#> EVELYN LAURA THERESA BRENDA CHARLOTTE FRANCES ELEANOR PEARL RUTH VERNE MYRA
#> 1 -1.44 -1.38 -1.44 -1.38 -1.00 -1.38 -1.38 -1.52 -1.44 -1.44 -1.52
#> # ... with 7 more values from this nodeset unprinted. Use `print(..., n = Inf)` to print all values.
#> E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13
#> 1 -1.32 -1.32 -1.32 -1.32 -1.32 -1.62 -1.62 -1.62 -1.62 -1.32 -1.32 -1.32 -1.32
#> # ... with 1 more values from this nodeset unprinted. Use `print(..., n = Inf)` to print all values.
network_eigenvector(mpn_elite_mex)
#> [1] 0.63
network_eigenvector(ison_southern_women)
#> Mode 1 Mode 2
#> 0.0849 0.2630
tie_eigenvector(ison_adolescents)
#> `Betty-Sue` `Sue-Alice` `Alice-Jane` `Sue-Dale` `Alice-Dale` `Jane-Dale`
#> 1 0.366 0.638 0.447 0.524 0.541 0.333
#> # ... with 4 more values from this nodeset unprinted. Use `print(..., n = Inf)` to print all values.
```