Eigenvector Centrality

475 views
Skip to first unread message

Marc Gerritzen

unread,
Oct 1, 2011, 11:25:00 AM10/1/11
to visone-users
Hello,
currently I am trying to implement the calculation of eigenvector
centralities in Matlab and cross-checking my results with visone. A
specific problem of mine is, that my network of interest is
disconnected. I am therefore not too sure if it makes sense in the
first place to compute eigenvector centralities and if there exists
some robust method?

Nevertheless, I am computing the centralities in Matlab by taking the
eigenvector of the adjacency matrix corresponding to the largest
eigenvalue. However, I am not arriving at the same results as when I
am computing the centralities using visone...
Does anybody know how visone is calculating the eigenvector
centralities? Unfortunately, there is no documentation in the wiki on
that.

Thanks in advance and kind regards
Marc Gerritzen

Uwe Nagel

unread,
Oct 4, 2011, 10:16:56 AM10/4/11
to visone...@googlegroups.com
Hi,

about the problem of disconnected networks:
The eigenvector corresponding to the largest eigenvalue of such an
adjacency matrix would usually have non-zero values only for one of the
components and thus be not very helpful as centrality measure.

This can be repaired by computing the eigenvectors of the individual
components, leaving the problem of recombination into a single vector.

The visone approach to this recombination problem is as follows:

let
* P be the number of weakly connected components in the graph
* p be the number of nodes within the component of the node we are
considering
* n be the total number of nodes in the graph and
* v be the value of the current node on the first eigenvector of its
component (the vector being normalized by euclidean norm)

then the value of our node in a first combination is:
v*(p-1)/(n-P)

the resulting vector is finally normalized to unit length.
But of course, as long as your graph is connected, the result is simply
the normalized first eigenvector.
So for comparison, you could simply create an individual graph for each
component or use the R-console: if you send your graph there with name
"g", then the command
eigen(get.adjacency(g))$vector[,1]

gives you the first eigenvector (replace 1 by 2 for second and so on).

hope this helps
Uwe

Reply all
Reply to author
Forward
0 new messages