```
library(igraph)
<- function(net,
getNeutralityCentrality directed=FALSE,
standardized=FALSE) {
<- length(V(net))
l <- if(directed) 'in' else 'all'
m <- distances(net, mode=m)
dist ==0] <- NA
dist[dist<- apply(dist, 1, sd, TRUE)
res if(standardized==TRUE) {
<- diameter(net, directed = directed)
dia <- res/sd(1:(dia))
res
}return(res)
}
```

# Neutrality Centrality and structural bias in networks

Below is R code to compute the neutrality centrality.

Cite the page as: Kosch O. Neutrality Centrality and structural bias in networks. Oskar Kosch blog. http://oskarkosch.com/blog/neutrality-centrality-and-structural-bias-in-networks/. Published September 5, 2018.

Wayback permalink: https://web.archive.org/web/20180905235722/http://oskarkosch.com/neutrality-centrality-and-bias-in-networks.html

## Introduction - purpose of this measure

This is concept paper (understood as novel ideas presentation^{1}), and as such it is not deepened neither with multiple empirical cases, nor with sophisticated theoretical background. Instead, it presents an approach that first helped me with analysis of scientific publications co-citation network (to know which shouldn’t be biased - and in economics this is great deal!), and then evolved to idea of broader usage, with its possible applications in consensus decision making, unbiased location selection or every other situation that would require lowest structural bias of solution (maybe some social sciences problems?).

## Neutrality Centrality formula

Given connected graph, equation for neutrality centrality (\(C_N\)) is as follows: \[C_N(v_i)=\sqrt{\frac{1}{\mid V \setminus \left\{ {v_i}\right\} \mid}\sum_{j=1, j \neq i}^{\mid V \mid}[d(v_i,v_j)-\overline{d}(v_i)]^2}\] where \(V\) is set of all vertices in network, \(d(v_i,v_j)\) is distance between vertex \(v_i\) and vertex \(v_j\) and \(\overline{d}(v_i)\) is mean distance of vertex \(i\) to other vertices.

Take an example of star typology network: The perfect non-biased vertex in that example is node no 1, and this is quite obvious; being equally connected to other nodes, there is no suspicion of bias. This is self explanatory. Other nodes are single-edged, connected with central node - and there is not a lot of bias, since they wouldn’t even be clustered separately (see Figure 1).

Neutrality centrality of nodes is presented in Table 1.

measure \ node | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|

neutrality | 0 | 0.408 | 0.408 | 0.408 | 0.408 | 0.408 | 0.408 |

standardized.neutrality | 0 | 0.577 | 0.577 | 0.577 | 0.577 | 0.577 | 0.577 |

*Source: author*

Next example is connected to the problem of normalization / standarization. Normalization in style that \(C_N \in <0;1>\), was not found. What was observed, is the fact that standarization based on connected graph diameter is possible and effective in terms of comparing graphs’ structure. \(D\) stands for diameter, and the formula is: \[C_{N_S}(v_i)=\frac{C_N(v_i)}{\sqrt{\frac{1}{D}\sum_{z=1}^{D}}(z-\overline{z})^2}\] Of course, both standardized and non-standardized version may be calculated in case of weighted graph, if we adjust that while calculating distances. This is inspired by graph with highest diameter possible, the one that is somewhat one-dimensional (see Figure 2):

And, as can be seen (in Table 2), standard deviation from opposite vertices is equal to values achieved with same diameter, so standardized value is equal to 1.

measure \ node | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|

neutrality | 1.87 | 1.633 | 1.169 | 0.894 | 1.169 | 1.633 | 1.87 |

standardized.neutrality | 1.00 | 0.873 | 0.625 | 0.478 | 0.625 | 0.873 | 1.00 |

*Source: author*

Idea is that this is a graph that could be presented in single dimension, and therefore easily show two strictly opposite positions, but in linear mode. Based on graph like this, to increase \(C_{N_S}\) over 1, the only solution is to expand to two dimensions with adding two nodes connected either to first or last vertex (see Figure 3):

With nodes 8 and 9 connected to first one, node no 7 has \(C_{N_S}\) over 1 (see Table 3) - and this formula is applying some bias to vertices that are distanced from “center”, more than to the ones in “crowd” (and for that reason adding nodes in middle wouldn’t result in standardized bias over 1). Presence of standardized values over 1 indicates, that graph has high internal structural bias diversity, and is likely to contain some visible differences - eg. two main parties, cities (by population and location) in country, etc.

measure \ node | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|

neutrality | 1.959 | 1.414 | 1.061 | 1.195 | 1.64 | 2.070 | 2.26 | 2.121 | 2.121 |

standardized.neutrality | 0.907 | 0.655 | 0.491 | 0.553 | 0.76 | 0.958 | 1.05 | 0.982 | 0.982 |

*Source: author*

Adding more “clusters” to the ends lowers standardized neutrality, because relative bias within network is smaller. Usually bipolar structure will deliver highest relative bias. But in terms of what is most important - minimalizing bias, achieving neutrality - algorithm is not changing great and lowest bias still means highest structural neutrality.

## Weighted version

This algorithm can have weighted version, only the distance should be adjusted to that. Only requirement is that a graph is connected one.

## Clusters

Clustering can be performed in kind of voting style, where every vertex votes for the most biased one it is connected to (or create new cluster, if no other vertex is more biased than himself). Such kind of algorithm could use a starter list of cluster-making nodes and due to its almost linear process, quite good performance could be accomplished. It is based on single assumption, that neutral vertices are “convinced” by more biased ones - at least in terms of structure. Cut-off also can be added - many social entities may not bend to too biased nodes, constructing some sort of “mainstream” with “common sense” approach.

## Uses

While there are plenty uses for this formula, its standardized version and clusters based on it, the most useful ones are tied to bias minimalization (\(min(C_N)\)). Some of them are:

Unbiased location of things (items, services, etc. equal distribution)

Checking for most neutral structural attitude (like in citations) and possible mediation role

Consensus alghorithm - if there was a mixed network of ideas/decisions and social entities (people, groups, parties) each subgraph of idea and entites could be taken and studied, and the lowest bias one would be the consensus. This would probably be sub-optimal, but acceptable by players.

Content delivery applications, where first is served the content that would be most neutral when added to one’s ego network.

Uses are both observational and normative. As observational we could look for mediation entity, eg. least biased publication or person, that should express most neutral opinions and could be engaged as middleman. Normative would be connected to governing social systems, like countries or cities.

As I wrote - reason why I used this approach was because out of plenty books and articles I wanted to get the most neutral one, at least judging from its cited references list. I achieved good results doing so and enhanced this idea a little, to be able to share it. You are most welcome to comment it and help to make it better! :)

## Footnotes

https://www.journals.elsevier.com/journal-of-chromatography-a/announcements/the-concept-paper↩︎