Into the 20th Century (Conflict Data) Homework 6

In this post I begin my analysis of the 20th century conflicts dataset.

Noah Milstein true
2022-03-07

Loading and Summarizing Data

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.

Interpretation and Inital Analysis

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.

Continued Visualization

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.

Inital Analysis and Interpretation

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 and Network Attributes

Brokerage Scores: In this case brokerage scores are calculated using the function brokerage() and appended to the data frame with the these measures

Total Degree
(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
In-Degree
(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
Out-Degree
(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

Examining Centrality

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")

Reuse

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 ...".

Citation

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}
}