A Network Analysis of Florentine Families
plot(network_igraph)
print(network_statnet)
Network attributes:
vertices = 16
directed = FALSE
hyper = FALSE
loops = FALSE
multiple = FALSE
bipartite = FALSE
total edges= 20
missing edges= 0
non-missing edges= 20
Vertex attribute names:
vertex.names
No edge attributes
is_bipartite(network_igraph)
[1] FALSE
is_directed(network_igraph)
[1] FALSE
is_weighted(network_igraph)
[1] FALSE
Looking at Igraph and Statnet, I have confirmed that this is a single mode, undirected, unweighted dataset.
sna::dyad.census(network_statnet)
Mut Asym Null
[1,] 20 0 100
sna::triad.census(network_statnet)
003 012 102 021D 021U 021C 111D 111U 030T 030C 201 120D 120U
[1,] 324 0 195 0 0 0 0 0 0 0 38 0 0
120C 210 300
[1,] 0 0 3
transitivity(network_igraph, type = "global")
[1] 0.1914894
transitivity(network_igraph, type = "average")
[1] 0.2181818
The average transitivity is slightly higher than the global transitivity. This could be do to certain small clusters with high transitivity.
It looks like we have one isolate. From the plot above we can tell its the Pucci family.
network::list.vertex.attributes(network_statnet)
[1] "na" "vertex.names"
network.nodes <- data.frame(name = network_statnet%v%"vertex.names",
totdegree = sna::degree(network_statnet),
in.degree = sna::degree(network_statnet, cmode = "indegree"),
out.degree = sna::degree(network_statnet, cmode = "outdegree"),
eigen = round(sna::evcent(network_statnet),3),
Bonacich.Power = round(sna::bonpow(network_statnet),3))
rownames(network.nodes)<- NULL
network.nodes %>% arrange(desc(eigen)) %>% head() %>% knitr::kable()
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power |
---|---|---|---|---|---|
Medici | 12 | 6 | 6 | 0.430 | -0.569 |
Strozzi | 8 | 4 | 4 | 0.356 | 0.190 |
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 |
Tornabuoni | 6 | 3 | 3 | 0.326 | 1.139 |
Guadagni | 8 | 4 | 4 | 0.289 | -0.190 |
Bischeri | 6 | 3 | 3 | 0.283 | 0.000 |
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power |
---|---|---|---|---|---|
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 |
Tornabuoni | 6 | 3 | 3 | 0.326 | 1.139 |
Strozzi | 8 | 4 | 4 | 0.356 | 0.190 |
Bischeri | 6 | 3 | 3 | 0.283 | 0.000 |
Lamberteschi | 2 | 1 | 1 | 0.089 | 0.000 |
Pazzi | 2 | 1 | 1 | 0.045 | 0.000 |
The medici’s have the highest eigen centraility while the Ridolfi and Tornauoni’s have the highest Bonacich Power.
## Reflected Centrality
mat_flor <- as.matrix(as_adjacency_matrix(network_igraph))
mat_flor.sq <- t(mat_flor) %*% mat_flor
network.nodes$rc <- round(diag(mat_flor.sq)/rowSums(mat_flor.sq),3)
network.nodes$rc <- ifelse(is.nan(network.nodes$rc),0,network.nodes$rc)
network.nodes$eigen.rc <- round(network.nodes$eigen*network.nodes$rc,3)
## Derived Centrality
network.nodes$dc <- round(1 - diag(mat_flor.sq)/rowSums(mat_flor.sq),3)
network.nodes$dc <- ifelse(is.nan(network.nodes$dc),1,network.nodes$dc)
network.nodes$eigen.dc <- round(network.nodes$eigen*network.nodes$dc,3)
network.nodes%>%arrange(desc(eigen.dc)) %>% head() %>% knitr::kable()
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power | rc | eigen.rc | dc | eigen.dc |
---|---|---|---|---|---|---|---|---|---|
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 | 0.231 | 0.079 | 0.769 | 0.263 |
Tornabuoni | 6 | 3 | 3 | 0.326 | 1.139 | 0.231 | 0.075 | 0.769 | 0.251 |
Medici | 12 | 6 | 6 | 0.430 | -0.569 | 0.429 | 0.184 | 0.571 | 0.246 |
Strozzi | 8 | 4 | 4 | 0.356 | 0.190 | 0.333 | 0.119 | 0.667 | 0.237 |
Bischeri | 6 | 3 | 3 | 0.283 | 0.000 | 0.273 | 0.077 | 0.727 | 0.206 |
Peruzzi | 6 | 3 | 3 | 0.276 | -0.569 | 0.300 | 0.083 | 0.700 | 0.193 |
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power | rc | eigen.rc | dc | eigen.dc |
---|---|---|---|---|---|---|---|---|---|
Medici | 12 | 6 | 6 | 0.430 | -0.569 | 0.429 | 0.184 | 0.571 | 0.246 |
Strozzi | 8 | 4 | 4 | 0.356 | 0.190 | 0.333 | 0.119 | 0.667 | 0.237 |
Guadagni | 8 | 4 | 4 | 0.289 | -0.190 | 0.400 | 0.116 | 0.600 | 0.173 |
Castellani | 6 | 3 | 3 | 0.259 | -1.329 | 0.333 | 0.086 | 0.667 | 0.173 |
Peruzzi | 6 | 3 | 3 | 0.276 | -0.569 | 0.300 | 0.083 | 0.700 | 0.193 |
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 | 0.231 | 0.079 | 0.769 | 0.263 |
For derived centrality the highest are the Ridolfi’s, Tournabuoni, and the Medici Family. For reflected centrality the Medici have the most by far at .18. The next highest are from the Strozzi and Guadagni at .11.
network.nodes$closeness<-round(sna::closeness(network_statnet, gmode = "graph", cmode = "suminvundir"),3)
network.nodes %>% arrange(desc(closeness)) %>% knitr::kable()
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power | rc | eigen.rc | dc | eigen.dc | closeness |
---|---|---|---|---|---|---|---|---|---|---|
Medici | 12 | 6 | 6 | 0.430 | -0.569 | 0.429 | 0.184 | 0.571 | 0.246 | 0.633 |
Guadagni | 8 | 4 | 4 | 0.289 | -0.190 | 0.400 | 0.116 | 0.600 | 0.173 | 0.539 |
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 | 0.231 | 0.079 | 0.769 | 0.263 | 0.533 |
Albizzi | 6 | 3 | 3 | 0.244 | -2.088 | 0.273 | 0.067 | 0.727 | 0.177 | 0.522 |
Strozzi | 8 | 4 | 4 | 0.356 | 0.190 | 0.333 | 0.119 | 0.667 | 0.237 | 0.522 |
Tornabuoni | 6 | 3 | 3 | 0.326 | 1.139 | 0.231 | 0.075 | 0.769 | 0.251 | 0.522 |
Bischeri | 6 | 3 | 3 | 0.283 | 0.000 | 0.273 | 0.077 | 0.727 | 0.206 | 0.480 |
Barbadori | 4 | 2 | 2 | 0.212 | -1.519 | 0.222 | 0.047 | 0.778 | 0.165 | 0.472 |
Castellani | 6 | 3 | 3 | 0.259 | -1.329 | 0.333 | 0.086 | 0.667 | 0.173 | 0.461 |
Peruzzi | 6 | 3 | 3 | 0.276 | -0.569 | 0.300 | 0.083 | 0.700 | 0.193 | 0.452 |
Salviati | 4 | 2 | 2 | 0.146 | -0.190 | 0.286 | 0.042 | 0.714 | 0.104 | 0.439 |
Acciaiuoli | 2 | 1 | 1 | 0.132 | -0.380 | 0.167 | 0.022 | 0.833 | 0.110 | 0.394 |
Lamberteschi | 2 | 1 | 1 | 0.089 | 0.000 | 0.250 | 0.022 | 0.750 | 0.067 | 0.358 |
Ginori | 2 | 1 | 1 | 0.075 | -1.898 | 0.333 | 0.025 | 0.667 | 0.050 | 0.356 |
Pazzi | 2 | 1 | 1 | 0.045 | 0.000 | 0.500 | 0.022 | 0.500 | 0.022 | 0.318 |
Pucci | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 1.000 | 0.000 | 0.000 |
summary(network.nodes$closeness)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0000 0.3850 0.4665 0.4376 0.5220 0.6330
The medici family has the highest closeness centrality of .633. The median closeness is .467 and the mean is.437, so the max of .633 is not to much higher then everyone else in the group.
centr_clo(network_igraph)$centralization
[1] 0.1790292
I’m a bit confused why the closeness centraliztion is so much lower then average closeness seen above.
#igraph::betweenness(network_igraph, directed = FALSE)
network.nodes$betweenness <-round(sna::betweenness(network_statnet, gmode = "graph"),3)
network.nodes %>% arrange(desc(betweenness)) %>% head() %>% knitr::kable()
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power | rc | eigen.rc | dc | eigen.dc | closeness | betweenness |
---|---|---|---|---|---|---|---|---|---|---|---|
Medici | 12 | 6 | 6 | 0.430 | -0.569 | 0.429 | 0.184 | 0.571 | 0.246 | 0.633 | 47.500 |
Guadagni | 8 | 4 | 4 | 0.289 | -0.190 | 0.400 | 0.116 | 0.600 | 0.173 | 0.539 | 23.167 |
Albizzi | 6 | 3 | 3 | 0.244 | -2.088 | 0.273 | 0.067 | 0.727 | 0.177 | 0.522 | 19.333 |
Salviati | 4 | 2 | 2 | 0.146 | -0.190 | 0.286 | 0.042 | 0.714 | 0.104 | 0.439 | 13.000 |
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 | 0.231 | 0.079 | 0.769 | 0.263 | 0.533 | 10.333 |
Bischeri | 6 | 3 | 3 | 0.283 | 0.000 | 0.273 | 0.077 | 0.727 | 0.206 | 0.480 | 9.500 |
The medici family has the highest closeness and the highest betweeness. this means that the Medici Family receiving information the faestest out of all the familys and is also relied apon most in the network for for information. It seems the medici family really controls the flow of information in this network. ## Betweenness Centralization
centr_betw(network_igraph, directed = F)$centralization
[1] 0.3834921
network.nodes$Constraint <- round(constraint(network_igraph),3)
network.nodes %>% arrange(desc(Constraint)) %>% head()%>% knitr::kable()
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power | rc | eigen.rc | dc | eigen.dc | closeness | betweenness | Constraint |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Acciaiuoli | 2 | 1 | 1 | 0.132 | -0.380 | 0.167 | 0.022 | 0.833 | 0.110 | 0.394 | 0.0 | 1.000 |
Ginori | 2 | 1 | 1 | 0.075 | -1.898 | 0.333 | 0.025 | 0.667 | 0.050 | 0.356 | 0.0 | 1.000 |
Lamberteschi | 2 | 1 | 1 | 0.089 | 0.000 | 0.250 | 0.022 | 0.750 | 0.067 | 0.358 | 0.0 | 1.000 |
Pazzi | 2 | 1 | 1 | 0.045 | 0.000 | 0.500 | 0.022 | 0.500 | 0.022 | 0.318 | 0.0 | 1.000 |
Peruzzi | 6 | 3 | 3 | 0.276 | -0.569 | 0.300 | 0.083 | 0.700 | 0.193 | 0.452 | 2.0 | 0.656 |
Barbadori | 4 | 2 | 2 | 0.212 | -1.519 | 0.222 | 0.047 | 0.778 | 0.165 | 0.472 | 8.5 | 0.500 |
name | totdegree | in.degree | out.degree | eigen | Bonacich.Power | rc | eigen.rc | dc | eigen.dc | closeness | betweenness | Constraint |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Medici | 12 | 6 | 6 | 0.430 | -0.569 | 0.429 | 0.184 | 0.571 | 0.246 | 0.633 | 47.500 | 0.210 |
Guadagni | 8 | 4 | 4 | 0.289 | -0.190 | 0.400 | 0.116 | 0.600 | 0.173 | 0.539 | 23.167 | 0.250 |
Albizzi | 6 | 3 | 3 | 0.244 | -2.088 | 0.273 | 0.067 | 0.727 | 0.177 | 0.522 | 19.333 | 0.333 |
Strozzi | 8 | 4 | 4 | 0.356 | 0.190 | 0.333 | 0.119 | 0.667 | 0.237 | 0.522 | 9.333 | 0.458 |
Ridolfi | 6 | 3 | 3 | 0.342 | 1.329 | 0.231 | 0.079 | 0.769 | 0.263 | 0.533 | 10.333 | 0.460 |
Tornabuoni | 6 | 3 | 3 | 0.326 | 1.139 | 0.231 | 0.075 | 0.769 | 0.251 | 0.522 | 8.333 | 0.460 |
As expected the Medici Family has the lowest amount of constraint.
We have an undirected network, therefor we are unable to calculate the gould-fernandez brokerage.
For attribution, please cite this work as
Sullivan (2022, March 22). Project List: Florentine Families Network Analysis. Retrieved from https://pjsulliv34.github.io/Blog/posts/florentine-families-network-analysis/
BibTeX citation
@misc{sullivan2022florentine, author = {Sullivan, Peter}, title = {Project List: Florentine Families Network Analysis}, url = {https://pjsulliv34.github.io/Blog/posts/florentine-families-network-analysis/}, year = {2022} }