Hi, I would like to use eigen_centrality in R with a weighed network, setting weights = TRUE. Which formula / algorithm does eigen_centrality use? Is there a reference paper? I couldn’t find the exact documentation for weighted networks. Thank you! Natalie
This discussion might be helpful: Help seeking on calculating betweenness centrality with valued ties
Never mind, I misread your question and thought you were asking about betweenness centrality.
Eigenvector centrality is just the leading eigenvector of the adjacency matrix (i.e. one value for each vertex). To learn more about it, I recommend Newman’s book,
There are some subtleties to defining eigenvector centrality, or rather the definition of the adjacency matrix, and the documentation of some software packages are not entirely precise. We tried to give a full description in the documentation of igraph’s C core, which you find here:
https://igraph.org/c/doc/igraph-Structural.html#igraph_eigenvector_centrality
Please read it in detail.
In particular, pay attention to the handling of non-simple graphs:
- In the adjacency matrix, A_{ij} is the number of connections between vertices i and j if i \neq j. Some other software ignores multi-edges.
- A_{ii} denotes twice the number of self-loops in undirected graphs. Some other software uses it once, or uses just 1 in all cases.
When the graph is weighted, the adjacency matrix elements are the edge weights. Weights of parallel edges are added up. Weights of self-loops are multiplied by two in undirected graphs.
The current release of R/igraph may not yet have caught up with the definition I describe above, but the next release will follow it precisely. If you are working with simple graphs (i.e. no self-loops, no multi-edges) then there isn’t anything to pay special attention to.
As for the algorithm, the eigenproblem is solved with the ARPACK library.
This is more efficient than the naive iterative algorithm (power iteration) that you’ll find e.g. in Newman’s book.
How does igraph incorporate weights into the computation of eigenvector centrality?
Is it as “simple” as taking matrix A to be the weighted matrix instead of the Adjacency matrix?
I haven’t been able to find a detailed explanation of it.
Yes, that’s what it does.
I clarified the docs a bit. Hopefully this will propagate up to the docs of high-level interfaces.