Network Degree

Network Degree of Football Networks

Isha Mahajan, Ankit Kumar (UMass Amherst)
2022-05-08

Assignment Description

Briefly describe the dataset you are using: identify initial network format, describe and identify the nodes (including how many nodes are in the dataset), what constitutes a tie or edge (including how many ties, whether ties are directed/undirected and weighted/binary, and how to interpret the value of the tie if any), whether or not there are edge attributes that might be used to subset data or stack multiple networks (e.g., tie type, year, etc). Not every feature of the network needs to be described, but description should orient reader to the network data and provide any necessary context for the results provided.

Provide at least two or three noteworthy results, including the relevant statistics and interpretation. For example, explaining which node(s) are most central and which are least central. Discuss (with any related evidence) whether or not the node(s) behavior is in line with or violates expectations based on the degree centrality measure. What do you make of network density and centralization measures?

Density

graph.density(ig, loops = FALSE)
[1] 0.005841598

The network density of the football transfer network is 0.005 which indicates that the 0.5% of all possible ties in the network are made. In this case we would leave the loops value as false because it is not possible for a football team to transfer a player back to their own team.

Degree

The degree measures the node centrality or a popularity of a node. It gives a count of the relationships that a node is involved in or the number of edges it has. Given that the goal of these blogs to keep all these important network properties in one place, I begin by creating a dataframe that I’ll keep on building as I create these blogs. I call this data frame transfer.nodes.

#create degree column
transfer.nodes<-data.frame(name=V(ig)$name, degree=igraph::degree(ig))
#create indegree and outdegree column
transfer.nodes<-transfer.nodes %>%
           mutate(indegree=igraph::degree(ig, mode="in", loops=FALSE),
           outdegree=igraph::degree(ig, mode="out", loops=FALSE))
# clubs that have the highest relationships in the network
degree <- transfer.nodes %>% 
  arrange(desc(degree)) 
kable(head(degree))
name degree indegree outdegree
AS Roma AS Roma 78 39 39
Genoa CFC Genoa CFC 73 46 27
AS Monaco AS Monaco 72 39 33
US Sassuolo US Sassuolo 70 35 35
Inter Milan Inter Milan 68 32 36
Juventus FC Juventus FC 68 27 41
# Clubs that recieved the most transfers.
indegree <- transfer.nodes %>% 
  arrange(desc(indegree)) 
kable(head(indegree))
name degree indegree outdegree
Genoa CFC Genoa CFC 73 46 27
AS Roma AS Roma 78 39 39
AS Monaco AS Monaco 72 39 33
ACF Fiorentina ACF Fiorentina 66 38 28
AC Milan AC Milan 60 38 22
Parma Calcio 1913 Parma Calcio 1913 48 38 10
# Clubs that transferred the most.
outdegree <- transfer.nodes %>% 
arrange(desc(outdegree)) 
kable(head(outdegree))
name degree indegree outdegree
Juventus FC Juventus FC 68 27 41
Sporting CP Sporting CP 63 24 39
AS Roma AS Roma 78 39 39
FC Barcelona FC Barcelona 59 21 38
SL Benfica SL Benfica 63 25 38
Inter Milan Inter Milan 68 32 36

AS ROMA has the highest degree in our football transfer network. Both the in degree and the out degrees hold a value of 39. This means that 39 transfer of players have left the club and 39 players have come in to the club.This makes me wonder if AS ROMA is a club which might be serving like a starting point for various players to move towards the major football leagues. But there might be better ways to explore that later in the analysis.

Genoa FC has the indegree of 46 which means they’ve had 46 transfers to their club.

Juventus FC has the highest ourdegree which means they’ve transferred 41 players out of the club.

#V(ig)$name
roma_movement <- incident(ig, 66, mode = c("all"))
#table(head_of(ig, E(ig)))
# make a basic plot
plot(ig, 
     vertex.label.color = "black", 
     edge.color = 'gray77',
     vertex.size = 6,
     edge.arrow.size = 0.1,
     layout = layout_nicely(ig))

Degree Distributions

#create a histogram of Transfer Indegree
hist(transfer.nodes$indegree, main="Football Transfers: In-degree Distribution", xlab="Players Recieved")

#create a histogram of Transfer Indegree
hist(transfer.nodes$outdegree, main="Football Transfers: Out-degree Distribution", xlab="Players Transferred")

Network Degree Centralization

Add Interpretation, check if loops are supposed to be true or false

#get network centralization score: igraph
centr_degree(ig, loops = FALSE, mode="in")$centralization
[1] 0.04733078
centr_degree(ig, loops = FALSE, mode="out")$centralization
[1] 0.04155044