How to identify democratic backsliding with the V-dem Institute data base?

Author

P_Goncalves

The goals

This document has a simple goal: show how to use the Varieties of Democracy Institute database with the R packages called vdemdata. In this example, the aim is to identify countries that showed a democratic backsliding of some sort between the year 1989 and 2024.

What is a democratic backsliding?

A democratic backsliding is an “erosion” or an “incremental decay in several fronts” of the democratic values and institutions (Ginsburg & Huq, 2022). There is a broad list of ways to measure and quantify such phenomenon. The literature is extensive, discussing the “how” and its implications is beyond the scope of this document.

Two of the more “notable” efforts in measuring democracy are from the Economist Intelligence Unit and the Varieties of Democracy Institute (V-Dem Institute). Both organizations design and measure synthetic indexes. The V-Dem institute being an organization created for the sole purpose of studying, understanding and measure Democracy. Its database has more than 4500 indicator, variables and indices from 1789 to 2024 of 202 countries.

V-Dem in particular have a multitude of synthetic indices, high and mid-level. The “Mid-Level Indices” are the components of the High-Level Democracy Indices, and attempt to measure qualities like the degree of free of expression, clean elections, direct vote, freedom of association, etc. Five high-level indices are calculated using these components: Electoral democracy, Liberal democracy, Participatory democracy, Deliberative democracy and Egalitarian Democracy. The above are considered by the institute to be the principles of democracy. These five indices will be used to achieve the objective of the document.

Installing the “vdemdata” package

The vdemdata packages is available in the github page of the V-dem Institute (https://github.com/vdeminstitute). For the Installation the devtools package is required.

devtools::install_github("vdeminstitute/vdemdata")

The data set

The data set from is called vdem. One way to work with it is to create a new object, in this case dta and assign vdem to it as follows:

library(vdemdata)
dta <- vdem

The data set have a total of 27913 observations of 4607 variables to date. Each variable is in a column, there are named by code. The codebook is available in the Institute’s page (https://v-dem.net/documents/38/V-Dem_Codebook_v14.pdf). Having the codebook at hand is advised.

Data management

The code for the High-level Democracy indices are the following:

  • Electoral democracy index: v2x_polyarchy

  • Liberal democracy index: v2x_lbdem

  • Participatory democracy index: v2x_partibdem

  • Deliberative democracy index: v2x_delibdem

  • Egalitarian democracy index: v2x_egaldem

The country_name, country_text_id, e_regionpol_6C and year variables are selected as well. country_tex_id is the ISO3 code for each country, e_regionpol_6C is a region id by six categories: Eastern Europe and Central Asia (1), Latin America and the Caribbean (2), The Middle East and North Africa (3), Sub-Sahara Africa (4), Western Europe and North America (5) and Asia and the Pacific (6).

The tidyverse package is useful, it includes dplyr and other packages use in data management in R. The following code creates a new data frame with the required variables and filters or observations before the year 1989.

dta_89 <-dta %>% 
  select(country_name, country_text_id, year,
         v2x_polyarchy,
         v2x_libdem,
         v2x_partipdem,
         v2x_delibdem,
         v2x_egaldem,
         v2x_regime,
         e_regionpol_6C) %>% 
  filter(year>1988)

Identifying the backsliding

An intuitive approach is to search for negative variations on the high level indices. By calculation, the change in index value year by year for each country.

When calculating the first difference of a time series, the first observation of that series is lost. In this case, that observation corresponds to the year 1989.

The following code adds a new column to the dta_89 data frame. This column is the yearly change of the Liberal Democracy Index. Then, the negative column indicates variation is negative or positive with a string.

dta_89 <- dta_89 %>% 
  mutate(var_libdem = v2x_libdem - lag(v2x_libdem))%>% 
  mutate(var_libdem = if_else(year ==1989, NA, var_libdem)) %>% 
  mutate(negative = if_else(var_libdem <0, "negative", "positive",missing =  NULL))

First, let’s create a new object, a vector that list the all the countries names in the dta_89 data set. Then, filter to only keep countries that had a yearly decrease in the liberal democracy index value. Later identify which country were filtered out, in other words, those that did not have any “democratic backsliding”.

all_countrys_89 <- sort(unique(dta_89$country_name))
dta_89_backsling <- dta_89 %>% 
  filter(negative == "negative")
backsling_countrys <- sort(unique(dta_89_backsling$country_name))
setdiff(all_countrys_89,backsling_countrys)
[1] "German Democratic Republic" "North Korea"               
[3] "South Yemen"               

German Democratic Republic, North Korea and South Yemen. Three countries characterized by the autocratic nature of their governments, two of them does no longer exists with those names. In 1990 both countries reunified with the respective neighbors: West Germany and North Yemen. Both had an increase in the measurement of the liberal democracy index, South Yemen from 0.119 to 0.132 and the German Democratic Republic from 0.180 to 0.709. These two countries do not have any more observations beyond 1990 due to theirs circumstances.

In the North Korea case, it could be useful to visualize the trend of the index value with a plot.

Figure Nº 1

dta_knor <- dta_89 %>% 
  filter(country_name == "North Korea")

fig_nkor <- plot_ly(data = dta_knor, 
                    x=~ year,
                    y=~v2x_libdem,
                    type = "scatter",
                    mode = "lines")%>% layout(title = "Liberal Democracy Index,North Korea (1989-2023)",
         xaxis = list(title = "year"),
         yaxis = list(title = "Liberal Democray Index",
                      range = list(0,1)))
  
fig_nkor

Source: Own elaboration based on data from the V-dem Institute.

As observed in the Figure Nº 1 the liberal democracy index is constant (0.014) along the study period. Hence, there is no “backsliding” in this case.

A side from the three countries mentioned previously, every other country exhibits a decreased in the liberal democracy index in at least once in the 34 years of interest.

The criteria of a negative variation of the value of the index is not enough to identify a democratic backsliding. What criteria could be used? There are several options: 1) a decline of more than one consecutive year, 2) a decline greater than n standard deviations of the mean of the declines or, maybe, 3) a decline of the moving average of a specific number of year.

Number 1 and 3 have a similar problem to solve: what is the optimal number of years for the moving average or the consecutive decline? Number 2 is trivial, the standard deviation is one of the main measures of dispersion. It could be used to identify “outliers”.

The mean and the standard deviation of the first difference of the liberal democracy index is easily calculated with the following code:

mean(dta_89$var_libdem, na.rm = TRUE)
[1] 0.002591682
sd(dta_89$var_libdem, na.rm = TRUE)
[1] 0.04257093

Then the mean and the standard deviation of only the negative values, the goal is to known how much is a decreased in the value of the index on average and how is the average “distance from the mean” of each observation.

decreased_mean <- mean(dta_89_backsling$var_libdem, na.rm = TRUE)
decreased_sd <- sd(dta_89_backsling$var_libdem)

decreased_sd
[1] 0.0393687
decreased_mean
[1] -0.01722752
threshold <- decreased_mean - decreased_sd
threshold
[1] -0.05659621

Then, list the observations of countries with a liberal democracy index decrease greater than |-0.5659|, in other words a standard deviation below the mean and the threshold to identify the countries. The list of the 75 countries is the following:

dta_89 <- dta_89 %>% 
  mutate(backslide_2 =if_else(var_libdem <= threshold, "Democratic backslide", "Increase or below |threshold|",missing = NULL))

dta_89_backsling <- dta_89 %>% 
  filter(backslide_2 == "Democratic backslide")

sort(unique(dta_89_backsling$country_name))
 [1] "Afghanistan"              "Algeria"                 
 [3] "Argentina"                "Armenia"                 
 [5] "Azerbaijan"               "Bangladesh"              
 [7] "Belarus"                  "Benin"                   
 [9] "Bolivia"                  "Bosnia and Herzegovina"  
[11] "Botswana"                 "Brazil"                  
[13] "Bulgaria"                 "Burkina Faso"            
[15] "Burma/Myanmar"            "Central African Republic"
[17] "Comoros"                  "Ecuador"                 
[19] "Egypt"                    "El Salvador"             
[21] "Estonia"                  "Fiji"                    
[23] "Georgia"                  "Greece"                  
[25] "Guinea-Bissau"            "Haiti"                   
[27] "Hong Kong"                "Hungary"                 
[29] "India"                    "Ivory Coast"             
[31] "Jordan"                   "Kazakhstan"              
[33] "Kosovo"                   "Kyrgyzstan"              
[35] "Lesotho"                  "Libya"                   
[37] "Madagascar"               "Maldives"                
[39] "Mali"                     "Mauritius"               
[41] "Moldova"                  "Montenegro"              
[43] "Nepal"                    "Nicaragua"               
[45] "Niger"                    "North Macedonia"         
[47] "Pakistan"                 "Palestine/Gaza"          
[49] "Palestine/West Bank"      "Paraguay"                
[51] "Peru"                     "Philippines"             
[53] "Poland"                   "Republic of the Congo"   
[55] "Romania"                  "Russia"                  
[57] "Rwanda"                   "Senegal"                 
[59] "Serbia"                   "Slovakia"                
[61] "Slovenia"                 "Solomon Islands"         
[63] "South Korea"              "South Sudan"             
[65] "Sri Lanka"                "Suriname"                
[67] "Thailand"                 "The Gambia"              
[69] "Tunisia"                  "Türkiye"                 
[71] "Ukraine"                  "United States of America"
[73] "Uzbekistan"               "Vanuatu"                 
[75] "Venezuela"               

The same procedure can be make for each high level democracy index.

A simple visualization of an specific country

country_of_interest <-  "Venezuela"

dta_fig_1 <- dta_89 %>% 
  filter(country_name == country_of_interest) %>% 
  filter(is.na(var_libdem) == FALSE) %>%
  mutate(backslide_data = if_else(var_libdem <0,v2x_libdem,0,missing = NULL)) %>% 
  mutate(backslide_data= na_if(backslide_data,0)) %>% 
  mutate(threshold_data = if_else(var_libdem <threshold,v2x_libdem,0,missing = NULL)) %>% 
  mutate(threshold_data= na_if(threshold_data,0))

fig_1 <-  plot_ly(data = dta_fig_1,
                  x=~ year,
                  y=~ v2x_libdem,
                  type = "scatter",
                  mode = "lines",
                  line = list(color= "rgba(39,124,245,0.95)"),
                  name = "<b> Increase or no change <b> ") %>% 
  add_trace(y=~backslide_data,
            line =  list(color="rgba(255,102,50,1)"),
            name = "<b> Decrease in value <b>",
            connectgaps=FALSE)%>% 
  add_trace(y=~threshold_data,
            line =  list(color="rgba(0,0,0,1)"),
            name = "<b> Below the threshold (Democratic Backslide) <b>",
            connectgaps=FALSE) %>% 
  layout(title = paste0("<b> Liberal Democracy Index. ",country_of_interest," (1989-2024)<b>"),
         xaxis = list(title = "<b> Year <b>"),
         yaxis = list(title = "<b> Value <b>"),
         legend = list(orientation = "h",
                       y = -0.3))
fig_1

Conclusion

The vdemdata package is a useful tool to access and manage the V-dem Institute dataset. Being one of the main data collectors in with most of the variable related to democracy, political systems and even some macroeconomic variables.

In this exercise shows an example of a problem that can be solved using the data set. By the criteria established prior in the document, 75 countries were identified. First, all countries between 1989-2024, except German Democratic Republic, North Korea and South Yemen, have at least one yearly decline in the value of the liberal democracy index. 

Second, in 126 observations, the negative variations of the liberal democracy index were greater in magnitude than one standard deviation of the mean. The list of countries allows researching the milestones and events the may cause a democratic backsliding and the study the process that can explained this phenomenon.

Several question and hypothesis can be make What happened in Bolivia, Libya, Venezuela or the United States during the years when a democratic backsliding was identified? What are the factors of a democratic backslide? What are the similarities and differences of each case? 

References

Ginsburg, T., & Huq, A. Z. (2022). The Pragmatics of Democratic “Front-Sliding.” Ethics & International Affairs, 36(4), 437–453. doi:10.1017/S0892679422000508