# how to determine efficiency centrality of a node in Matlab

12 views (last 30 days)
Deepthi B on 12 Jun 2021
Commented: Deepthi B on 14 Jun 2021
Hi,
Is there any toolbox or code for determing the efficiency centrality of a node in network?

Steven Lord on 12 Jun 2021
Build a graph or digraph representation of your network and call centrality on it. Depending on how you define "efficiency" you may want to specify one of the types of centrality. See the description of the type input argument on the documentation page for more information.

Christine Tobler on 14 Jun 2021
Edited: Christine Tobler on 14 Jun 2021
There isn't an efficiency centrality implemented in MATLAB. Based on the paper I quickly read, it seems you would best compute this using
G = graph(1, 2:5);
n = numnodes(G);
D = 1./distances(G);
D(1:n+1:end) = 0; % Set diagonal to zero
P = sum(D, 'all') / n / (n-1);
c = zeros(n, 1);
for i=1:n
Gi = rmnode(G, i);
D = 1./distances(Gi);
D(1:n:end) = 0; % Set diagonal to zero
Pi = sum(D, 'all') / (n-1) / (n-2);
c(i) = (P - Pi) / P;
end
c
c = 5×1
1.0000 -0.0714 -0.0714 -0.0714 -0.0714
Please verify this matches the definition of efficiency centrality you're looking for, since there seem to be modified versions described.
There might be more efficient implementations than this, but I didn't find any paper mentioning a specific algorithm to be used - and this matches the definitions in the paper.
Deepthi B on 14 Jun 2021
No Sir not for the same graph I tried for the network in this paper