tnet: Software for Analysing Weighted Networks

June 12, 2009 at 12:00 am 14 comments

Weighted Social Networktnet is a package written in R that can calculate weighted social network measures. Almost all of the ideas posted on this blog are related to weighted networks as, I believe, taking into consideration tie weights enables us to uncover and study interesting network properties. Not only are few social network measures applicable to weighted networks, but there is also a lack of software programmes that can analyse this type of networks. In fact, there are no open-source programmes. This hinders the use and development of weighted measures. tnet represents a first step towards creating such a programme. Through this platform, weighted network measures can easily be applied, and new measures easily implemented and distributed.

The content of this post has been integrated in the tnet manual, see Software.

Entry filed under: Network thoughts. Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .

Weighted Rich-club Effect: A more appropriate null model for scientific collaboration networks Clustering in two-mode networks


  • 1. Mathew Vereb  |  March 25, 2010 at 9:14 pm

    Dear Mr. Opsahl.
    I am writing diploma work and the theme relates with social network analysis. I have a matrix 36×36 which contains european states. Whole matrix contatins just 0 and 1, what depends on fact if states had borders. I think i solve the problem how to define weight to edges and now i am looking for index which will count inputs to vertices which include weights in its calculation. I thought about something like degree, but it always makes the same result even if i am using in or out degree and ignore.eval TRUE or FALSE. Could you help me? Yours sincerely

    • 2. Tore Opsahl  |  March 27, 2010 at 5:06 pm

      If your network is undirected and the weights of ties are symmetric (i.e., if A is connected to B with strength x, B is also connected to A with strength x), out-degree and in-degree produce identical outcomes. Send me an email with the network if you are having issues. T

  • 3. Manal Rayes  |  October 4, 2010 at 8:34 am

    Dr. Tore,
    Thanks for the great tool! I have an issue, though.
    I have a longitudinal network that I read from a csv file. When using the as.tnet function it shows an error message: Issues converting matrix format to edgelist.
    It is in data-frame format.

    Would appreciate your kind help.


    • 4. Tore Opsahl  |  October 4, 2010 at 9:57 am


      tnet will only be able to handle longitudinal networks from version 3. These functions are still being tested.


  • 5. Manal Rayes  |  October 4, 2010 at 4:11 pm

    Thank you Tore. I managed to write a code to account for the timing info. I got the results of betweenness and closeness, but the clustering showed an error message: Error in rep(1:nrow(net), ks) : invalid ‘times’ argument.
    Any hints please?

    • 6. Tore Opsahl  |  October 7, 2010 at 8:47 am

      If you send me your data and code by email, I can have a look at it.

  • 7. Mike sanders  |  December 14, 2010 at 6:28 am

    I’d like to thank you for the tnet package, I’ve just recently installed it and found it quite helpful. I had a question for you, if I were dealing with a two-mode network consisting of ‘items vs containers’ and the elements were the frequency counts of the items in each container, what would be the best method for projecting it to a one-mode network of bins? In the SNA literature they use transpose multiplication but that doesn’t give a meaningful representation in the case of weighted networks (but works for binary relations). Any ideas or thoughts would be greatly appreciated.

    Thank you,

    • 8. Tore Opsahl  |  December 14, 2010 at 7:23 am


      Thank you for finding tnet helpful. Some of my thoughts on projecting (binary and weighted) two-mode networks are available here.


  • 9. Liz  |  May 12, 2011 at 9:46 pm

    Dear Dr. Opsahl,

    Thank you so much for posting all of this information and for creating tnet! Being a social network novice, your papers and blog have been invaluable in my slog through the literature.

    I do have two questions. First, I am working with a weighted and directional network and I want to calculate the closeness of each node. Am I right in thinking that the closeness_w function takes directionality into account? This looks to be the case based on the R documentation, but I thought I should check before I go ahead using the values.

    Second, I read your 2010 paper in Social Networks and I wanted to clarify my understanding of alpha. As I understand it, if I want to take both the weight of the ties and the number ties for each node equally into account when calculating degree, closeness and betweenness, I should be using an alpha value between 0 and 1 (e.g. a=0.5). Is this correct? Sorry for the simple questions, but as I said, I’m very new to all of this and struggling to understand the basics.

    Thank you very much in advance!

    • 10. Tore Opsahl  |  May 13, 2011 at 6:48 am


      Thank you for using tnet.

      You are absolutely correct on both your assumptions. All one-mode functions in tnet are applicable to directed networks, except when explicitly mentioned (i.e., the local clustering coefficient). Also, you might want to have a look at this post on Closeness centrality in networks with disconnected components as directed networks often do not have just a single strong component (all nodes can reach all other). This feature you can use with (1) the binary measure, alpha=0, (2) the first generation generalisation, alpha=1, and (3) the second generalisation with variable alpha.

      Hope this helps,

      • 11. Liz  |  May 13, 2011 at 2:26 pm

        Thank you very much! One follow-up question: If I want to put greater emphasis on the weight of the ties than the number of ties would I just choose an alpha value somewhere between 0.5 and 1? I know that an alpha value above 1 positively values the weight and negatively values the number of ties. However, I still want both to have a positive effect, just not equally. Again, sorry for the basic question.

        Thank you,

      • 12. Tore Opsahl  |  May 13, 2011 at 9:22 pm


        An alpha closer to 1 would indeed do that. Nevertheless, the values of alpha still remain a bit of a question mark as simply the ranges are defined, but not exact values. I hope a study will come that assess optimal levels of alpha for various performance outcomes comes out soon (see the conclusion section of the paper for more details).


  • 13. Adam  |  May 27, 2011 at 12:05 pm

    Dear Dr. Opsahl,

    I’m a social network novice. I am working with a weighted and directional network and I want to test the “small world effect” with tnet package. But the tnet showed an error message: Error: could not find function “small_world_test_w”. Could you help me?


    • 14. Tore Opsahl  |  May 27, 2011 at 1:04 pm


      Great that you are considering the tie weights in the network.

      The small_world_test_w-function was removed from tnet since many people had issues understanding exactly what it did. There is hopefully a paper coming out soon that details the steps of it, so then it might be re-introduced.

      In the meantime, you can calculate the individual measures yourself as the underlying functions are still part of tnet. In particular, you can create a list-object with random networks, and then use the sapply-function with the distance_w to obtain benchmark values.

      If you have any issues with the code, let me know.


@toreopsahl on Twitter


The information on this blog is published under the Creative Commons Attribution-Noncommercial 3.0-lisence.

This means that you are free to:
· share
· adapt
under the following conditions:
· attribution (cite it)
· noncommercial (email me).

Creative Commons License