Unit 2 Independent Analysis: Fraternity Network

I was interested in (Carolan 2014)’s usage of Newcomb’s fraternity data in Chapter 4, so I decided to run my own analysis of the data, namely using some of the visualization techniques that we used in our Unit 2 case study. My research question, which has two sub-questions, is as follows:

  1. In this directed network data, are there fraternity members that are closer with one another than other fraternity members? To help answer this, I ask:

    1. What is the reciprocity of the ties reported within this fraternity?

    2. Based on the data, what is the centrality of the actors within this fraternity?

Prepare

We need to install and load the following libraries:

install.packages(c("tidyverse","ggraph","tidygraph","igraph","readxl"))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.1'
## (as 'lib' is unspecified)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
## ✓ tibble  3.1.6     ✓ dplyr   1.0.7
## ✓ tidyr   1.1.4     ✓ stringr 1.4.0
## ✓ readr   2.1.2     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(ggraph)
library(tidygraph)
## 
## Attaching package: 'tidygraph'
## The following object is masked from 'package:stats':
## 
##     filter
library(igraph)
## 
## Attaching package: 'igraph'
## The following object is masked from 'package:tidygraph':
## 
##     groups
## The following objects are masked from 'package:dplyr':
## 
##     as_data_frame, groups, union
## The following objects are masked from 'package:purrr':
## 
##     compose, simplify
## The following object is masked from 'package:tidyr':
## 
##     crossing
## The following object is masked from 'package:tibble':
## 
##     as_data_frame
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## The following object is masked from 'package:base':
## 
##     union
library(readxl)

I modified and uploaded a version of “Fraternity Data Chapter 5.xlsx,” titled “Frat Matrix” (which would be a hilarious spinoff movie), so that it included an additional row of column titles. As it was, when I imported the original file, the top row of data was overwritten by column titles and resulted in a 16x17 matrix that was missing actor 1’s responses.

frat_data <- read_xlsx("data/Frat Matrix.xlsx")

Wrangle

To prepare this dataframe to become a graphable matrix object, I first needed to give it row names.

rownames(frat_data) <- 1:17
## Warning: Setting row names on a tibble is deprecated.

Then it was ready to become a matrix object.

frat_matrix <- as.matrix(frat_data)

Then I turned it into a graph object.

frat_network <- as_tbl_graph(frat_matrix, directed = TRUE)

Explore

I made a quick visualization, just to see what was going on and that it was consistent with how the network was graphed in (Carolan 2014).

autograph(frat_network)

Reciprocity

Now it was time to examine the network’s reciprocity and add it to the final visual product.

reciprocity(frat_network)
## [1] 0.4705882

According to Carolan (2014), reciprocity is “defined as the degree to which actors in a directed network select one another.” According to this statistic, a little under half of the reported ties between these fraternity members were mutual. I then added added reciprocity as a new edge variable to frat_network, which would be called upon later in the visualization. Mutual connections will be teal, and one-way connections, or arcs, will be in red.

frat_network <- frat_network |>
  activate(edges) |>
  mutate(reciprocated = edge_is_mutual())

Centrality

I then did the same for how centralized the network might be. “A network that is highly centralized is one in which relations are focused on one or a small set of actors” (Carolan).

centr_degree(frat_network, mode = "all")
## $res
##  [1]  5  4  4  8  4  5  7  4  7  6 11  9  5  3  5  4 11
## 
## $centralization
## [1] 0.1660156
## 
## $theoretical_max
## [1] 512

While this is a directed network, I just chose to model centrality across both “in” and “out” connections. The greater the centrality of an actor, the larger the node will be in the graph.

frat_network <- frat_network |>
  activate(nodes) |>
  mutate(degree = centrality_degree(mode = "all"))

Final Visualization

I then ran ggraph to create the final product. Due to the persistent legend bug, I omitted the legend. To reiterate, reciprocal ties are teal while one-way ties are red, and a larger node indicates a more central actor.

ggraph(frat_network, layout = "fr") +
  geom_node_point(aes(size = degree)) +
  geom_edge_link(aes(colour = reciprocated)) +
  theme_graph() +
  theme(legend.position = 'none')

Discussion

To reiterate, here was my research question and its sub-questions:

  1. In this directed network data, are there fraternity members that are closer with one another than other fraternity members? To help answer this, I ask:

    1. What is the reciprocity of the ties reported within this fraternity?

    2. Based on the data, what is the centrality of the actors within this fraternity?

The reciprocity was only demonstrated across less than half of the network, and as you can see in the visualization it seems to be mostly among two clusters, one to the left and one to the right. However, the left cluster also has more centralized actors. Between these two measures, it looks as if there are two main groups of closer friends within the fraternity, and one of those groups has more connections with the fraternity at large than the other. It is difficult to say what implications this data might have other than that incoming fraternity classes are likely not created in a vacuum, per se; some of these incoming students possibly knew each other, bringing in artifacts from their own exterior social networks that would affect the ties within the fraternity class.

I thought this would be an interesting to visually explore the concept of clustering, even if that is already another established means of measuring that. Naturally, a next step would have been to compare this visualization to an actual cluster analysis. Ideally, I would have liked to see how this network changes over the course of the semester, seeing if the network would become more or less dense, clustered, centralized and/or reciprocal.

Carolan, Brian. 2014. “Social Network Analysis and Education: Theory, Methods & Applications.” https://doi.org/10.4135/9781452270104.