In recent times, political discourse has been rife with discussions about coups and the erosion of democratic norms across various nations. These conversations often lead to an intriguing question: What are the chances of such political upheavals in the United States or elsewhere?

To explore this question quantitatively, we turn to an analytical framework often reserved for medical research—survival analysis. This approach allows us to examine not just the occurrence of events (like coups) but also their timing, which is crucial in understanding the longevity and resilience of democratic institutions.

Why Use Survival Models?

Survival analysis is uniquely suited to addressing questions about ‘time to event’ data, in this case, the time to a political crisis. This methodology enables us to account for both the occurrence and timing of events, providing a nuanced view of the underlying risks.

Choosing Cox Proportional Hazards Model

Among various survival analysis techniques, the Cox Proportional Hazards Model (CoxPH) stands out for several reasons:

  1. Flexibility in Handling Time-Dependent Variables: CoxPH can easily incorporate time-dependent covariates, reflecting changes in risk factors over time—a common scenario in political analysis.

  2. Efficiency in Handling Censored Data: Many countries may not have experienced a coup but could in the future. CoxPH efficiently handles such right-censored data, where the event of interest (a coup) has not yet occurred by the end of the observation period.

  3. No Need for Specifying the Baseline Hazard Function: Unlike some other models, CoxPH does not require the specification of the baseline hazard function, focusing instead on estimating the effect of covariates. This is particularly useful in political science, where the exact risk function is often unknown or difficult to specify.

  4. Proportional Hazards Assumption: This assumption—that the effect of the explanatory variables on the hazard is constant over time—simplifies the interpretation of model coefficients, making it easier to communicate results to a non-technical audience.

This project builds on research conducted with Natasha Murtaza, presented at the Midwest Political Science Association (MPSA) conference. Our goal is to leverage survival analysis to untangle the factors that contribute to the durability or fragility of democratic institutions.

Setting Up the Environment

Before delving into the analysis, we’ll start by loading the necessary R libraries:

library(tidyverse)
library(survival)
library(readr)
library(ggpubr)
library(survminer)
library(kableExtra)
library(gridExtra)

Now let’s load the data

df_Prz <- read_csv("Data/Cleaned/df_Prz.csv", 
    col_types = cols(...1 = col_skip()))

df_Pt <- read_csv("Data/Cleaned/df_Pt.csv", 
    col_types = cols(...1 = col_skip()))

Identifying the Dependent Variable: Frequency of Coups

As we delve into the exploration of the factors influencing political stability, our key variable of interest is the frequency of coups. We will utilize a specific measure from the V-Dem (Varieties of Democracy) dataset, which has been comprehensively defined and coded, allowing for a robust analysis.

Przeworski Coups DV

The dataset defines coups using the e_coups variable, as detailed in V-Dem version 11.1:

Definition:

The e_coups variable represents the number of successful coups d’état within a given year, where a coup is defined as any event leading to the irregular removal or forced resignation of a nation’s chief executive. This encompasses violent actions or explicit threats of violence by an armed organization. Noteworthy exclusions from this definition include: - Assassinations not followed by the seizing of office by the responsible group. - Chief executive resignations driven solely by civil movements without armed involvement. - Peaceful, irregular power transfers among civilians.

Inclusions:

The definition considers both domestic and foreign military interventions that result in the replacement of a chief executive. Any military takeover, irrespective of the actors’ identities or whether it reinstates a previously elected ruler, is classified as a coup. Notable examples include foreign interventions like the French military overthrowing Bokassa in the Central African Republic.

Compatibility and Reliability:

This variable aligns well with other established sources for the period 1950-2008, such as Powell and Thyne (2011) and Marshall and Marshall (2009), with some deviations in interpreting specific events. Data prior to 1950 is scarcer and thus less reliable.

Sources:

The data and coding are based on the comprehensive work by Przeworski et al. (2013), ensuring a thorough and consistent dataset that spans from 1789 to 2008.

Data Preprocessing

To ensure the quality of our analysis, we first filter out incomplete records from the dataset. This is crucial for maintaining the integrity of our subsequent statistical analysis. Below is the R code snippet used to preprocess the dataset, specifically targeting the regimenarrowcat variable to exclude any undefined categories (coded as 99).

This preprocessing step cleans the data, ensuring that our analysis focuses only on relevant and well-defined observations.

Checking for Colinearity

In statistical models, particularly those involving multiple predictors, it’s crucial to check for colinearity. Colinearity occurs when two or more predictor variables are highly correlated. This can lead to unreliable and unstable estimates of regression coefficients, which makes interpreting the effects of individual predictors difficult.

Visualizing Colinearity

To examine the relationship between our predictors, we plot a scatter diagram with a regression line, confidence intervals, and a Pearson correlation coefficient. The variables of interest are “Rule of Law” and “Polity 5”. Here’s the R code that generates this plot:

ggscatter(df_Prz, x = "Rule of Law", y = "Polity 5", 
          add = "reg.line", conf.int = TRUE, 
          cor.coef = TRUE, cor.method = "pearson")

Analysis of the Scatter Plot

Upon reviewing the scatter plot, we observe a significant degree of colinearity between “Rule of Law” and “Polity 5”. This finding aligns with our theoretical expectations:

  • Rule of Law: This metric evaluates the extent to which agents have confidence in and abide by the rules of society. It includes the quality of contract enforcement, property rights, the police, and the courts, as well as the likelihood of crime and violence.

  • Polity 5: This is a well-regarded measure of democracy that incorporates several dimensions, including constraints on government authority. It inherently reflects aspects of the rule of law, which likely contributes to the observed colinearity.

Decision on Variable Inclusion

Given our specific interest in understanding the influence of the “Rule of Law” on the likelihood of coups, and the high correlation between “Rule of Law” and “Polity 5”, we face a methodological choice. Retaining both variables in the model could distort the results due to their overlapping information content.

Fitting the Models

To investigate the influence of various political and economic variables on the frequency of coups, we employ a series of Cox Proportional Hazards models. Each model integrates different sets of predictors to explore specific aspects of governance and societal structure.

Model 1: Rule of Law and Legislative Cohesion

This model evaluates the impact of legal structures and legislative coherence on political stability:

Party_party_cph.Prz <- coxph(Surv(suvival_time, e_coups)~ `Rule of Law` + `Legislative Party Coh` + as.factor(Region), data = df_Prz, method = "breslow")

Key Variables: - Rule of Law: Measures the strength and impartiality of legal institutions. - Legislative Party Cohesion: Assesses the unity within legislative bodies, hypothesizing that higher cohesion reduces political instability.

Model 2: Adding Party Linkages

Expands on the previous model by including the variable “Party Linkages” to assess the influence of political party networks:

PL.Prz <- coxph(Surv(suvival_time, e_coups)~ `Rule of Law` + `Legislative Party Coh` +`Party linkages` + as.factor(Region), data = df_Prz, method = "breslow")

Additional Variable: - Party Linkages: Indicates the extent and effectiveness of the political party’s outreach and networks within society.

Model 3: Candidate Selection Process

This model incorporates the process of candidate selection to see how democratic processes within parties might affect coup risk:

CS.Prz <- coxph(Surv(suvival_time, e_coups)~ `Rule of Law` + `Legislative Party Coh` +`Candidate selection` + as.factor(Region), data = df_Prz, method = "breslow")

Additional Variable: - Candidate Selection: Reflects how candidates are chosen within parties, suggesting that more inclusive processes could enhance political stability.

Comprehensive Model

To provide a holistic view, the final model integrates all the discussed variables along with additional economic and political factors:

Final_Model <- coxph(Surv(suvival_time, e_coups)~ 
                     `Rule of Law` +
                     `Party linkages` +
                     `Party branches` + 
                     `Party organizations`+
                     `Candidate selection`+
                     `Legislative Party Coh` +
                     I(`Defense Exp Per Cap`/1000) +
                     Inflation +
                     `GDP Per Capita` +
                     year + 
                     `GDP Growth` +
                     `National party control` + 
                     `Political Polarization` +
                     as.factor(Region), 
                    data = df_Prz, method = "breslow")

Additional Variables: - Economic indicators like GDP per capita and inflation, hypothesized to influence political stability. - Political factors such as national party control and political polarization, which might impact the likelihood of coups.

Model with Polity 5

In a separate analysis, we reintroduce “Polity 5” to examine its effect in conjunction with other variables:

Final_Model_with_polity <- coxph(Surv(suvival_time, e_coups)~ 
                                 `Party linkages` +
                                 `Party branches` + 
                                 `Party organizations`+
                                 `Candidate selection`+
                                 `Legislative Party Coh` +
                                 I(`Defense Exp Per Cap`/1000) +
                                 Inflation +
                                 `GDP Per Capita` +
                                 year + 
                                 `GDP Growth` +
                                 `National party control` + 
                                 `Political Polarization` +
                                 `Polity 5` +
                                 as.factor(Region), 
                                data = df_Prz, method = "breslow")

This model allows us to assess whether “Polity 5”, despite its collinearity with “Rule of Law”, provides additional explanatory power when included with a broader set of variables.

Results

After fitting our models, it’s essential to interpret the results effectively to understand the impact of various predictors on the likelihood of coups. To facilitate this, we compute the hazard ratios and their standard errors for each model. Hazard ratios greater than one indicate an increased risk of a coup, whereas values less than one suggest a protective effect against coups.

Computation of Hazard Ratios and Standard Errors

We define a function hazard_ratio_se to extract hazard ratios and their standard errors from a given Cox model. Another function, compute_hr_se, applies this operation across a list of models:

# Function to calculate hazard ratios and standard errors
hazard_ratio_se <- function(model) {
  hr <- exp(coef(model))
  se <- coef(summary(model))[, "se(coef)"] * hr
  c(hr, se)
}

# Function to apply the calculation to multiple models
compute_hr_se <- function(models) {
  lapply(models, hazard_ratio_se)
}

Aggregation of Models

We then create a list of all the models for which we want to compute these metrics:

models <- list(
  "Model 1" = Party_party_cph.Prz,
  "Model 2" = PL.Prz,
  "Model 3" = CS.Prz,
  "Model 4" = Final_Model,
  "Model 5" = Final_Model_with_polity
)

Summary Table Creation

To synthesize the results, we use the modelsummary package to create a comprehensive table displaying the hazard ratios, enabling easy comparison across models. We customize the significance markers for a clearer visual understanding of the statistical significance levels:

# Custom stars mapping for significance levels
custom_stars <- c(`*` = 0.1, `**` = 0.05, `***` = 0.01)

# Generate a summary table with hazard ratios, excluding region factor effects
modelsummary::modelsummary(models, 
                           stars = custom_stars, 
                           exponentiate = TRUE,
                           coef_omit = "^as\\.factor\\(Region\\)",
                           statistic = NULL)
Model 1  Model 2  Model 3  Model 4  Model 5
Rule of Law 0.139*** 0.222*** 0.194*** 0.608
Legislative Party Coh 0.840*** 0.867*** 0.826*** 0.844* 0.789**
Party linkages 0.858*** 0.866 0.801**
Candidate selection 0.839*** 0.821* 0.892
Party branches 1.228 1.533*
Party organizations 0.753 0.649**
I(Defense Exp Per Cap/1000) 0.893** 0.898**
Inflation 1.002* 1.001
GDP Per Capita 1.000 1.000
year 0.991 0.990
GDP Growth 1.754 2.088
National party control 0.966 0.940
Political Polarization 1.053 1.173
Polity 5 0.943**
Num.Obs. 742 742 742 256 229
AIC 5271.6 5264.9 5258.2 1236.7 1008.9
BIC 5322.3 5320.2 5313.5 1311.2 1081.0
RMSE 0.73 0.73 0.73 0.71 0.70
* p < 0.1, ** p < 0.05, *** p < 0.01

Interpreting Our Findings

Let’s dive into the results of our survival models to uncover the subtleties influencing political stability across nations. Each model we’ve examined brings a unique perspective on the factors that potentially drive or deter coups. The Cox Proportional Hazard model gives us two sets of coefficients. The first set tells us what the effect of the variable is on the time until a coup. The second set of coefficients tells us how likely a coup will be.

In this table we are just going to focus on the second set. The second set of coefficients tell us how likely a coup will be in the first place.

Model Insights

  • Rule of Law: Consistently across the models, a strong rule of law seems to substantially decrease the risk of a coup, with its effect most pronounced in the simpler models (Model 1: HR = 0.139, Model 2: HR = 0.222, Model 3: HR = 0.194, all statistically significant at p < 0.01). Interestingly, the effect size dilutes as more variables are added (Model 4: HR = 0.608), suggesting that the interplay of other factors might dilute the apparent influence of the rule of law alone. Or it is a byproduct of dropping so many observations in order to fit all of the variables.

  • Legislative Party Cohesion: This variable shows a consistently protective effect against coups across all models where it is included, reinforcing the idea that internal cohesion within parties can contribute significantly to political stability.

  • Party Linkages: Stronger party linkages seem to generally reduce coup risk, though the significance and strength of this effect vary (e.g., Model 2: HR = 0.858 vs. Model 4: HR = 0.866, not significant).

  • Candidate Selection: The inclusion of this variable significantly decreases coup risk in Model 3 (HR = 0.839, p < 0.01) and has a similar direction of effect in other comprehensive models, highlighting the importance of democratic processes within parties.

Summary

From rule of law to the intricacies of party dynamics and economic factors, our models illuminate the multifaceted nature of political stability. All in all, it would appear as though institutions greatly constrain the probability of a coup. So these results suggest that we should make sure to protect and strength our institutions lest we have coups.

The political science literature finds that Presidential systems are prone to coups. Let’s look at how true that is comparied to other regime types.

a <- c()

for (i in 1:length(unique(df_Prz$regimenarrowcat))-1) {
  
df_Prz2 <- df_Prz %>% 
  mutate(regimenarrowcat_new = case_when(
    regimenarrowcat == 0 ~ "Parliamentarism",
    regimenarrowcat == 1 ~ "Semi-Presidentialism",
    regimenarrowcat == 2 ~ "Presidentialism",
    regimenarrowcat == 3 ~ "Semi-Monarchy",
    regimenarrowcat == 4 ~ "Single-Party",
    regimenarrowcat == 5 ~ "Multi-Party Authoritarian",
    regimenarrowcat == 6 ~ "Personalist",
    regimenarrowcat == 7 ~ "Military",
    regimenarrowcat == 8 ~ "Absolute Monarchy",
    regimenarrowcat == 9 ~ "Monarchic Oligarchy",
    regimenarrowcat == 10 ~ "Other Oligarchy"
  )) |> mutate(regimenarrowcat_new = reorder(regimenarrowcat_new, regimenarrowcat)) |> 
  filter(regimenarrowcat == i)



# Fit Cox proportional hazards model
m4.coxph.Prz <- coxph(Surv(suvival_time, e_coups)~ regimenarrowcat_new + year, data = df_Prz2, method = "breslow")

# Create survival curves for each group
surv_obj <- survfit(m4.coxph.Prz, data = df_Prz2)

a[i+1] <- ggsurvplot(surv_obj, color = "darkgrey", title = df_Prz2$regimenarrowcat_new[1], xlab = "Years", ggtheme = theme_minimal(), legend = "none") 
}

grid.arrange(a[[1]], 
             a[[2]], 
             a[[3]], 
             a[[4]],
             a[[5]],
             a[[9]],
             a[[8]],
             a[[6]],
             a[[7]],
             a[[10]],
             ncol = 3, nrow = 4)

Here we can see that presidential systems on average may have a shorter life expectancy before coups than other democratic forms, but that is not to say that their odds are terrible considering the alternatives. The life expectancy of Authoritarians is not great…

Now let’s look at Legislative Party Cohesion given its importance in preventing coups. To visualize it I will break it into higher, middle, and lower values.

  # Subset data for current value of regimenarrowcat
  df_Prz2 <- df_Prz %>% 
    mutate(regimenarrowcat_new = case_when(
      regimenarrowcat == 0 ~ "Parliamentarism",
      regimenarrowcat == 1 ~ "Semi-presidentialism",
      regimenarrowcat == 2 ~ "Presidentialism",
      regimenarrowcat == 3 ~ "Semi-monarchy",
      regimenarrowcat == 4 ~ "Single-party rule",
      regimenarrowcat == 5 ~ "Multi-party authoritarian rule",
      regimenarrowcat == 6 ~ "Personalist rule",
      regimenarrowcat == 7 ~ "Military rule",
      regimenarrowcat == 8 ~ "Absolute monarchy",
      regimenarrowcat == 9 ~ "Monarchic oligarchy",
      regimenarrowcat == 10 ~ "Other oligarchy"
    )) %>% 
    mutate(regimenarrowcat_new = reorder(regimenarrowcat_new, regimenarrowcat)) |> 
  mutate(`Legislative Party Coh New` = case_when(
    `Legislative Party Coh` >= summary(df_Prz$`Legislative Party Coh`)[[5]] ~ "High",
    `Legislative Party Coh` <= summary(df_Prz$`Legislative Party Coh`)[[2]] ~ "Low", 
    `Legislative Party Coh` >  summary(df_Prz$`Legislative Party Coh`)[[2]] & `Legislative Party Coh` < summary(df_Prz$`Legislative Party Coh`)[[5]] ~ "Middle"
  ))  |> 
    mutate(LPC = `Legislative Party Coh New`)

  # survival curves for each group
    surv_obj <- survfit(Surv(suvival_time, e_coups)~ LPC, data = df_Prz2)

plot_obj <- ggsurvplot(surv_obj, data = df_Prz2)
  

      print(plot_obj[["plot"]])

This plot shows that higher Legislative Party Cohesion (LPC) significantly boosts governments’ survival probabilities. As Benjamin Franklin aptly phrased it during the formative moments of American history, “We must, indeed, all hang together, or most assuredly, we shall all hang separately.” This sentiment resonates strongly with our findings, emphasizing that unity within legislative bodies can be a strong bulwark against the forces that might lead to coups.

Coup in the US?

While it’s not entirely outside the realm of possibility for a country like the United States to experience a coup, the factors we’ve analyzed suggest that it remains highly improbable. The robust institutions and the relatively high degree of legislative cohesion contribute to this stability. But it is important that these features are not degraded or else we risk future problems.

Reflections

I hope this exploration through the lens of survival models not only provided some peace of mind but also showcased an innovative use of statistical methods typically reserved for other fields like medicine. By applying these techniques to political science, we can uncover nuanced insights that help us understand the durability of democratic institutions better.

Thank you for joining me on this journey!

Best regards,

Daniel K Baissa

Home