I haven’t worked with negative weights, so I am not entire sure of the code’s behavior in these instances. Projection works by multiplying a matrix with its transpose; however, tnet does it through merges due to using an internal edgelist representation of networks. The tie weights is based on the selected method.

Best,

Tore

1. Our two-mode network is weighted and some of the weights are negative. Do you see any problems projecting such a network into a weighted one-mode network?

2. Let A be an m x n matrix describing a two-mode network. Do I understand it correctly that–somewhat simplifying–the tnet command projecting_tm calculates A’A (and/or AA’) and then sets the diagonal entries to zero? ]]>

The normalization of tie weights is highly dataset dependent. Nonetheless, certain metrics are defined to normalize weights for a person (e.g., Burt’s, 1992, constraint metric defines p_ij as w_ij / w_i++). I have chosen to stay away from such assumptions, and leave it up the research to determine the appropriate handling of tie weights for their dataset.

Best,

Tore

The algorithm works so that the node strength is equal to the number of papers written. See Mark Newman’s article for more details on his method.

Best,

Tore

In the case of the Binary Two-mode Networks, why do the links (B,C) and (A,C) are valued 0.5 instead of 0.33 each ?

I would assume that in the case of the paper written by author A, B and C;

each links will be valued 0.33 so that the sum of (B,C), (A,C) and (A,B) for this paper will be one.

Thanks for your help !

Marion

]]>It seems that your data is a data.frame with the first two columns being factors. When a factor is transformed into a matrix, the labels are lost. To get the labels (or levels as they are called), you can write the following code is your network is an object called net:

labels <- levels(net[,"Names"] net1 <- projecting_tm(net) net1 <- data.frame(i = labels[net[,"i"]], j = labels[net[,"j"]], w = net1[,"w"], stringsAsFactors = FALSE)

Good luck!

Tore

what I am asking is as follows. I have my weighted network as below,

Names Posts frequency

A Politics 2

A travel 40

B Politics 5

B Money 2

C Politics 24

C Money 23

D Politics 20

When I use the cbind method, it creates them into numeric columns

1 1 2

1 2 40

2 1 5

2 3 2

3 1 2

3 3 24

4 1 23

and so on…

I was wondering if after projecting I can get back the matrix as

A B 54

B C 36

D A 68 etc.

and also if i get the centrality measures with the lables (A, B, C) rather than 1, 2, 3

Hope this provides better clarity.

Thanks a lot

Vivek

If you are asking about the column names, you can set these by using the colnames-functions. For example:

net <- data.frame(person = c(1,1,2,3), post = c(1,2,1,3)) savedColnames <- colnames(net) net <- as.tnet(net, type="binary two-mode tnet") colnames(net) <- savedColnames

Good luck,

Tore

Thanks for your help

]]>Thank you very much for the explanation! This makes sense!

Sandra

]]>I was referring to the sample graphs in the figures above. Specifically, the weighted two-mode network (fourth figure on this page) and the corresponding weighted one-mode network using the sum-method (fifth figure on this page).

For your dataset, primary nodes 1 and 2 share the following secondary nodes: 9, 15, 17, 18, 20, and 38. The sum of node 1’s ties with these common nodes is 37 (5+7+21+1+2+1), and the sum of node 2’s tie with the common nodes is 38 (1+3+26+4+3+1). As such, the projection-function using the sum-method creates two ties between nodes 1 and 2:

i j w

1 2 37

2 1 38

Hope this further clarifies what the function does.

Best,

Tore

Thank you so much for your fast response! The data above was the one-dimension projection. Below is the original weighted two-mode bipartite network where i represents frugivore species, j fruit species, and w frequencies of interaction (number of individuals of species i consuming fruit j).

In the one-dimension projection of frugivores I would expect symmetrical weights because frugivores are indirectly connected by the fruit they share irrespective of direction. For example in the projection (using SUM method) I got: species1-species2 = 37, species2- species1 = 38. I’m I misinterpreting something? Thanks again!

Original bipartite network:

*Edges

i j w

1 7 3

1 9 5

1 15 7

1 16 1

1 17 21

1 18 1

1 19 2

1 20 2

1 21 4

1 24 1

1 25 3

1 28 3

1 30 1

1 37 12

1 38 1

2 6 8

2 9 1

2 10 4

2 15 3

2 17 26

2 18 4

2 20 3

2 29 1

2 33 4

2 38 1

2 41 2

3 34 1

3 38 1

4 6 13

4 7 21

4 8 14

4 9 15

4 10 24

4 11 2

4 12 2

4 13 8

4 14 14

4 15 41

4 16 28

4 17 33

4 18 11

4 19 1

4 20 19

4 21 22

4 22 2

4 23 2

4 24 17

4 25 11

4 26 1

4 28 1

4 30 2

4 31 1

4 32 3

4 34 1

4 35 1

4 36 2

4 38 1

4 39 2

4 40 1

4 42 3

4 43 1

4 44 4

5 7 32

5 8 19

5 9 11

5 10 13

5 12 1

5 13 9

5 14 3

5 15 21

5 16 1

5 17 5

5 18 14

5 20 43

5 21 18

5 22 5

5 23 14

5 24 33

5 25 7

5 26 1

5 27 2

5 28 6

5 29 2

5 30 23

5 31 1

5 35 3

5 36 2

5 37 2

5 38 1

5 40 1

5 43 1

5 44 1

One dimension projection (SUM method from t-net):

1 2 37

1 3 1

1 4 55

1 5 65

2 1 38

2 3 1

2 4 50

2 5 43

3 1 1

3 2 1

3 4 2

3 5 1

4 1 223

4 2 157

4 3 2

4 5 299

5 1 217

5 2 110

5 3 1

5 4 289

The method creates a two ties — one in each direction — between primary nodes that a secondary node; however, the tie weights are not guaranteed to be symmetric. In the weighted two-mode network example above, node A has a total tie weight of 6 towards nodes shared with node B; however, node B only have a total tie weight of 3 with common nodes.

Hope this helps,

Tore

I am doing a one-mode projection of a weighted biparite network. I noticed that in the projection, the weights for 1-2 are different than from 2-1 and so on (see below), even though my network is not directional.

I am using the command: projecting_tm(mynet, method=”sum”). I tried adding directed=NULL but I get an “unused argument” error. Is there a way to specify that the network is undirected?

i j w

1 1 2 37

2 1 3 1

3 1 4 52

4 1 5 62

5 2 1 38

6 2 3 1

7 2 4 50

8 2 5 43

9 3 1 1

10 3 2 1

11 3 4 2

12 3 5 1

13 4 1 202

14 4 2 157

15 4 3 2

16 4 5 299

17 5 1 185

18 5 2 110

19 5 3 1

20 5 4 289

Thanks in advance!!!

]]>I’m glad you’re finding the site useful.

1) To calculated node centrality on a projected two-mode network, you must use the one-mode metrics. See https://toreopsahl.com/tnet/weighted-networks/node-centrality/

2) Two-mode networks (tnet is limited to two-mode networks for multi-mode networks) are generally undirected, or directional in one way only. To the best of my knowledge, there are no general directional two-mode metrics.

Good luck,

Tore

Congrats for your website, I find it very helpful and thanks for sharing your knowledge.

I have two questions, and I would be grateful if you could answer : Can I calculate centrality measures on the projected network?

Also, is it possible, in a multi-mode network for the one set of actors to be directed(and if yes, can I use your package to turn it into a projected network)?

Thanks,

Andy

Thanks for your kind information. Now I got the answer.

Kind regards,

]]>You are simply using the projection_tm-function with method=”Newman” and the network being a weighted two-mode network: see line #8 in the fourth and final code block above.

Tore

]]>Regards,

]]>Hope this helps,

Tore

Hi,

I’m working on two-mode networks. In above post the tnet command for extended weighted network formula is not given.

Only binar,sum and newman is given. Kindly if possible can you please tell me the command for last method.

I’ll remain thankful.

Kind regard,

A.W.Mahesar

]]>Great to see more open science being done! I’m not sure there is a specific theory I can point you too regarding projects as there is so many. For example, two-mode networks with people and events can be projected due to assumed temporal geographical co-location. However, I believe it really depends on your context which theories of connectedness would apply.

Best,

Tore

Great suggestion. It does sound like a good idea as differences in tie weights would discount the tie strength. I haven’t implemented this type of projection method for two-mode networks; however, if you connect with me by email, this code can easily be created.

Best,

Tore