6  Two-Mode Networks

A two-mode network is a network that consists of two disjoint sets of nodes (like people and events). Ties connect the two sets, for example participation of people in events. Other examples are

There are two ways of analysing a two-mode network. Either directly by using methods specifically created for such networks, or by projecting it to a regular one-mode network (Everett and Borgatti 2013). The advantage of the former is that there is no information loss and the advantage of the latter is that we are working with more familiar data structures. The projection approach is more popular these days, but we will still introduce some direct methods to analyse two-mode networks. The main part of this chapter will however deal with the projection approach.

6.1 Packages Needed for this Chapter

library(igraph)
library(networkdata)
library(tnet)
library(backbone)

6.2 Two-Mode Data Structure

Two-mode network data represent relationships between two distinct types of entities rather than ties among members of a single set. Typical examples include individuals and organizations, students and courses, or authors and publications. Instead of being represented as a standard actor-by-actor adjacency matrix, two-mode networks are stored as an incidence matrix or biadjacency matrix, in which rows represent one type of node (e.g., individuals) and columns represent the other type (e.g., events or organizations). The entries in the matrix indicate whether a tie exists across the two sets—for instance, whether a person attended an event or belongs to an organization. This incidence matrix structure makes it possible to analyze affiliation patterns, shared participation, and broader forms of social or institutional embeddedness.

Two-mode networks are especially useful for analyzing how connections emerge indirectly, for example, when two individuals are linked because they attend the same event or belong to the same organization.

To illustrate methods tailored for two-mode networks, we will use the well-known Southern Women dataset (Davis et al. 2009). This classic dataset records the attendance patterns of 18 women at 14 social events in the American South, and has become a foundational example in network analysis. The network is included in the networkdata package and provides a canonical example of an affiliation (incidence) matrix suitable for demonstrating two-mode network methods and one-mode projections.

The biadjacency matrix and can be obtained via as_biadjacency_matrix(). This matrix is shown in Figure 6.1 and the network itself in Figure 6.2.

data("southern_women")
southern_women
IGRAPH 1074643 UN-B 32 89 -- 
+ attr: type (v/l), name (v/c)
+ edges from 1074643 (vertex names):
 [1] EVELYN   --6/27 EVELYN   --3/2  EVELYN   --4/12 EVELYN   --9/26
 [5] EVELYN   --2/25 EVELYN   --5/19 EVELYN   --9/16 EVELYN   --4/8 
 [9] LAURA    --6/27 LAURA    --3/2  LAURA    --4/12 LAURA    --2/25
[13] LAURA    --5/19 LAURA    --3/15 LAURA    --9/16 THERESA  --3/2 
[17] THERESA  --4/12 THERESA  --9/26 THERESA  --2/25 THERESA  --5/19
[21] THERESA  --3/15 THERESA  --9/16 THERESA  --4/8  BRENDA   --6/27
[25] BRENDA   --4/12 BRENDA   --9/26 BRENDA   --2/25 BRENDA   --5/19
[29] BRENDA   --3/15 BRENDA   --9/16 CHARLOTTE--4/12 CHARLOTTE--9/26
+ ... omitted several edges
# get biadjacency matrix
A <- as_biadjacency_matrix(southern_women)
A
          6/27 3/2 4/12 9/26 2/25 5/19 3/15 9/16 4/8 6/10 2/23 4/7 11/21 8/3
EVELYN       1   1    1    1    1    1    0    1   1    0    0   0     0   0
LAURA        1   1    1    0    1    1    1    1   0    0    0   0     0   0
THERESA      0   1    1    1    1    1    1    1   1    0    0   0     0   0
BRENDA       1   0    1    1    1    1    1    1   0    0    0   0     0   0
CHARLOTTE    0   0    1    1    1    0    1    0   0    0    0   0     0   0
FRANCES      0   0    1    0    1    1    0    1   0    0    0   0     0   0
ELEANOR      0   0    0    0    1    1    1    1   0    0    0   0     0   0
PEARL        0   0    0    0    0    1    0    1   1    0    0   0     0   0
RUTH         0   0    0    0    1    0    1    1   1    0    0   0     0   0
VERNE        0   0    0    0    0    0    1    1   1    0    0   1     0   0
MYRNA        0   0    0    0    0    0    0    1   1    1    0   1     0   0
KATHERINE    0   0    0    0    0    0    0    1   1    1    0   1     1   1
SYLVIA       0   0    0    0    0    0    1    1   1    1    0   1     1   1
NORA         0   0    0    0    0    1    1    0   1    1    1   1     1   1
HELEN        0   0    0    0    0    0    1    1   0    1    1   1     0   0
DOROTHY      0   0    0    0    0    0    0    1   1    0    0   0     0   0
OLIVIA       0   0    0    0    0    0    0    0   1    0    1   0     0   0
FLORA        0   0    0    0    0    0    0    0   1    0    1   0     0   0
Figure 6.1: Incidence matrix representation of the Southern Women two-mode network. Rows correspond to the 18 women and columns to the 14 social events; black cells indicate attendance at an event, and white cells indicate non-attendance.
Figure 6.2

In igraph, a graph is recognized as a two-mode network when its vertices contain a logical attribute named type. This attribute distinguishes the two node sets: One mode is coded as FALSE and the other as TRUE. Rather than relying on separate data structures, igraph uses this vertex-level attribute to determine how functions for bipartite graphs, such as projections or incidence matrix extraction, should behave.

We can inspect how many vertices belong to each mode using the table() function on the type attribute.

table(V(southern_women)$type)

FALSE  TRUE 
   18    14 

In the following sections, we will examine direct and indirect analytical strategies as introduced above. First, we briefly consider direct approaches that analyze the two-mode structure without transforming it, thereby preserving the full information contained in the network. We then turn to the more commonly used projection approach, in which the two-mode network is converted into one-mode networks (e.g., women-to-women or event-to-event). While projections rely on more familiar network representations and measures, they inevitably involve some information loss. For this reason, we introduce both perspectives, though the main focus of this chapter will be on the projection-based analysis.

6.3 Direct Approach

Several packages provide methods for analyzing two-mode networks directly, without first projecting them into one-mode structures. In particular, the tnet and bipartite packages extend familiar one-mode concepts (such as clustering or centrality) to bipartite settings.

For example, recall that the standard clustering coefficient is based on counting triangles, i.e. closed triplets of nodes. However, triangles cannot exist in a two-mode network because ties only occur between the two distinct node sets (e.g., women \(\leftrightarrow\) events), not within them. This means the usual definition of transitivity must be adapted (Opsahl 2013).

If we naively apply igraph’s transitivity function to the bipartite graph, it will return zero or undefined local values, precisely because triangles are structurally impossible.

transitivity(southern_women)
[1] 0
transitivity(southern_women, type = "local")
   EVELYN     LAURA   THERESA    BRENDA CHARLOTTE   FRANCES   ELEANOR     PEARL 
        0         0         0         0         0         0         0         0 
     RUTH     VERNE     MYRNA KATHERINE    SYLVIA      NORA     HELEN   DOROTHY 
        0         0         0         0         0         0         0         0 
   OLIVIA     FLORA      6/27       3/2      4/12      9/26      2/25      5/19 
        0         0         0         0         0         0         0         0 
     3/15      9/16       4/8      6/10      2/23       4/7     11/21       8/3 
        0         0         0         0         0         0         0         0 

To address this limitation, the tnet package defines a two-mode clustering coefficient based on cycles of length six, which involve three nodes from each mode (e.g., woman \(\rightarrow\) event \(\rightarrow\) woman \(\rightarrow\) event \(\rightarrow\) woman \(\rightarrow\) event \(\rightarrow\) back to the first woman). These six-step cycles are the bipartite analogue of triangles in one-mode networks.

el_women <- as_edgelist(southern_women, names = FALSE)

clustering_tm(el_women)              # global clustering (first mode)
[1] 0.7718968
clustering_local_tm(el_women)        # local clustering (first mode)
   node        lc
1     1 0.7666667
2     2 0.8421751
3     3 0.7523437
4     4 0.8387909
5     5 1.0000000
6     6 0.8690476
7     7 0.7959184
8     8 0.6462585
9     9 0.6702509
10   10 0.6740891
11   11 0.7138810
12   12 0.7695560
13   13 0.7461929
14   14 0.8379501
15   15 0.8159204
16   16 0.5407407
17   17 0.5806452
18   18 0.5806452
clustering_local_tm(el_women[,2:1])  # local clustering (second mode)
   node        lc
1     1       NaN
2     2       NaN
3     3       NaN
4     4       NaN
5     5       NaN
6     6       NaN
7     7       NaN
8     8       NaN
9     9       NaN
10   10       NaN
11   11       NaN
12   12       NaN
13   13       NaN
14   14       NaN
15   15       NaN
16   16       NaN
17   17       NaN
18   18       NaN
19   19 1.0000000
20   20 0.9487179
21   21 0.9532967
22   22 0.9644970
23   23 0.9628253
24   24 0.8135593
25   25 0.7171825
26   26 0.7791580
27   27 0.7353630
28   28 0.8544601
29   29 0.9555556
30   30 0.8844765
31   31 0.8709677
32   32 0.8709677

The NaN values indicate that for those nodes the two-mode clustering coefficient is undefined, because they do not participate in any valid six-cycle (the bipartite equivalent of a triangle).

Because counting such six-cycles is computationally intensive, these measures are best applied to relatively small networks. The tnet package includes additional two-mode–specific functions with naming scheme *_tm(), though in many cases similar insights can be obtained via standard igraph tools.

The bipartite package is tailored towards ecological network analysis. Relevant functions for standard two-mode networks are the same as in tnet.

6.4 Projection Approach

An alternative to analyzing a two-mode network directly is to transform it into a one-mode network through projection. In a projection, nodes from one mode are connected if they share ties to the same nodes in the other mode. For example, in the Southern Women network, two women are connected if they attended at least one common event. Projections can be constructed in either a weighted or binary form.

6.4.1 Weighted Projection

This operation is performed using matrix multiplication on the incidence matrix \(A\). Projecting onto the first mode (e.g., women) is obtained by computing \(AA^T\), while projecting onto the second mode (e.g., events) is obtained via \(A^TA\). The resulting matrix is a weighted adjacency matrix, where entries indicate the number of shared affiliations between pairs of nodes.

As an illustration, we project the Southern Women incidence matrix onto the women:

B <- A %*% t(A)
B
          EVELYN LAURA THERESA BRENDA CHARLOTTE FRANCES ELEANOR PEARL RUTH
EVELYN         8     6       7      6         3       4       3     3    3
LAURA          6     7       6      6         3       4       4     2    3
THERESA        7     6       8      6         4       4       4     3    4
BRENDA         6     6       6      7         4       4       4     2    3
CHARLOTTE      3     3       4      4         4       2       2     0    2
FRANCES        4     4       4      4         2       4       3     2    2
ELEANOR        3     4       4      4         2       3       4     2    3
PEARL          3     2       3      2         0       2       2     3    2
RUTH           3     3       4      3         2       2       3     2    4
VERNE          2     2       3      2         1       1       2     2    3
MYRNA          2     1       2      1         0       1       1     2    2
KATHERINE      2     1       2      1         0       1       1     2    2
SYLVIA         2     2       3      2         1       1       2     2    3
NORA           2     2       3      2         1       1       2     2    2
HELEN          1     2       2      2         1       1       2     1    2
DOROTHY        2     1       2      1         0       1       1     2    2
OLIVIA         1     0       1      0         0       0       0     1    1
FLORA          1     0       1      0         0       0       0     1    1
          VERNE MYRNA KATHERINE SYLVIA NORA HELEN DOROTHY OLIVIA FLORA
EVELYN        2     2         2      2    2     1       2      1     1
LAURA         2     1         1      2    2     2       1      0     0
THERESA       3     2         2      3    3     2       2      1     1
BRENDA        2     1         1      2    2     2       1      0     0
CHARLOTTE     1     0         0      1    1     1       0      0     0
FRANCES       1     1         1      1    1     1       1      0     0
ELEANOR       2     1         1      2    2     2       1      0     0
PEARL         2     2         2      2    2     1       2      1     1
RUTH          3     2         2      3    2     2       2      1     1
VERNE         4     3         3      4    3     3       2      1     1
MYRNA         3     4         4      4    3     3       2      1     1
KATHERINE     3     4         6      6    5     3       2      1     1
SYLVIA        4     4         6      7    6     4       2      1     1
NORA          3     3         5      6    8     4       1      2     2
HELEN         3     3         3      4    4     5       1      1     1
DOROTHY       2     2         2      2    1     1       2      1     1
OLIVIA        1     1         1      1    2     1       1      2     2
FLORA         1     1         1      1    2     1       1      2     2

This matrix can now be interpreted as a weighted network among the 18 women. Each entry corresponds to the number of times two women went to the same event.

We can obtain the same projections directly from the igraph object using bipartite_projection(), which returns both one-mode projections (women–women and event–event):

projs <- bipartite_projection(southern_women)
projs
$proj1
IGRAPH 5c144a9 UNW- 18 139 -- 
+ attr: name (v/c), weight (e/n)
+ edges from 5c144a9 (vertex names):
 [1] EVELYN --LAURA     EVELYN --BRENDA    EVELYN --THERESA   EVELYN --CHARLOTTE
 [5] EVELYN --FRANCES   EVELYN --ELEANOR   EVELYN --RUTH      EVELYN --PEARL    
 [9] EVELYN --NORA      EVELYN --VERNE     EVELYN --MYRNA     EVELYN --KATHERINE
[13] EVELYN --SYLVIA    EVELYN --HELEN     EVELYN --DOROTHY   EVELYN --OLIVIA   
[17] EVELYN --FLORA     LAURA  --BRENDA    LAURA  --THERESA   LAURA  --CHARLOTTE
[21] LAURA  --FRANCES   LAURA  --ELEANOR   LAURA  --RUTH      LAURA  --PEARL    
[25] LAURA  --NORA      LAURA  --VERNE     LAURA  --SYLVIA    LAURA  --HELEN    
[29] LAURA  --MYRNA     LAURA  --KATHERINE LAURA  --DOROTHY   THERESA--BRENDA   
+ ... omitted several edges

$proj2
IGRAPH 842f056 UNW- 14 66 -- 
+ attr: name (v/c), weight (e/n)
+ edges from 842f056 (vertex names):
 [1] 6/27--3/2   6/27--4/12  6/27--9/26  6/27--2/25  6/27--5/19  6/27--9/16 
 [7] 6/27--4/8   6/27--3/15  3/2 --4/12  3/2 --9/26  3/2 --2/25  3/2 --5/19 
[13] 3/2 --9/16  3/2 --4/8   3/2 --3/15  4/12--9/26  4/12--2/25  4/12--5/19 
[19] 4/12--9/16  4/12--4/8   4/12--3/15  9/26--2/25  9/26--5/19  9/26--9/16 
[25] 9/26--4/8   9/26--3/15  2/25--5/19  2/25--9/16  2/25--4/8   2/25--3/15 
[31] 5/19--9/16  5/19--4/8   5/19--3/15  5/19--6/10  5/19--2/23  5/19--4/7  
[37] 5/19--11/21 5/19--8/3   3/15--9/16  3/15--4/8   3/15--4/7   3/15--6/10 
[43] 3/15--11/21 3/15--8/3   3/15--2/23  9/16--4/8   9/16--4/7   9/16--6/10 
+ ... omitted several edges

Figure 6.3 visualizes the weighted women–women projection. The edge widths are scaled according to the number of shared events, so thicker edges indicate pairs of women who attended more events together.

Figure 6.3: Weighted projection of the Southern Women network onto the women.

As the figure shows, the projected network is typically very dense, since many pairs of women share at least one event. While it is possible to analyze this weighted projection as-is, a common next step is to binarize the projection, converting weighted edges either as a tie or no tie. This transforms the projection into a simple undirected one-mode network, making the standard tools from earlier sections directly applicable. At least in theory.

6.4.2 Simple Binary Projections

The simplest way to binarize a weighted projection is to define a global threshold and remove all ties whose weights fall below that threshold. A commonly used benchmark is the mean edge weight, sometimes adjusted upward by adding one or two standard deviations.

The rationale for using the mean is statistical and substantive. In many projected networks, especially those derived from affiliation data, the distribution of edge weights is highly skewed: most pairs share only one or two affiliations, while a smaller number share many. Using the mean as a cutoff removes very weak and potentially incidental connections. Adding one or two standard deviations makes the criterion stricter, retaining only ties that are substantially stronger than average. In effect, this approach filters out background noise and highlights particularly cohesive relationships.

However, this choice is heuristic rather than theoretically mandated. The appropriate threshold depends on the research question: lower thresholds preserve more information but may produce very dense graphs, while higher thresholds emphasize strong ties but risk discarding meaningful structure. Consequently, it is often useful to explore how results change across different threshold values.

Below,, we binarize the weighted women–women projection using the mean edge weight as a global threshold. First, we extract the women’s projection from the list returned by bipartite_projection(). We then compute the mean of the edge weights and remove all ties whose weights are less than or equal to this threshold. Finally, we delete the weight attribute so that the resulting graph is treated as a simple unweighted (binary) network.

women_proj <- projs$proj1
threshold <- mean(E(projs$proj1)$weight)
women_bin <- delete_edges(women_proj, which(E(women_proj)$weight <= threshold))
women_bin <- delete_edge_attr(women_bin, "weight")
women_bin
IGRAPH 508ddcc UN-- 18 46 -- 
+ attr: name (v/c)
+ edges from 508ddcc (vertex names):
 [1] EVELYN --LAURA     EVELYN --BRENDA    EVELYN --THERESA   EVELYN --CHARLOTTE
 [5] EVELYN --FRANCES   EVELYN --ELEANOR   EVELYN --RUTH      EVELYN --PEARL    
 [9] LAURA  --BRENDA    LAURA  --THERESA   LAURA  --CHARLOTTE LAURA  --FRANCES  
[13] LAURA  --ELEANOR   LAURA  --RUTH      THERESA--BRENDA    THERESA--CHARLOTTE
[17] THERESA--FRANCES   THERESA--ELEANOR   THERESA--RUTH      THERESA--PEARL    
[21] THERESA--NORA      THERESA--VERNE     THERESA--SYLVIA    BRENDA --CHARLOTTE
[25] BRENDA --FRANCES   BRENDA --ELEANOR   BRENDA --RUTH      FRANCES--ELEANOR  
[29] ELEANOR--RUTH      RUTH   --VERNE     RUTH   --SYLVIA    VERNE  --SYLVIA   
+ ... omitted several edges

The resulting object, women_bin, is now a binary one-mode network in which only stronger-than-average shared-event ties are retained. In other words, two women are connected only if they attended more events together than the average pair.

Figure 6.4 shows this binarized projection.

Figure 6.4: Binary projection of the Southern Women network onto the women using a global threshold based on the mean edge weight.

Compared to the fully weighted projection, the network is noticeably sparser, highlighting more cohesive and substantively stronger connections while filtering out weaker, potentially incidental overlaps.

6.4.3 Model-based Binary Projections

The global threshold method is very simple but can lead to undesirable structural features. More sophisticated tools work with statistical models which determine if an edge weight differs enough from the expected value of an underlying null model (Neal 2014). If so, the edge is kept in the binary projection. Many of such models are implemented in the backbone package.

The idea behind all of the models is always the same:

  1. Create the weighted projection of interest, e.g. B <- A%*%t(A)
  2. Generate random two-mode networks according to a given model.
  3. Compare if the values B[i,j] differ significantly from the distribution of values in the random projections.

The only difference in all models is the construction of the random two-mode networks which follow different rules:

  • Fixed Degree Sequence Model fdsm(): Create random two-mode networks with the same row and column sums as A.
  • Fixed Column Model fixedcol(): Create random two-mode networks with the same column sums as A.
  • Fixed Row Model fixedrow(): Create random two-mode networks with the same row sums as A.
  • Fixed Fill Model fixedfill(): Create random two-mode networks with the same number of ones as A.
  • Stochastic Degree Sequence Model sdsm(): Create random two-mode networks with approximately the same row and column sums as A.

Before we move to an actual use case, you may ask: Which model is the correct one for me? That is actually quite a tricky question. There is some guidance available (Neal et al. 2021), but in general you can follow these rough questions:

  1. Use the model that fits your empirical setting or a known link formation process. If that link formation process dictates that row sums are fixed but column sums not, then choose fixedrow().
  2. Use fdsm() if your network is small enough. Sampling from the FDSM is quite expensive.
  3. Use the sdsm() for large networks.

Given that there is never a “ground-truth” binary projection, any choice of model is at least not inherently wrong as long as it is motivated substantively and not merely because it fits the narrative best.

To illustrate model fitting in a substantive setting, we use a bill cosponsorship network from the U.S. Senate in 2015 (available in the networkdata package). The data form a two-mode network in which one set of nodes represents senators and the other represents bills; a tie between a senator and a bill indicates sponsorship or cosponsorship. We are interested in examining the binary one-mode projection onto senators, i.e. a network in which two senators are connected if they sponsored at least one bill together.

data("cosponsor")
cosponsor
IGRAPH 6eddec8 UN-B 3984 26392 -- 
+ attr: name (v/c), type (v/l), party (v/c)
+ edges from 6eddec8 (vertex names):
 [1] 115s1   --Enzi, Michael B.    115s10  --Cardin, Benjamin L.
 [3] 115s10  --Wicker, Roger F.    115s100 --Alexander, Lamar   
 [5] 115s1000--Franken, Al         115s1000--Murray, Patty      
 [7] 115s1000--Brown, Sherrod      115s1000--Warren, Elizabeth  
 [9] 115s1000--Markey, Edward J.   115s1001--Crapo, Mike        
[11] 115s1001--Blumenthal, Richard 115s1001--Murphy, Christopher
[13] 115s1001--Cassidy, Bill       115s1001--Alexander, Lamar   
[15] 115s1001--Bennet, Michael F.  115s1002--Moran, Jerry       
+ ... omitted several edges

Because the resulting network is fairly large, we will rely on the SDSM (Stochastic Degree Sequence Model) for modeling. It is important to note that the implemented projection models automatically generate the one-mode projection for the node set where type == FALSE. If the goal is instead to project onto the nodes with type == TRUE, the type attribute must first be inverted. In other words, the coding of the bipartite membership determines which mode is projected by default, so care must be taken to ensure that the correct node set is being analyzed.

senators <- sdsm(cosponsor, alpha = 0.05, signed = FALSE)
Warning in sdsm(cosponsor, alpha = 0.05, signed = FALSE): 'sdsm' is deprecated.
Use 'backbone_from_projection(model = "sdsm")' instead.
See help("Deprecated")
The backbone package for R (v3.0.3; Neal, 2025) was used to extract the unweighted backbone of the weighted projection of a bipartite network containing 110 agents and 3874 artifacts. An edge was retained in the backbone if its weight was statistically significant (alpha = 0.05) using the stochastic degree sequence model (SDSM; Neal, Domagalski, and Sagan, 2021), which removed 70.9% of the edges.

Neal, Z. P. 2025. backbone: An R Package to Extract Network Backbones. CRAN. https://doi.org/10.32614/CRAN.package.backbone

Neal, Z. P., Domagalski, R., and Sagan, B. (2021). Comparing Alternatives to the Fixed Degree Sequence Model for Extracting the Backbone of Bipartite Projections. Scientific Reports, 11, 23929. https://doi.org/10.1038/s41598-021-03238-3
senators
IGRAPH e9a33e8 UN-- 110 1591 -- sdsm backbone
+ attr: name (g/c), call (g/x), narrative (g/c), name (v/c), party
| (v/c), oldweight (e/n)
+ edges from e9a33e8 (vertex names):
 [1] Enzi, Michael B.--Moran, Jerry     Enzi, Michael B.--Scott, Tim      
 [3] Enzi, Michael B.--Daines, Steve    Enzi, Michael B.--Perdue, David   
 [5] Enzi, Michael B.--Blunt, Roy       Enzi, Michael B.--Inhofe, James M.
 [7] Enzi, Michael B.--Barrasso, John   Enzi, Michael B.--Fischer, Deb    
 [9] Enzi, Michael B.--Ernst, Joni      Enzi, Michael B.--Rounds, Mike    
[11] Enzi, Michael B.--Kennedy, John    Enzi, Michael B.--Flake, Jeff     
[13] Enzi, Michael B.--Hoeven, John     Enzi, Michael B.--Risch, James E. 
+ ... omitted several edges

With signed = FALSE, the procedure performs a one-tailed test for each edge that has a non-zero weight in the weighted projection. The output is a filtered (or “backbone”) projection that retains only those senator–senator ties whose co-sponsorship strength is significantly greater than expected in the null model at the chosen significance level (alpha = 0.05). In other words, the projection keeps unusually strong co-sponsorship relationships and discards ties that could plausibly arise from baseline activity levels alone.

When signed = TRUE, the procedure performs a two-tailed test for every pair of nodes. This yields a signed backbone: positive edges indicate pairs that co-sponsor significantly more than expected, while negative edges indicate pairs that co-sponsor significantly less than expected under the same null model. The resulting projection is therefore a signed network (see Chapter 7).

Figure 6.5 shows the backbone projection (restricted to the largest connected component) with nodes colored by party.

Figure 6.5: Backbone projection of the U.S. Senate cosponsorship network, with nodes colored by party affiliation. Edges represent statistically significant co-sponsorship ties based on the SDSM null model.

The backbone projection reveals a strongly polarized cosponsorship structure. Nodes are senators, colored by party, and the layout places more strongly connected senators closer together. The most salient feature is the clear separation into two large clusters: a predominantly Republican cluster on the left (red) and a predominantly Democratic cluster on the right (blue). Within each party cluster, the network is very dense, indicating that many pairs of same-party senators cosponsor bills together at rates that are significantly stronger than expected given their overall cosponsorship activity (as captured by the SDSM null model).

In contrast, there are only a small number of edges spanning the gap between the two clusters. These cross-party ties represent relatively rare cases of unusually strong bipartisan cosponsorship. Senators positioned near the boundary between the clusters, and the few cross-cluster edges attached to them, can be interpreted as potential “broker-like” actors in this backbone, in the sense that they are among the limited set of senators whose cosponsorship patterns connect the two partisan blocs. The Independent senators (yellow) appear closer to one side but near the interface, consistent with the idea that independents often align with one coalition while occasionally participating in cross-party collaborations. Overall, the figure shows that once we filter the projection to retain only statistically meaningful ties, cosponsorship is dominated by within-party collaboration, with comparatively little bipartisan structure.

References

Davis, Allison, Burleigh Bradford Gardner, and Mary R Gardner. 2009. Deep South: A Social Anthropological Study of Caste and Class. Univ of South Carolina Press.
Everett, Martin G, and Stephen P Borgatti. 2013. “The Dual-Projection Approach for Two-Mode Networks.” Social Networks 35 (2): 204–10.
Neal, Zachary. 2014. “The Backbone of Bipartite Projections: Inferring Relationships from Co-Authorship, Co-Sponsorship, Co-Attendance and Other Co-Behaviors.” Social Networks 39: 84–97.
Neal, Zachary P, Rachel Domagalski, and Bruce Sagan. 2021. “Comparing Alternatives to the Fixed Degree Sequence Model for Extracting the Backbone of Bipartite Projections.” Scientific Reports 11 (1): 23929.
Opsahl, Tore. 2013. “Triadic Closure in Two-Mode Networks: Redefining the Global and Local Clustering Coefficients.” Social Networks 35 (2): 159–67.