The world today is as interconnected as it has ever been. Economic, social, and political change in one country send shock waves across the world. Because of this, international relations and diplomacy are constantly in use and tested. The most prevalent form of these international relations—besides financial markets—are treaties. For centuries treaties have shaped and manipulated borders, security, and trade. Do certain countries influence treaty making and international relations more than others? Do these specific power brokers enhance national security and make the world a safer place? These are the questions I hope to answer in the project below. With that in mind, I hypothesize that the “Major World Powers” (which I will define below)—like the United States, Russia, France, Germany, and the United Kingdom—will have a greater connection via treaties to the rest of the world. Because I expect a high volume from these countries, I also hypothesize that in the years of greater treaty making, we can expect future years of peace.
The data set used to explore this question came from the Correlates of War Formal Interstate Alliance Dataset (created by University of Alabama Professor of Political Science, Douglas Gibler). Specifically, I used version 4.3—the Directed-Dyad Format—which made it so countries listed as state_name1 (state #1) made promises or directed the treaty toward the country listed as state_name2 (state #2). I chose this data set so that I could make it a directed network. Furthermore, I manipulated the dataset so that the columns listing state #1 and state #2 were the first two in the data, making it easier to create an igraph. Thus, I removed the version ID (which according to Professor Gibler—who I reached out to—are an arbitrarily assigned grouping of numbers), and the state name codes.
I have attached the variable dictionary for better understanding, but I will also briefly summarize the variables I used here. First, dyad_st_year, represents the year in which the alliance went into effect according to the Correlates of War system. Next, the types of treaties are listed in 0 and 1 form, with a 1 indicating the type of treaty it is. There is overlap, meaning a defense treaty can also count as a nonaggression treaty for example. The dictionary describes a left_censor treaty as an alliance that existed prior to 1/1/1816—the furthest back the dataset goes. A right_censor treaty is a directed dyad that is still considered in effect as of 12/31/2012. The final three types of treaties are defense, which says state #1 signed a defense pact to protect state #2, a neutrality treaty, which indicates that state #1 agreed to remain neutral toward state #2, a nonaggression treaty, which says that state #1 agrees to not attack state #2, and lastly an entente treaty, which says that state #1 agreed to consult with state #2 in the event of a crisis.
Using this information, I will first explore the volume and types of connections, then conduct a network analysis to see how countries interact with each other.
alliance <- read.csv("~/Downloads/version4.1_csv/alliance_v4.1_by_directedNEW.csv", header=TRUE) library(igraph) library(ggplot2) g=graph.data.frame(alliance,directed=TRUE)
Attaching package: ‘igraph’ The following objects are masked from ‘package:stats’: decompose, spectrum The following object is masked from ‘package:base’: union
As I explained above, the dataset I chose above allowed me to make this igrpah into a directed network. Thus, after loading in the data (which I manipulated ahead of time), I created igrpah "g" to be used for later network analysis.
TPY<-table(alliance$state_name1, alliance$dyad_st_year) TreatyperYear<-apply(TPY, MARGIN=2, FUN=sum) head(TreatyperYear) barplot(TreatyperYear)
To begin, I created a plot of the total number of treaties per year. This is a good jumping off point to best see how the number of treaties fluctuates over time, with some years hitting around 400 different treaties and others close to zero. Furthermore, although this is a simple graphic, it is useful for knowing which years or decades to explore in greater detail later on. It appears that diplomacy has increased over time, and that the post-World War II era serves as a defining moment that the world got smaller and more connected via treaties.
This graphic is a good starting point, however, not every treaty is equal in terms of relevance or power. To best see how these treaties are truly operating with each other, it is necessary to look at the treaties induced (meaning they are state #1) by the major world powers. Using Professor James Morrow's, "The Political Determinants of International Trade: The Major Powers, 1907-1990" list of major powers I selected the US, Russia, UK, France, and Germany. I removed Italy from my list of Major powers given its current lack of international involvement, which aligns with additional scholarly research (see works cited). Additionlly, the eigenvector and betweeness centrality scores below confirm that these countries are indeed at the center of international diplomacy. Although, I am making certain assumptions with my selection, I beleive that current and historical rhetoric would agree that these are the countries that have been at the center of the world for the longest time.
Major<-alliance[alliance$state_name1==c("United States of America", "Russia", "United Kingdom", "France", "Germany"),] head(Major) dim(Major)
Warning message in is.na(e1) | is.na(e2): “longer object length is not a multiple of shorter object length”Warning message in `==.default`(alliance$state_name1, c("United States of America", : “longer object length is not a multiple of shorter object length”
years <- seq(1811, 2009, by = 1) Major$decade = cut(Major$dyad_st_year, seq(from = 1810, to = 2010, by = 10), include.lowest=TRUE, labels=seq(1810,2000, by=10)) Major$decade
ggplot(Major, aes(decade))+geom_bar(aes(fill=state_name1), color="black")+facet_wrap(~state_name1) + theme(axis.text.x=element_text(angle=90),legend.justification=c(1,0), legend.position=c(1,0),text = element_text(size=10))+ xlab("Years, 1810-2010") + ylab("Totsl Number of Treaties Signed")+ ggtitle("Major Powers Treaty Count Over Time")
After sub-setting for the 5 Major countries, our number of treaties is reduced from 6444 to 135, a much more manageable work size. Next, to better get a sense of trends we take the dyad_st_year numbers and place them into decades from 1810 to 2010.
To see how the number of treaties signed by the major powers has changed over time, above is a ggplot with the count of treaties for each country from 1810-2010. It appears that France and Germany, and UK have had fairly consistent history of international involvement. Meanwhile, the US and Russia have an increased role in the later part of the 20th century. The US comes into the world strong following World War I. After that and WWII, I believe that the use of nuclear weapons and the US and Russia nuclear umbrellas are the cause for the increase for both countries. Using the network analysis later in this project I will explore this idea further.
ggplot(Major, aes(state_name1)) + geom_bar(aes(fill = state_name1), position = "identity")+ theme(axis.text.x=element_text(angle=90),text = element_text(size=10))+ xlab("Major Powers") + ylab("Totsl Number of Treaties Signed By Type of Treaty")+ ggtitle("Major Powers Treaty Count and Type; 1810-2010")
head(Major) Major$Type=rep("defense", 135) head(Major) Major$Type[Major$defense==0]<-"non-defense" head(Major)
ggplot(Major, aes(decade)) + geom_bar(aes(fill = Type), position = "stack")+ theme(axis.text.x=element_text(angle=90),text = element_text(size=10))+ ggtitle("Major Powers Defense and Non-defense Treaty Count; 1810-2010")
To better see treaty trends over time, I created a new column that combines treaty types by defense or non-defense treaties (this includes all remaining treaties beside left_censor and right_censor). In doing this we can see that over time there is fairly strong balance between defense and non-defense treaties over time. The exceptions are what we would expect. Following WWII in the 1940s most treaties were defensive, and then in the years after WWII, when the world tried to move away from all out world, an increase in non-aggression and neutrality treaties occurred.
set.seed(1) lout<-layout.fruchterman.reingold(g) head(lout) layout3 <- layout_with_fr(g, start.temp = 50) head(layout3) install.packages("ggplot2") require(ggplot2) library(ggplot2)
The downloaded binary packages are in /var/folders/tc/yzx71v7j0f7gstydf6tc38qc0000gn/T//RtmpAHWIvI/downloaded_packages
plot.igraph(g, layout=layout3, vertex.size=5, vertex.label.cex=.5, asp = 0)
After exploring trends over time, I turned my attention to the network connections of treaty making. There is not a lot of scholarly work out on this type of international relations studies, but the leading research involves Emilie Hafner-Burton’s “Network Analysis for International Relations”. According to this article, network analysis plays a vital role in investigating the connection between countries. Hafner-Burton concludes that using network analysis to identify power we can redefine “access, brokerage, and exit options”. This study affirms that the work below is part of a new wave of international relations, and that “network analysis has already been demonstrated in more precise description of international networks.”
The first network created is of all the original directed data. It is very messy given the number of nodes and edges. To better understand if this is expected in later networks, I then created a histogram of node degree. It appears that most countries have less than 100 treaties, with only a handful of countries playing a larger role on the international stage.
deg<- degree(g, mode="all") hist(deg, breaks=50, main="Histogram of node degree")
bins <- unique(quantile(deg, seq(0,1, length.out = 5))) bins which(deg >150)
eigenCent <- evcent(g)$vector sort(eigenCent, decreasing = TRUE)[1:10] sort(eigenCent, decreasing = FALSE)[1:10] bt<-betweenness(g) sort(bt, decreasing = TRUE)[1:10] sort(bt, decreasing = FALSE)[1:10] cor(eigenCent, bt) which(eigenCent >.7 & bt > 1800)
gmajor=graph.data.frame(Major,directed=TRUE) eigenCentmajor <- evcent(gmajor)$vector sort(eigenCentmajor, decreasing = TRUE)[1:10] sort(eigenCentmajor, decreasing = FALSE)[1:10] btmajor<-betweenness(gmajor) sort(btmajor, decreasing = TRUE)[1:10] sort(btmajor, decreasing = FALSE)[1:10] cor(eigenCentmajor, btmajor)
Above is the eigenvector and betweeness scores for both the total data and for the Major countries subset. Later in the project I will use the eigenvector score between it is a simpler measurer (0 to 1 scale), and because the correlation between the two scores for the major countries is .86, meaning there is heavy carryover into which countries are at the center of that network.
colVals <-rep("grey80", length(V(gmajor)$name)) colVals[which(V(gmajor)$name=="United States of America")] <-"blue" colVals[which(V(gmajor)$name=="Russia")] <-"red" colVals[which(V(gmajor)$name=="France")] <-"purple" colVals[which(V(gmajor)$name=="Germany")] <-"pink" colVals[which(V(gmajor)$name=="United Kingdom")] <-"green" V(gmajor)$color<-colVals plot.igraph(gmajor, layout=layout3, vertex.size=eigenCentmajor, vertex.label.cex=.5, asp = 0, vertex.color=colVals)
Warning message in layout[, 1] + label.dist * cos(-label.degree) * (vertex.size + : “longer object length is not a multiple of shorter object length”Warning message in layout[, 2] + label.dist * sin(-label.degree) * (vertex.size + : “longer object length is not a multiple of shorter object length”