Skip to contents


Assessing a nation-state’s stability and risk of civil war or failure is one of the largest sub-disciplines for researchers and practitioners of political science and international relations. Despite decades of research, there is no widespread agreement over the relationship between institutional structure and the risk of state failure (Jones and Lupu 2018). Further, there’s still considerable debate over which metrics are best to simply characterize state institutions (Casper and Tufis 2003).

One of the prevailing theories for many years is that partial democracies or autocracies (neither fully democratic or fully autocratic) and newly instituted regimes are the most likely to devolve into civil war. This theory is mostly supported by statistical models that utilize composite indices designed to measure institutional levels of democracy and autocracy. Several studies have shown a relationship between countries that “exist in the middle” of composite measures of democracy and state failure or civil war, but recent criticism has called this relationship into question. It’s been hypothesized that models select for the quadratic relationship of composite measures of democracy, because it’s a catch-all for every possible institutional measure (i.e. individual metrics for regimes in the middle can be as democratic or as authoritarian as pure democracies and pure autocracies) (Fjelde, Knutsen, and Nygård 2021). So while this increases model skill, it does not increase causal understanding.

The most popular long-standing composite index is the The Center for Systemic Peaces’ Polity scale (Marshall and Gurr 2020). Although it reigned supreme over research throughout the 1990s-2010s, it has since fallen out of favor with some, because it suffers from a lack of methodological transparency (Lindberg et al. 2014). Moreover, it is particularly susceptible to the aforementioned problem where regimes with similar positions on the Polity Scale have dramatically different regime characteristics (Treier and Jackman 2008). The Varieties of Democracy dataset (V-Dem) was developed in response to several of the criticisms levied on Polity; foremost being their commitment to transparency in their methods (Lindberg et al. 2014). The V-Dem V11.1 dataset contains more than 400 measures of democracy and authoritarianism, including 5 high level composite indices (Coppedge, Gerring, Knutsen, Lindberg, Teorell, and Gastaldi 2021). Although these composite indices appear to be less ambiguous in their institutional characterizations, they still may be too generalized to identify specific institutional configurations that result in instability or civil war.

In light of these concerns, (Fjelde, Knutsen, and Nygård 2021) developed 2 new, more narrowly focused, indices to better identify institutions at risk for civil war in their recent publication entitled Which Institutions Matter? Re-Considering the Democratic Civil Peace. They named the indices the Horizontal Constraints Index (HCI) and the Vertical Constraints Index (VCI). Their results found that the HCI and VCI were statistically significant predictors of civil peace. I became very interested in these, more narrow, composite indices after struggling to find strong statistical relationships between various forms of conflict or state failure in my own research. Therefore, I hope this guide might make their use and conceptual design more accessible and encourage you to use them in your own research. In this vignette I walk through generating the indices using the demcon package, but in a future installment I hope to demonstrate the GAM modeling approach used in the featured manuscript for those of you who want to learn how to employ recent high impact applied modeling.

The Indices


Horizontal constraints represent checks and balances on centralized executive power. These include constraints put in place by executive and judicial branches of government. Horizontal constraints mainly serve the interests of non-governmental elites by protecting their interests against an uncontrolled executive. In contrast to the VCI, HCI is a simple arithmetic mean of V-Dem’s legislative constraints (v2xlg_legcon) and judicial constraints variables (v2x_jucon). The HCI is defined as:

\[HCI = \frac{v2xlg_legcon + v2x_jucon}{2}\]

The methods behind the VCI are more complicated.


The VCI represent civil liberties attributed to the general populace the constrain executive actions. These include suffrage, the presence of elections that appoint executive officials, freedom of association, freedom of expression, and the presence of clean and fair elections.

At it’s core, VCI is a multiplicative aggregation of 5 V-Dem variables designed to measure suffrage, elected officials, freedom of association, freedom of expression and clean elections (v2x_suffr, v2x_accex, v2x_frassoc_thick, v2x_freexp_thick, v2xel_frefair). However, the final component (v2xel_frefair) is a composite index developed with a Bayesian factor analysis of 8 other V-Dem indicators (v2elembaut, v2elembcap, v2elrgstry, v2elvotbuy, v2elirreg, v2elintim, v2elpeace, v2elfrfair), of which, the authors adapted by purging 2 of the components representing government intimidation or violent actions (v2elintim, v2elpeace). This was done to prevent potential endogeneity in their regressions for the onset of conflict; i.e. you don’t want to predict the onset of conflict with and independent variable that is, in-part, composed of measures of conflict.

Although the original v2xel_frefair composite index was developed using V-Dem’s Bayesian Factor Measurement Model (Pemstein et al. 2018), the VCI adapted for this study took a simpler approach. In footnote 12, the authors state that the modified composite index was created by averaging the 6 non-violent indicators of v2xel_frefair (v2elembaut, v2elembcap, v2elrgstry, v2elvotbuy, v2elirreg, v2elfrfair). Although not explicitly stated, zit’s presumed that the average for these 6 indicators was converted to the final 0-1 interval scale using “…the cumulative distribution function of the normal distribution”. This is the standard V-Dem procedure for their 0-1 interval indices as stated on page 7 of the V-Dem V11.1 Methodology handbook (Coppedge, Gerring, Knutsen, Lindberg, Teorell, Marquardt, et al. 2021). The VCI is defined as:

\[ VCI = v2x_suffr \times v2xaccex \times v2xfrassocthick \times v2xfreexpthick \times \overline{v2xelfrefair}\]

\[\overline{v2xel_frefair} = \frac{v2elembaut+v2elembcap+v2elrgstry+v2elvotbuy+v2elirreg+v2elfrfair}{6}\]

Lastly, the VCI constructed for their manuscript was carried out using the V-Dem 7.1 dataset. Since that time (current version is V11.1), 2 of the indicators used in the VCI calculation have been renamed and slightly altered (Coppedge, Gerring, Knutsen, Lindberg, Teorell, and Gastaldi 2021):

  1. v2x_freexp_thick was converted to v2x_freexp_altinf starting with version 11. The sub-components of this composite index were altered slightly, but they still encompass the same concepts of censorship in media.

  2. v2x_accex was renamed v2x_elecoff starting with version 8. This was due to changes in the aggregation method for calculating the composite index. Although the conceptual design for the composite indicator has not changed, the aggregation formula is more complex and consists of 20 indicators (opposed to 10 for the original v2x_accex).

Accessing the Indices

You can access VCI and HCI with the demcon in 2 ways:

  1. Using an adapted version from the manuscript replication package that is embedded in demcon and available with a call to vdem::vdem_vci_hci.
  2. Using the demcon::vci() and demcon::hci() functions to calculate the indices with your own data.

Using the Embedded Package Data

Unlike many peer reviewed manuscripts, the data and code used to produce the analysis for Which Institutions Matter? Re-Considering the Democratic Civil Peace is available online. The data is available inside of the manuscript’s replication package, which can be download from the supplementary materials section of the manuscript’s homepage. Although the full replication dataset contains all variables used for their analysis, I performed some pre-processing on the data to create a simplified version. You can load the pre-processed dataset locally with a call to demcon::vdem_vci_hci.


#>               country_name gwno cowcode year       vci     hci
#> 1 United States of America    2       2 1900        NA      NA
#> 2 United States of America    2       2 1901 0.1201976 0.88808
#> 3 United States of America    2       2 1902 0.1205107 0.88808
#> 4 United States of America    2       2 1903 0.1164993 0.88808
#> 5 United States of America    2       2 1904 0.1165492 0.88808
#> 6 United States of America    2       2 1905 0.1162668 0.88808

The dataset is comprised of 15040 country-year observations and 6 variables:

  • country_name : The common country name.

  • gwno : The Gleditsch and Ward numeric country code.

  • cowcode : The Correlates of War numeric country code.

  • year The observation year.

  • hci The horizontal constraint index.

  • vci The vertical constraint index.

The raw replication data only contains Gleditsch and Ward country identifiers, while the actual V-Dem dataset only contains numeric V-Dem and Correlates of War (CoW) country codes. Therefore, I introduced the common country names and CoW codes so there would be an easy common key to join the constraint indices back to other V-Dem data. To see a full list of the pre-processing steps used prior to embedding the data in demcon please review the vdem_vci_hci.R script.

If you would like to work directly with the full replication dataset, it can be accessed programmatically with the following code:


if(!file.exists("institutions.csv")) {
  httr::GET(url = rep_url,
            httr::write_disk("", overwrite = TRUE))
  utils::unzip(zipfile = "",
               files = "ReplicationPackage/Data/institutions.csv")

For the purposes of this vignette I’ve already prepared the download.


The replication data contains a YAML file (vnames.yaml) with a few variable descriptions, but it’s not very helpful. In my experience, most of the time you can actually access replication data for a published manuscript, it’s quite difficult to parse. Through trial and error, and using Figure A-1 (page 5) of the supplementary materials appendix, I was able to verify the proper indices by replicating the plot. In the raw dataset, horizontal_constraint is the HCI and free_fair_elections is the VCI.

Here is the figure from the supplementary materials.

Horizontal and Vertical Constraint indices for the year 2015. Numeric codes represent Gledistch and Ward numeric codes. Adapted from figure A-1 of the supplementary materials.

Horizontal and Vertical Constraint indices for the year 2015. Numeric codes represent Gledistch and Ward numeric codes. Adapted from figure A-1 of the supplementary materials.

Here is the verification figure using horizontal_constraint as the HCI and free_fair_elections as the VCI.

#> Warning: Removed 29 rows containing missing values (`geom_point()`).
#> Warning: Removed 29 rows containing missing values (`geom_text()`).
Horizontal and Vertical Constraint indices for the year 2015 created from the replication package data.

Horizontal and Vertical Constraint indices for the year 2015 created from the replication package data.

The embedded data is an easy way to quickly look up values for countries of interest or get a sense of how the data is distributed, although there is a significant drawback; it terminates in 2016. Moreover, most countries are quite erratic in their time-series so you can’t extend the time-series with a simple imputation or linear extrapolation. The indices are all over the place for the handful of countries I randomly selected.

#> Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
#>  Please use `linewidth` instead.
#> Warning: Removed 2 rows containing missing values (`geom_line()`).
Horizontal and Vertical Constraint indices over time for select countries created using the replication data.

Horizontal and Vertical Constraint indices over time for select countries created using the replication data.

Using demcon Functions

You can also calculate the indices using the demcon::vci() and demcon::hci() functions. Although neither of the indices are complicated calculations, developing and properly documenting custom functions provides some benefits. They make it easier to quickly generate the indices alongside other data in your analysis, and provides a help file with reference materials and links so you can share it with colleagues and get a quick refresher on the origins of the indices.

Getting V-Dem Data

You can acquire the latest version of V-Dem using the vdemdata package (V-Dem Institute 2020). It is not available on CRAN, but the latest version can be installed directly from GitHub using the devtools package. If you don’t want to use a non-standard package (not on CRAN or Bioconductor), you can use demcon’s wrapper to download it directly from their GitHub site.


The data is bundled in the package as an embedded object. The dataset contains more than 4000 variables stretching backwards to the year 1789, so we’ll start by subsetting it to a more manageable selection. We’ll just take everything we need to create the indices and some identification variables starting in 1970.

# vdem_raw<-vdemdata::vdem

vdem_raw<-demcon::get_vdem(write_out = FALSE)

  id_vars <- c("country_text_id", "COWcode", "year")

  frefair_components <-

  vci_components <-
  hci_components <- c('v2xlg_legcon', 'v2x_jucon')

keeps<-c(id_vars, frefair_components, vci_components, hci_components)
vdem_sub<-vdem_raw[year>=1970, ..keeps]


The HCI is a simple average of legislative (v2xlg_legcon) and judicial (v2x_jucon) constraints. Using demcon::hci() you can create a vector of HCI scores or append it to existing data. Because the 2 components that make up HCI are already scaled to a 0-1 interval the output HCI vector will also be on a 0-1 interval.

hci<-demcon::hci(vdem_sub, append = FALSE)
#> Warning in demcon::hci(vdem_sub, append = FALSE): Any input observations that contain NA for 
#>  either v2xlg_legcon or v2x_jucon will return an NA for the calculated HCI.

As you can see, demcon::hci() and demcon::vci() will remind you that any input observations with an NA will produce an NA for the constraint index. The HCI scores are uniformly distributed.

To append the new variable to the input dataset specify append = TRUE. The new variable is aptly named hci.

hci<-demcon::hci(vdem_sub, append = TRUE)
#> Warning in demcon::hci(vdem_sub, append = TRUE): Any input observations that contain NA for 
#>  either v2xlg_legcon or v2x_jucon will return an NA for the calculated HCI.
#>  [1] "country_text_id"   "COWcode"           "year"             
#>  [4] "v2elembaut"        "v2elembcap"        "v2elrgstry"       
#>  [7] "v2elvotbuy"        "v2elirreg"         "v2elfrfair"       
#> [10] "v2x_suffr"         "v2x_elecoff"       "v2x_frassoc_thick"
#> [13] "v2x_freexp_altinf" "v2xlg_legcon"      "v2x_jucon"        
#> [16] "hci"


The demcon::vci() function behaves similarly as the HCI function with the ability to return a vector of scores, or the input dataset with the VCI as a new variable.

Both the VCI and HCI functions will also produce an error if one of the required input variables is not present in the input data.frame.

id_vars <- c("country_text_id", "COWcode", "year")

  frefair_components_missing <-

  vci_components_missing <-
keeps<-c(id_vars, frefair_components_missing, vci_components_missing)
vdem_sub_missing<-data.table::copy(vdem_sub[, ..keeps])

#> Error: Supplied data frame does not contain the necessary indicators to calculate the VCI. Missing: v2elirreg, v2elfrfair, v2x_freexp_altinf

The demcon::vci() function carries out 3 individual steps.

  1. Calculates the modified clean elections composite index (v2xelfrefair) with the violence components purged. This is a simple average of the 6 non-violent components.
  2. Scales the modified clean elections composite index (v2xelfrefair) to 0-1 using the cumulative probability function of the normal distribution. This is carried out by demcon::range01().
  3. Calculates VCI by taking the product of the 5 sub-components representing suffrage, elected officials, freedom of association, freedom of expression, and modified clean elections.

If you specify append = FALSE, the function will produce a numeric vector of VCI values (just as with demcon::hci()). If you specify append = TRUE, demcon::vci() will return the VCI (vci) and the intermediary adjusted clean elections index with the violent sub-indicators purged (v2xel_frefair_adj).

hci<-demcon::vci(hci, append = TRUE)
#> Warning in demcon::vci(hci, append = TRUE): The input dataframe contains NAs for some of the 10 required inputs; these observations will return NA for the calculated VCI.
#>  [1] "country_text_id"   "COWcode"           "year"             
#>  [4] "v2elembaut"        "v2elembcap"        "v2elrgstry"       
#>  [7] "v2elvotbuy"        "v2elirreg"         "v2elfrfair"       
#> [10] "v2x_suffr"         "v2x_elecoff"       "v2x_frassoc_thick"
#> [13] "v2x_freexp_altinf" "v2xlg_legcon"      "v2x_jucon"        
#> [16] "hci"               "v2xel_frefair_adj" "vci"

The VCI is a multiplicative index; meaning, each individual component (all scaled 0-1), are multiplied against one another to create a 0-1 composite VCI score. Theoretically, this is plausible because constraints of the population at large on the executive branch are dependent upon the full chain of civil liberties to be fully operational. If one component breaks down the entire chain of accountability breaks down. Remember that:

\[VCI = suffrage \times elected officials \times freedom assoc \times freedom exp \times clean elections\] If any one of these components is not in place (the score approaches 0), the entire VCI index will approach 0. This is important conceptually, because you can not have vertical constraints on the executive with suffrage and no elected officials, or suffrage and elected officials, but no clean elections. For this reason, the VCI values follow more of a gamma distribution with many country-years observations bound up against 0. If you were to model VCI as the dependent variable you would likely need to take some alternative approach like a zero-inflated, hurdle, or mixture model.

Visualizing the Scores

We can map the scores and do a little visual check of our calculations by merging them with a global shapefile. There are a lot of ways to get global vectorized boundaries; I prefer the rnaturalearth (South 2021) package for an open source solution.

#> Warning in countrycode_convert(sourcevar = sourcevar, origin = origin, destination = dest, : Some values were not matched unambiguously: ABW, AIA, ALA, ASM, ATA, ATF, BLM, BMU, COK, CUW, CYM, ESH, FLK, FRO, GGY, GRL, GUM, HKG, HMD, IMN, IOT, JEY, MAC, MAF, MNP, MSR, NCL, NFK, NIU, PCN, PRI, PSE, PYF, SGS, SHN, SPM, SRB, SXM, TCA, VGB, VIR, WLF

First the VCI wrapped up in a nicer ggplot map.

And now the HCI.

These estimates seem reasonable. The greatest constraints on the executive are in Canada, Australia, and throughout Western Europe, while most of Africa, the Middle East, and South Asia all have severe limitations. It’s also not surprising that although the relative patterns between VCI and HCI are similar, constraints from fellow elites (HCI) are more common than constraints from the general public throughout the globe.


This concludes our brief review of VCI and HCI indices. If you’d like to learn more about datasets featuring composite indicators for levels of democracy and authoritarianism, please check out demcon’s A Brief Review of Democratic and Authoritarian Datasets vignette. I also encourage you to check out the full Which Institutions Matter? Re-Considering the Democratic Civil Peace manuscript, or the Democracy Week 2021 webinar that featured a session discussing the results of this paper and other recent research using V-Dem indicators.

Casper, Gretchen, and Claudiu Tufis. 2003. “Correlation Versus Interchangeability: The Limited Robustness of Empirical Findings on Democracy Using Highly Correlated Data Sets.” Political Analysis 11 (2): 196–203.
Coppedge, Michael, John Gerring, Carl Henrik Knutsen, Staffan I. Lindberg, Jan Teorell, Kyle M. Marquardt, Juraj Medzihorsky, et al. 2021. “V-Dem Methodology V11.” SSRN Scholarly Paper ID 3802748. Rochester, NY: Social Science Research Network.
Coppedge, Michael, John Gerring, Carl Henrik Knutsen, Staffan Lindberg, Jan Teorell, and Lisa Gastaldi. 2021. “V-Dem Country Coding Units V11.1.” Varieties of Democracy Project (V-Dem).
Fjelde, Hanne, Carl Henrik Knutsen, and Håvard Mokleiv Nygård. 2021. “Which Institutions Matter? Re-Considering the Democratic Civil Peace*.” International Studies Quarterly 65 (1): 223–37.
Jones, Zachary M., and Yonatan Lupu. 2018. “Is There More Violence in the Middle?” American Journal of Political Science 62 (3): 652–67.
Lindberg, Staffan I., Michael Coppedge, John Gerring, and Jan Teorell. 2014. “V-Dem: A New Way to Measure Democracy.” Journal of Democracy 25 (3): 159–69.
Marshall, Monty G, and Ted R. Gurr. 2020. “Polity5: Political Regime Characteristics and Transitions, 1800-2018 (Dataset UsersManual).” Vienna, VA.
Pemstein, Daniel, Kyle L. Marquardt, Eitan Tzelgov, Yi-ting Wang, Joshua Krusell, and Farhad Miri. 2018. “The V-Dem Measurement Model: Latent Variable Analysis for Cross-National and Cross-Temporal Expert-Coded Data.” SSRN Scholarly Paper. Rochester, NY.
South, Andy. 2021. Rnaturalearth: World Map Data from Natural Earth (version 4.1.0).
Treier, Shawn, and Simon Jackman. 2008. “Democracy as a Latent Variable.” American Journal of Political Science 52 (1): 201–17.
V-Dem Institute. 2020. Vdemdata. V-Dem Institute.