R: Calculate node and edge centrality

centrality {tidygraph} | R Documentation

## Calculate node and edge centrality

### Description

The centrality of a node measures the importance of node in the network. As the concept of importance is ill-defined and dependent on the network and the questions under consideration, many centrality measures exist. `tidygraph` provides a consistent set of wrappers for all the centrality measures implemented in `igraph` for use inside `dplyr::mutate()` and other relevant verbs. All functions provided by `tidygraph` have a consistent naming scheme and automatically calls the function on the graph, returning a vector with measures ready to be added to the node data. Further `tidygraph` provides access to the `netrankr` engine for centrality calculations and define a number of centrality measures based on that, as well as provide a manual mode for specifying more-or-less any centrality score.

### Usage

    centrality_alpha(
      weights = NULL,
      alpha = 1,
      exo = 1,
      tol = 1e-07,
      loops = FALSE
    )

    centrality_authority(
      weights = NULL,
      scale = TRUE,
      options = igraph::arpack_defaults
    )

    centrality_betweenness(
      weights = NULL,
      directed = TRUE,
      cutoff = NULL,
      nobigint = TRUE,
      normalized = FALSE
    )

    centrality_power(exponent = 1, rescale = FALSE, tol = 1e-07, loops = FALSE)

    centrality_closeness(
      weights = NULL,
      mode = "out",
      normalized = FALSE,
      cutoff = NULL
    )

    centrality_eigen(
      weights = NULL,
      directed = FALSE,
      scale = TRUE,
      options = igraph::arpack_defaults
    )

    centrality_hub(weights = NULL, scale = TRUE, options = igraph::arpack_defaults)

    centrality_pagerank(
      weights = NULL,
      directed = TRUE,
      damping = 0.85,
      personalized = NULL
    )

    centrality_subgraph(loops = FALSE)

    centrality_degree(
      weights = NULL,
      mode = "out",
      loops = TRUE,
      normalized = FALSE
    )

    centrality_edge_betweenness(weights = NULL, directed = TRUE, cutoff = NULL)

    centrality_manual(relation = "dist_sp", aggregation = "sum", ...)

    centrality_closeness_harmonic()

    centrality_closeness_residual()

    centrality_closeness_generalised(alpha)

    centrality_integration()

    centrality_communicability()

    centrality_communicability_odd()

    centrality_communicability_even()

    centrality_subgraph_odd()

    centrality_subgraph_even()

    centrality_katz(alpha = NULL)

    centrality_betweenness_network(netflowmode = "raw")

    centrality_betweenness_current()

    centrality_betweenness_communicability()

    centrality_betweenness_rsp_simple(rspxparam = 1)

    centrality_betweenness_rsp_net(rspxparam = 1)

    centrality_information()

    centrality_decay(alpha = 1)

    centrality_random_walk()

    centrality_expected()

### Arguments

`weights` | The weight of the edges to use for the calculation. Will be evaluated in the context of the edge data.
`alpha` | Relative importance of endogenous vs exogenous factors (`centrality_alpha`), the exponent to the power transformation of the distance metric (`centrality_closeness_generalised`), the base of power transformation (`centrality_decay`), or the attenuation factor (`centrality_katz`)
`exo` | The exogenous factors of the nodes. Either a scalar or a number number for each node. Evaluated in the context of the node data.
`tol` | Tolerance for near-singularities during matrix inversion
`loops` | Should loops be included in the calculation
`scale` | Should the output be scaled between 0 and 1
`options` | Settings passed on to `igraph::arpack()`
`directed` | Should direction of edges be used for the calculations
`cutoff` | maximum path length to use during calculations
`nobigint` | Should big integers be avoided during calculations
`normalized` | Should the output be normalized
`exponent` | The decay rate for the Bonacich power centrality
`rescale` | Should the output be scaled to sum up to 1
`mode` | How should edges be followed. Ignored for undirected graphs
`damping` | The damping factor of the page rank algorithm
`personalized` | The probability of jumping to a node when abandoning a random walk. Evaluated in the context of the node data.
`relation` | The indirect relation measure type to be used in `netrankr::indirect_relations`
`aggregation` | The aggregation type to use on the indirect relations to be used in `netrankr::aggregate_positions`
`...` | Arguments to pass on to `netrankr::indirect_relations`
`netflowmode` | The return type of the network flow distance, either `'raw'` or `'frac'`
`rspxparam` | inverse temperature parameter

### Value

A numeric vector giving the centrality measure of each node.

### Functions

- `centrality_alpha`: Wrapper for `igraph::alpha_centrality()`

- `centrality_authority`: Wrapper for `igraph::authority_score()`

- `centrality_betweenness`: Wrapper for `igraph::betweenness()` and `igraph::estimate_betweenness()`

- `centrality_power`: Wrapper for `igraph::power_centrality()`

- `centrality_closeness`: Wrapper for `igraph::closeness()` and `igraph::estimate_closeness()`

- `centrality_eigen`: Wrapper for `igraph::eigen_centrality()`

- `centrality_hub`: Wrapper for `igraph::hub_score()`

- `centrality_pagerank`: Wrapper for `igraph::page_rank()`

- `centrality_subgraph`: Wrapper for `igraph::subgraph_centrality()`

- `centrality_degree`: Wrapper for `igraph::degree()` and `igraph::strength()`

- `centrality_edge_betweenness`: Wrapper for `igraph::edge_betweenness()`

- `centrality_manual`: Manually specify your centrality score using the `netrankr` framework (`netrankr`)

- `centrality_closeness_harmonic`: centrality based on inverse shortest path (`netrankr`)

- `centrality_closeness_residual`: centrality based on 2-to-the-power-of negative shortest path (`netrankr`)

- `centrality_closeness_generalised`: centrality based on alpha-to-the-power-of negative shortest path (`netrankr`)

- `centrality_integration`: centrality based on 1 - (x - 1)/max(x) transformation of shortest path (`netrankr`)

- `centrality_communicability`: centrality an exponential tranformation of walk counts (`netrankr`)

- `centrality_communicability_odd`: centrality an exponential tranformation of odd walk counts (`netrankr`)

- `centrality_communicability_even`: centrality an exponential tranformation of even walk counts (`netrankr`)

- `centrality_subgraph_odd`: subgraph centrality based on odd walk counts (`netrankr`)

- `centrality_subgraph_even`: subgraph centrality based on even walk counts (`netrankr`)

- `centrality_katz`: centrality based on walks penalizing distant nodes (`netrankr`)

- `centrality_betweenness_network`: Betweenness centrality based on network flow (`netrankr`)

- `centrality_betweenness_current`: Betweenness centrality based on current flow (`netrankr`)

- `centrality_betweenness_communicability`: Betweenness centrality based on communicability (`netrankr`)

- `centrality_betweenness_rsp_simple`: Betweenness centrality based on simple randomised shortest path dependencies (`netrankr`)

- `centrality_betweenness_rsp_net`: Betweenness centrality based on net randomised shortest path dependencies (`netrankr`)

- `centrality_information`: centrality based on inverse sum of resistance distance between nodes (`netrankr`)

- `centrality_decay`: based on a power transformation of the shortest path (`netrankr`)

- `centrality_random_walk`: centrality based on the inverse sum of expected random walk length between nodes (`netrankr`)

- `centrality_expected`: Expected centrality ranking based on exact rank probability (`netrankr`)

### Examples

    create_notable('bull') %>%
      activate(nodes) %>%
      mutate(importance = centrality_alpha())

    # Most centrality measures are for nodes but not all
    create_notable('bull') %>%
      activate(edges) %>%
      mutate(importance = centrality_edge_betweenness())

[Package tidygraph version 1.2.0 Index]