Weighted Richclub Effect
Research has long documented the abundance of complex systems characterised by heterogeneous distribution of resources among their elements. Back in 1897, Pareto noticed the social and economic disparity among people in different societies and countries. This empirical regularity inspired the 8020 rule of thumb stating that only a select minority (20%) of elements in many realworld settings are responsible for the vast majority (80%) of the observed outcome. While studies have shown that high degree nodes form many ties with each other (Borgatti and Everett, 1999; Colizza et al., 2006; Newman, 2002), the weighted richclub effect tests whether a select group of nodes share their strongest ties with each other in a weighted network (Opsahl et al., 2008). The nodes in the select group is often referred to as prominent as they are the highest ranking nodes according to a measure, such as degree or node strength.
The Weighted Richclub Effect
The Weighted Richclub is mainly a global measure (i.e., it gives an indication of the overall level in a network; Opsahl et al., 2008). The main question which it seeks to answer is whether a subset of prominent nodes directed their strongest ties towards each other to a greater extent than randomly expected. To test this question, there are four initial steps:
 Define certain nodes as prominent
 Calculate the total sum of weights attached to ties among the prominent nodes (see panel a of the figure below)
 Calculate the total sum of same number of ties, but the strongest ones, in the network (see panel b of the figure below)
 Find the ratio of point 2 and point 3. As a result, if the prominent nodes share the strongest ties in the network, the fraction is 1. If we the prominent nodes do not share all of the strongest nodes, we get a value lower than 1.
The method so far does not completely answer the question raised above. This is due to the fact that some ordering properties are associated with the strength of ties. When this is the case, even random networks may display a signal. Therefore, to properly test the phenomenon, we need to assess the weighted richclub effect observed in a realworld network against the effect found in an ensemble of random networks based on an appropriate null model. For example, if prominence is defined in terms of having an average tie weight greater than X, of course the group of prominent nodes has stronger ties among them – everything else being equal. To overcome this issue, it is possible to produce benchmark values using Random Networks (i.e., creating many random networks, and calculating the above four steps on them, take an average of the fractions found in step 4, and then divide the fraction from the real network on the average of the random networks). Although there are various ways of producing random networks, they should be produced in such a way that nodes maintain their prominence. Specifically, the choice of an appropriate null model reflects the need to discount for associations between weights and ties. To this end, the random networks must meet three main requirements. First, the random networks must have the same number of nodes and ties as the observed network. This ensures that the basic parameters of the networks are the same (Erdos and Renyi, 1960; Rapaport, 1953). Second, they must have the same weight distribution as the observed network. This is a crucial constraint since the weighted richclub effect is measuring nontrivial intensity of interactions among nodes. Moreover, this guarantees that the vector of ordered weights remain the same. Third, the prominent nodes must be the same as in the observed network. Random networks that does not fulfill the above three requirements are deemed noncomparable with the observed network, and thus does not allow for a proper weighted richclub assessment (Colizza et al., 2006). This is particular relevance when degree or node strength are used as indicators, or when analysing a twomode network.
The analyses that are often reported follow the topological richclub coefficient format by using a flexible definition of prominence (i.e, increasing levels of prominence instead of a single level). Below is an example of using outdegree as a prominence parameter. In fact, each point represents the ratio between the observed metric and the metric calculated on corresponding random networks. These results can be analysed by stating that there is a negative weighted richclub effect at low levels of prominence, while a cross over occurs when the club includes only nodes with an outdegree greater than 5.
Statistical Significance
Although the above results indicate that there is a weighted richclub effect, it is important to check whether the results are statistically significant. Statistical significance can be tested using the distribution of values from the random networks. Below is the distribution of coefficient from 1,000 random networks. If the observed coefficient is outside the 95 percent confidence interval, it could be deemed statstically significant. In the above example, the confidence interval always crosses 1, which means that the results are nonsignificant.
A Local Version of Weighted Richclub Effect
The weighted richclub effect was originally formulated as a global measures where a fraction was computed for increasingly restrictive levels of prominence. However, it might be of interest to have a local measure where each node has a score. To rewrite the original research question, I thought:
 designate certain nodes as prominent in a similar fashion as the global measure
 for each node, sum the weights towards prominent nodes (if a node has three ties with weights of 1, 2 and 6, and the two ties with weight of 1 and 6 are directed towards prominent nodes, then the sum is 7).
 In case the definition of prominence is associated with the weight of ties, we need to discount for the randomly expected value. To this end, we could divide the value obtained in point 2, to the randomly expected value (average weight of ties (which is 3 in this example) multiplied with the number of ties towards prominent nodes): 6.
This process might be better be explained using an example. For the nodes in the network below, the scores would be as follow:

Nodes A, C, D and F get a value of 1 as they do not have a choice in their behaviour because they are not connected to both prominent and nonprominent nodes. However, node B and E do have a choice in how to distributed their efforts. For example, node E have two ties, one with a weight of 2 to a prominent node and one with a weight of 1 to a nonprominent node. Therefore, it can be said that node E preferentially direct attention to prominent nodes.
Want to test it with your data?
The weighted richclub can be calculated using tnet. First, you need to download and install tnet in R. Then, you need to create an edgelist of your network (see the data structures in tnet for weighted onemode networks). The commands below show (1) how to calculate the global weighted richclub effect on c.elegans’ neural network, and (2) how to calculate the local richclub effect on the sample network above.
# Load tnet library(tnet) # Global Weighted Richclub Effect # Load the neural network of the c. elegans worm data(tnet) # Calculate the weighted richclub coefficient using degree as a prominence parameter and linkreshuffled random networks out < weighted_richclub_w(celegans.n306.net, rich="k", reshuffle="links", NR=1000, seed=1) # Plot output plot(out[,c("x","y")], type="b", log="x", xlim=c(1, max(out[,"x"]+1)), ylim=c(0,max(out[,"y"])+0.5), xaxs = "i", yaxs = "i", ylab="Weighted Richclub Effect", xlab="Prominence (degree greater than)") lines(out[,"x"], rep(1, nrow(out))) # Local Weighted Richclub Effect # Load the above sample network net < cbind( i=c(1,1,2,2,2,2,3,3,4,5,5,6), j=c(2,3,1,3,4,5,1,2,2,2,6,5), w=c(4,2,4,4,1,2,2,4,1,2,1,1)) # Define prominence parameter (node 1 (A), 2 (B) and 3 (C) are designated as prominent) prominence < c(1,1,1,0,0,0) # Run function weighted_richclub_local_w(net, prominence)
References
Borgatti, S.P., Everett, M.G., 1999. Models of Core/Periphery Structures. Social Networks 21: 375395.
Colizza, V., Flammini, A., Serrano, M. A., Vespignani, A., 2006. Detecting richclub ordering in complex networks. Nature Physics 2, 110115. arXiv:physics/0602134
Newman, M.E.J., 2002. Assortative mixing in networks. Physical Review Letters 89 (208701).
Opsahl, T., Colizza, V., Panzarasa, P., Ramasco, J. J., 2008. Prominence and control: The weighted richclub effect. Physical Review Letters 101 (168702). arXiv:0804.0417.
1. Eseosa  April 15, 2014 at 10:48 am
For node F, how was the weighted richclub effect calculated, if both node E and F are referred to as nonprominent; the only tie for node F is EF?
2. Tore Opsahl  April 15, 2014 at 3:11 pm
Apologies. There was a spelling mistake (now corrected). Node F has no choice in shifting its attention between prominent and nonprominent nodes, and as such, gets a score of 1.
3. davidnfisher  September 23, 2014 at 8:10 am
Hi Tore,
How do you extract the values for the random networks from the weighted_richclub_w function?
Cheers,
David
4. Tore Opsahl  September 24, 2014 at 1:53 am
Hi David,
The average value is present in the ycolumn, and the confidence intervals are listed. However, there are no direct way to get all the scores out. If you look into the weighted_richclub_wfunction, the rphiobject contains the scores. Altering the function to return/save this object would enable you to make the histograms on this page.
Best,
Tore
5. davidnfisher  September 24, 2014 at 11:15 am
OK, I had wondered about the 95% CIs as mine are all 0:
x y l99 l95 h95 h99
1 0.999990 1.000000 0 0 0 0
2 1.117379 1.078395 0 0 0 0
3 1.248549 1.078395 0 0 0 0
4 1.395117 1.078395 0 0 0 0
5 1.558890 1.078395 0 0 0 0
6 1.741889 1.078395 0 0 0 0
7 1.946370 1.078395 0 0 0 0
8 2.174856 1.175318 0 0 0 0
9 2.430163 1.175318 0 0 0 0
10 2.715441 1.175318 0 0 0 0
11 3.034208 1.205826 0 0 0 0
12 3.390395 1.205826 0 0 0 0
13 3.788396 1.205826 0 0 0 0
14 4.233117 1.245198 0 0 0 0
15 4.730045 1.245198 0 0 0 0
16 5.285307 1.411366 0 0 0 0
17 5.905752 1.411366 0 0 0 0
18 6.599031 1.411366 0 0 0 0
19 7.373695 1.479959 0 0 0 0
20 8.239296 1.479959 0 0 0 0
21 9.206511 1.545667 0 0 0 0
22 10.287268 1.545667 0 0 0 0
23 11.494896 1.545667 0 0 0 0
24 12.844287 1.598236 0 0 0 0
25 14.352084 1.598236 0 0 0 0
26 16.036883 1.871658 0 0 0 0
27 17.919460 1.886792 0 0 0 0
28 20.023034 2.649007 0 0 0 0
29 22.373548 2.649007 0 0 0 0
30 24.999990 2.649007 0 0 0 0
Does that mean there CIs have no size?
David
6. Tore Opsahl  September 24, 2014 at 9:14 pm
Hi David,
Are you using 100 or more random networks? I think I set confidence ranges only to be computed for 100+ random networks — perhaps the values should be set to NA instead when the sample is small.
Best,
Tore
7. davidnfisher  September 25, 2014 at 7:14 am
Ah ok yes that is the issue, I have CIs as soon as I set it to 101 random networks. Cheers!
8. Rose  October 1, 2014 at 11:02 pm
Is there a way to just get one weighted rich club coefficient (like an average) for the whole network? Thanks Tore.
9. Tore Opsahl  October 3, 2014 at 3:29 am
Hi Rose,
All the numbers in the diagrams are scores for the whole network, but at various cutoff of defining prominence. You could look at a percentile of nodes (e.g., only the top 10% are prominent / rich).
Best,
Tore
10. Rose  October 10, 2014 at 3:22 am
Hi Tore,
So i know that as x value increases a smaller set of agents are included in that club and then the y value represents average value. There are 30 rows in the output. But how do i restrict to a percentile of nodes only? Thanks for clarifying.
11. Tore Opsahl  October 14, 2014 at 11:23 pm
Rose,
You can use degree_w to find the distribution of your prominence metric, and then calculate the distribution.
Hope this helps,
Tore
12. Abdul Waheed  December 31, 2014 at 11:05 am
Dear Tore,
Kindly if possible can you please tell me why I’m getting this error when I’m finding rich club effect on my data set.
weighted_richclub_w(ProjectedStates,prominence)
Error in weighted_richclub_w(ProjectedStates, prominence) :
The richparameter is not properly specified; only k and s.
In addition: Warning messages:
1: In if (rich == “k”) { :
the condition has length > 1 and only the first element will be used
2: In if (rich == “s”) { :
the condition has length > 1 and only the first element will be used
Further, when I apply weighted_richclub_tm on my 2mode network it is not giving appropriate results.
I’ll remain thankful for your concern.
Kind regards
A.W.Mahesar
13. Tore Opsahl  January 1, 2015 at 11:08 pm
Hi A.W.Mahesar,
Thanks for taking an interest in my work. How is the prominenceobject defined? It needs to be a single character that is either “k” or “s” for binary degree or weighted degree, respectively. See code example above.
Hope this helps,
Tore
14. Rodrigo  May 9, 2018 at 5:16 am
Dear Tore,
Before all, congratulations by your work. I have read the articles and follow the resourceful blog. It is all really interesting!
I have one doubt about the results of this function. Would each bin be the distribution of prominence? Then, in order to retrieve the level of prominence used in the calculations (s >= prominence) at bin 20, is just necessary to see the limits of the weight distribution of the network at the bin 20, for instance?
Thank you in advance.
Best,
Rodrigo
15. Rodrigo  May 9, 2018 at 9:45 am
Sorry, I misunderstood the results. I thought that x was the observed phi, when actually I realized that the x is the cutting point of richness, is that correct?
Thank you for letting your work available.
Kind Regards,
Rodrigo
16. Tore Opsahl  May 9, 2018 at 10:46 pm
Thank you for taking an interest in my work, Rodrigo.
You are correct: the xaxis represents the prominence vector (e.g., a value of 20 means that nodes with s >= 20 (if prominence is s) forms the richclub). The yaxis shows the richclub coefficient (ratio of the observed and the random) for the select nodes in the richclub.
Good luck!
Tore
17. Drahomír  August 1, 2019 at 5:48 am
Hello Tore,
Thank you for your great and fascinating work.
I’m currently conducting a network analysis where i’m trying to identify core structure that controls the prominent portion of information flow within the network.
I had one question regarding the computations of strenghts at certain levels of prominence. In my case the prominence is represented by weighted degree (or strength). As the strength is calculated as a sum of adjacent edges to the node, is strength recalculated for each selected richclub?
Lets say i have prominence level of strength 80 (units doesn’t matter) at which i detected significant formation of a richclub. If i understood the algorithm right, this means that all the nodes not meeting this level of strength (prominence) have been removed. That is, the strengths of remaining nodes is 80 or greater, but this is the recalculated strength after removal of nodes not meeting this requirment. I mean something simillar to kcore (based on degrees) or score (based on strengths) decomposition of the network, which iterativelly removes nodes starting from minimum value recalculating the selected parameter each time a node is removed.
Thank you for your response
Best regards
Drahomír
18. Tore Opsahl  August 20, 2019 at 9:13 pm
Hi Drahomir,
Glad you’re finding the work useful.
The prominence is not reclaculated as the richclub becomes more selective.
Best,
Tore
19. Drahomir  August 21, 2019 at 6:29 am
Hi Tore,
Thank you for your response. I would be really thankful if you could explain me the issue I’m having with the results of the analysis.
I have undirected network with n = 248 and m = 2401. The strength values are in the range from 3.26 to 1309. When I ran the analysis, I used “s” as a rich parameter reshuffling weights with NR = 1000 and nbins = 50. The problem I have is that the results show the weighted richclub coefficient (wrc) only up to the prominence level of 70 (i.e. strength = 70). I’m wondering why the stronger nodes weren’t included. I tried to expand the number of bins to 150, but again the maximum prominence value for which wrc is computed is 70. Doesn’t undirected edgelists have to be symmetrised as in the case of computing weighted average shortest paths?
Significant WRC (above 95%tile of the random counterparts) was detected at the prominence value of 56. If I’m interpreting the results accordingly, then this mean that a significant rich club is forming amongst nodes with strength value 56 or greater. However, in my case this means that rich club consists of almost 55% of the original number of the nodes in the network (I excepted a more prominent rich club). I’m really trying to make sense out of this result, but from visual inspection of the network it is clearly visible that there are much stronger nodes sharing greater weights amongst themselves (which is suggestive of more selective wrc than suggested by the analysis). If I may, I would gladly send you the data and results of my analysis.
Thank you for your patience and help
Best,
Drahomir
20. Tore Opsahl  August 27, 2019 at 8:09 pm
Hi Drahomir,
There might not sufficient amount of data past s=70. You are correct in symmetrizing the network if it is undirected. Feel free to send me an email and I will have a look at it.
Best,
Tore
21. Drahomir  August 27, 2019 at 8:15 pm
Hi Tore,
Well, I must have overlooked or forget the symmetrization process mentioned in the paper. I reran the analysis on the symmetrized edgelist and now the results are looking good and comprehensible :) Thanks for your time and effort.
Best
Drahomir
22. Kirill  November 6, 2019 at 10:33 pm
Dear Tore,
Thank you for your work and code!
I have a couple of questions about null models. In the article for weighted networks, you use weight & links reshuffling but as far as I understand the function for calculating WRC accept them only separately. Am I right or link reshuffling one implies weight reshuffling? Finally, in the paper, you also say that if richness is defined as the strength (my case), the null model should preserve strength distribution. Can you give a piece of advice on how it can be performed?
Best,
Kirill
23. Tore Opsahl  November 16, 2019 at 10:54 am
Kirill,
That’s correct. Link reshuffling implies weight reshuffling unless the origin of the ties are maintained (local).
Have a look at the random network page for details and examples of how the strength distribution can be maintained. https://toreopsahl.com/tnet/weightednetworks/randomnetworks/
Tore