Find Bonacich alpha centrality scores of network positions
alpha.centrality calculates the alpha centrality of
some (or all) vertices in a graph.
alpha.centrality(graph, nodes=V(graph), alpha=1, loops=FALSE, exo=1, weights=NULL, tol=1e-7)
- The input graph, can be directed or undirected
- Vertex sequence, the vertices for which the alpha centrality values are returned. (For technical reasons they will be calculated for all vertices first, anyway.)
- Parameter specifying the relative importance of endogenous versus exogenous factors in the determination of centrality. See details below.
- Whether to eliminate loop edges from the graph before the calculation.
- The exogenous factors, in most cases this is either a constant -- the same factor for every node, or a vector giving the factor for every vertex. Note that long vectors will be truncated and short vectors will be replicated.
- Optional positive weight vector for calculating
weighted closeness. If the graph has a
weightedge attribute, then this is used by default.
- Tolerance for near-singularities during matrix inversion,
The alpha centrality measure can be considered as a generalization of eigenvector centerality to directed graphs. It was proposed by Bonacich in 2001 (see reference below).
The alpha centrality of the vertices in a graph is defined as the solution of the following matrix equation: $$x=\alpha A^T x+e,$$ where $A$ is the (not neccessarily symmetric) adjacency matrix of the graph, $e$ is the vector of exogenous sources of status of the vertices and $\alpha$ is the relative importance of the endogenous versus exogenous factors.
- A numeric vector contaning the centrality scores for the selected vertices.
Singular adjacency matrices cause problems for this algorithm, the routine may fail is certain cases.
Bonacich, P. and Paulette, L. (2001). ``Eigenvector-like measures of centrality for asymmetric relations'' Social Networks, 23, 191-201.
# The examples from Bonacich's paper g.1 <- graph( c(1,3,2,3,3,4,4,5)-1 ) g.2 <- graph( c(2,1,3,1,4,1,5,1)-1 ) g.3 <- graph( c(1,2,2,3,3,4,4,1,5,1)-1 ) alpha.centrality(g.1) alpha.centrality(g.2) alpha.centrality(g.3,alpha=0.5)