Learn R Programming

peacesciencer (version 1.2.0)

add_atop_alliance: Add Alliance Treaty Obligations and Provisions (ATOP) alliance data to a dyad-year data frame

Description

add_atop_alliance() allows you to add Alliance Treaty Obligations and Provisions (ATOP) data to a (dyad-year, leader-dyad-year) data frame.

Usage

add_atop_alliance(data, ndir = TRUE)

Value

add_atop_alliance() takes a (dyad-year, leader-dyad-year) data frame and adds information about the alliance pledge in that given dyad-year from the ATOP data. These include whether there was an alliance with a defense pledge, an offense pledge, neutrality pledge, non-aggression pledge, or pledge for consultation in time of crisis. It also includes a simple indicator communicating whether there was an alliance of any kind whatsoever.

Arguments

data

a data frame with appropriate peacesciencer attributes

ndir

logical, defaults to TRUE. This argument specifies the behavior of function whether the dyad-year data in the data argument is non-directed. See Details section for more.

Author

Steven V. Miller

Details

Data are from version 5.1 of ATOP.

This function will also work with leader-dyad-years, though users should be careful with leader-level applications of alliance data. Alliance data are primarily communicated yearly, making it possible---even likely---that at least one leader-dyad in a given year is credited with an alliance that was not active in the particular leader-dyad. The ATOP alliance data are not communicated with time measurements more granular than the year, at least for dyad-years. The alliance-level data provided by ATOP do have termination dates, but I am unaware how well these start and termination dates coincide with particular members joining after the fact or exiting early. The alliance phase data appear to communicate that "phases" are understood as beginning or ending when the underlying document is amended in such a way that it affects one of their variable codings, but this may or may not be because of a signatory joining after the fact or exiting early. More guidance will be useful going forward, but use these data for leader-level analyses with that in mind.

It's conceivable that the simple alliance dummy can be 1 but all the provisions can be 0. See the section below for a case when this happens.

On the ndir Argument

Consider this Belgium-France directed dyad-year from 1832 as illustrative of what you'll want to consider in the ndir argument. This is an interesting case where it's an alliance with Belgium making no pledge of any kind to France. France, instead, is making a defensive pledge to Belgium.

ccode1ccode2yearatop_defenseatop_offenseatop_neutralatop_nonaggatop_consul
211220183200000
220211183210000

A lot of peacesciencer functionality prior to version 1.2 had leaned on collapsing directed dyad-year data to non-directed dyad-year data through simple subsets of the data where ccode2 is larger than ccode1. Here, that is a questionable decision absent clarification from the user. In this case, Belgium (211) has made no pledge to defend France (220), though France has made a pledge to defend Belgium in the event of an attack.

If the data supplied in the data argument in this function are directed dyad-years, there is no issue for merging. add_atop_alliance() performs a quick assessment of whether there is any instance in which ccode1 is greater than ccode2. If there are such observations, the data are assumed to be directed dyad-year and the merging proceeds without further consideration. If there are no instances in which ccode1 is greater than ccode2, the data are assumed to be non-directed dyad-years and the behavior of this function hinges on the logical condition supplied to the ndir argument.

  • If ndir is TRUE (default): the function assumes you are aware the data you have are non-directed while the alliance data are directed. It will then summarize the directed dyad-year data looking for the highest observed value in the dyad-year in either direction. In the above illustration, it would mean that the Belgium-France dyad would have a defense pledge in 1832 no matter how the non-directed dyad is entered in the data. Belgium may not be pledging to defend France, but that is immaterial because the non-directed version of the directed dyad has a defense pledge in it.

  • If ndir is FALSE, the function performs a simple merge on matching dyad-year keys. In the above illustration, it would mean a Belgium-France dyad in 1832 would have no defense pledge because it was incidentally the case that the defense pledge that does appear in that dyad is made by the state with the higher state code. Use this argument with that in mind if your data are non-directed.

The impetus behind this argument comes by way of an issue raised by Kevin Galambos and J. Andrés Gannon. You can read about it here.

References

Leeds, Brett Ashley, Jeffrey M. Ritter, Sara McLaughlin Mitchell, and Andrew G. Long. 2002. "Alliance Treaty Obligations and Provisions, 1815-1944." International Interactions 28: 237-60.

Examples

Run this code

# just call `library(tidyverse)` at the top of the your script
library(magrittr)

cow_ddy %>% add_atop_alliance()

Run the code above in your browser using DataLab