In this post I begin my analysis of the 20th century conflicts dataset.
Loading: Similarly to the datasets I used for the prior assignments, this one will involve the use of a conflict dataset. Given the relative success of the analysis techniques on dyadic conflict in the 9th, 10th, and 11th centuries I decided to try it on a much more recent period, that being the height of the cold war beginning in 1945 and officially ending with the dissolution of the Soviet Union in 1992, however the dataset in question ends in 1989.
Initial Interpretation: After briefly cleaning the dataset to remove excess spaces resulting in nations, or factions being counted twice, I then converted my data in 4 different kinds of network objects, being a matrix, edgelist graph, igraph, and network. A ggplot object of the initial network can be seen below.

Visuals Though not necessarily practical for understanding the nature of the network the two visualization below are used to exhibit the increased complexity of this dataset relative to prior ones, as in previous models of conflict there were under 200 nodes (or factions) being visualized, as will be illustrated in subsequent analysis there were about 600 nations, rebel groups, factions, and warring parties considered direct belligerents in this dataset. It is also important to note that this network does not include direct military support that did did not constitute direct involvement, this will later be included as a grouping dummy variable, but in its current form military support that is not directly intervention will not be considered.
set.seed(2)
ggraph(Wars_in_latter_half_of_20th_network, 'dendrogram', circular = TRUE) +
geom_edge_elbow() +
coord_fixed() +
geom_edge_link0(edge_alpha = 0.001)+
geom_node_text(aes(label = name), size=1, repel=FALSE)

ggraph(Wars_in_latter_half_of_20th_network, layout = "treemap") +
geom_node_tile(aes(fill = depth))+
geom_node_text(aes(label = name), size=1, repel=FALSE)

interpret the data, identifying at least two results of interest. Questions you may want to consider include (but are not limited to) the following. Calculate structural equivalence models for your network data, and use clustering and blockmodeling to identify nodes in similar positions. Can you find any patterns in the data, and do the blocks “make sense.” What types of behavior would we expect to see (or do we see) on the basis of equivalence and block assignment? Do different clustering methods and/or the use of weights make a difference? How much insight can you get from plotting the block role assignments. You may also want to see if nodes that are equivalent (and/or belong to same block) are similar on measures of centrality introduced in earlier weeks.
Network Summary: As can be seen by the network print below the conflict dataset comprises 599 nodes, factions, or belligerents that are direct combatants in each conflict, these are directed with an in-degree being a lost war, and an out-degree being a won war. There are loops as many factions fight each other multiple times and amongst different sets of allies losing some wars and winning others.
Network attributes:
vertices = 599
directed = TRUE
hyper = FALSE
loops = TRUE
multiple = TRUE
bipartite = FALSE
total edges= 1090
missing edges= 0
non-missing edges= 1090
Vertex attribute names:
vertex.names
Edge attribute names not shown
temp<-data.frame(brokerage(Wars_in_latter_half_of_20th_network, cl = Wars_in_latter_half_of_20th_network.nodes.stat$totdegree)$z.nli)
Wars_in_latter_half_of_20th_network.nodes.stat_2 <- Wars_in_latter_half_of_20th_network.nodes.stat %>%
mutate(broker.tot = temp$t,
broker.coord = temp$w_I,
broker.itin = temp$w_O,
broker.rep = temp$b_IO,
broker.gate = temp$b_OI,
broker.lia = temp$b_O)
Brokerage Scores: In this case brokerage scores are calculated using the function brokerage() and appended to the data frame with the these measures
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(totdegree))%>%
slice(1:10))[,c(1,2)] %>%kable()
| name | totdegree |
|---|---|
| United States | 63 |
| Israel | 47 |
| China | 47 |
| Soviet Union | 39 |
| France | 38 |
| Philippines | 35 |
| India | 34 |
| United Kingdom | 31 |
| North Korea | 30 |
| Thailand | 27 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(indegree))%>%
slice(1:10))[,c(1,3)] %>%kable()
| name | indegree |
|---|---|
| Soviet Union | 25 |
| United States | 23 |
| North Korea | 21 |
| China | 20 |
| Syria | 17 |
| Cuba | 16 |
| South Vietnam | 15 |
| SLA | 13 |
| Isreal | 13 |
| Lebanese Front | 13 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(outdegree))%>%
slice(1:10))[,c(1,4)] %>%kable()
| name | outdegree |
|---|---|
| Israel | 47 |
| United States | 40 |
| India | 32 |
| France | 31 |
| China | 27 |
| Philippines | 27 |
| Italy | 26 |
| United Kingdom | 20 |
| Iran | 19 |
| North Vietnam | 19 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(broker.coord))%>%
slice(0:5))[,c(1,12)] %>%kable()
| name | broker.coord |
|---|---|
| Khmer Issarak | -0.0042969 |
| South Africa | -0.0042969 |
| Khmer Rouge | -0.0042969 |
| PLO | -0.0042969 |
| Khmer Republic | -0.0042969 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(broker.itin))%>%
slice(0:5))[,c(1,13)] %>%kable()
| name | broker.itin |
|---|---|
| United States | 30.978006 |
| Ethiopia | 20.451964 |
| China | 13.215216 |
| France | 11.241500 |
| United Kingdom | 7.294199 |
| name | broker.rep |
|---|---|
| PKK | 6.358704 |
| South Yemen | 3.288637 |
| Iran | -0.044345 |
| Israel | -0.044345 |
| Australia | -0.044345 |
| name | broker.gate |
|---|---|
| Morocco | 9.0531209 |
| PUK | 4.1844336 |
| Arab Socialist Ba’ath Party | 0.7091118 |
| Senegal | 0.7091118 |
| Papua New Guinea | 0.5196169 |
| name | broker.lia |
|---|---|
| United States | 286.23524 |
| China | 167.99725 |
| Soviet Union | 110.36960 |
| Philippines | 69.88732 |
| United Kingdom | 67.23274 |

sna::dyad.census(Wars_in_latter_half_of_20th_network)
Mut Asym Null
[1,] 115 859 178127
sna::triad.census(Wars_in_latter_half_of_20th_network)
003 012 102 021D 021U 021C 111D 111U 030T 030C 201
[1,] 35068530 545959 17760 3817 1904 1822 526 639 46 0 83
120D 120U 120C 210 300
[1,] 0 3 10 0 0
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(eigen))%>%
slice(0:5))[,c(1,5)] %>%kable()
| name | eigen |
|---|---|
| China | 0.3435636 |
| North Vietnam | 0.2973257 |
| Pathet Lao | 0.2836275 |
| Khmer Rouge | 0.2223014 |
| Khmer Issarak | 0.2153606 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(close))%>%
slice(0:5))[,c(1,6)] %>%kable()
| name | close |
|---|---|
| Israel | 0.1664994 |
| United States | 0.1536232 |
| China | 0.1497492 |
| France | 0.1449833 |
| Pathet Lao | 0.1380435 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(eigen.rc))%>%
slice(0:5))[,c(1,8)] %>%kable()
| name | eigen.rc |
|---|---|
| Ethiopia | 0.0801873 |
| France | 0.0627097 |
| South Africa | 0.0451530 |
| United Kingdom | 0.0303952 |
| United States | 0.0294664 |
(Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
arrange(desc(eigen.dc))%>%
slice(0:5))[,c(1,10)] %>%kable()
| name | eigen.dc |
|---|---|
| China | 0.3166654 |
| North Vietnam | 0.2973257 |
| Pathet Lao | 0.2836275 |
| Khmer Rouge | 0.2223014 |
| Khmer Issarak | 0.2153606 |
Wars_in_latter_half_of_20th_network.nodes.stat_2%>%
select(-name) %>%
gather() %>%
ggplot(aes(value)) +
geom_histogram() +
facet_wrap(~key, scales = "free")

wars_correlation_latter_half<-Wars_in_latter_half_of_20th_network.nodes.stat_2 %>%
select(totdegree,indegree,outdegree,eigen,eigen.rc,eigen.dc)%>%
correlate()
fashion(wars_correlation_latter_half)
term totdegree indegree outdegree eigen eigen.rc eigen.dc
1 totdegree .71 .87 .64 .55 .60
2 indegree .71 .28 .34 .45 .30
3 outdegree .87 .28 .64 .45 .62
4 eigen .64 .34 .64 .53 .99
5 eigen.rc .55 .45 .45 .53 .42
6 eigen.dc .60 .30 .62 .99 .42
rplot(wars_correlation_latter_half)

#net.js <- Wars_in_latter_half_of_20th.ig
#graph_attr(net.js, "layout") <- NULL
#gjs <- graphjs(net.js, main="Cold War Interactive Network", bg="gray10", #vertex.size=0.5, showLabels=T, vertex.label = V(net.js)$name, stroke=F, curvature=0.1, #attraction=0.9, repulsion=0.7, opacity=0.9)
#print(gjs)
#saveWidget(gjs, file="Media-Network-gjs.html")
#browseURL("Media-Network-gjs.html")
Text and figures are licensed under Creative Commons Attribution CC BY-NC 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Milstein (2022, March 12). Data Analytics and Computational Social Science: Into the 20th Century (Conflict Data) Homework 6. Retrieved from https://nmilsteinuma.github.io/posts/2022-03-07-into-the-20th-century-conflict-data/
BibTeX citation
@misc{milstein2022into,
author = {Milstein, Noah},
title = {Data Analytics and Computational Social Science: Into the 20th Century (Conflict Data) Homework 6},
url = {https://nmilsteinuma.github.io/posts/2022-03-07-into-the-20th-century-conflict-data/},
year = {2022}
}