Jochen Fromm, 2022
# Install Python and create Anaconda environment
conda create -n matplotlib -y "python=3.7"
conda activate matplotlib
# Install Python packages
pip install pandas numpy jupyter matplotlib
# Install Jupyter kernel for Anaconda environment
python -m ipykernel install --sys-prefix --name=matplotlib
# Run the notebook
jupyter notebook
One of the most pressing political issue of our time is the rise of authoritarian populism and democratic backsliding in democratic societies (Norris & Inglehart, 2019). Authoritarian rulers, strongmen and self-proclaimed saviors destroy democracies (Ben-Ghiat, 2020) while populism is on the rise (Müller, 2016). Sarah Kendzior argued it can also happened in a democratic country like the USA (Kendzior, 2020). This is concerning because historically democracies have a tendency not to go to war with one another. More autoritarian system means war becomes more likely.
David Waldner and Ellen Lust (2018) argue that "despite a rich and diverse literature, we lack readily available theories to explain backsliding. So how do democracies backslide into authoritarian regimes? Can we model it? Robinson and Acemoglu argue in their book "Economic Origins of Dictatorship and Democracy" (2012) that different social groups prefer different political institutions because of the way they allocate political power and obtain resources. This aspect alone results in interesting dynamics:
In an (aspiring) autocracy demagogues, corrupt oligarchs and wannabe autocrats who care only about their clan, tribe or family and who are involved in shady or corrupt business deals have clearly an incentive to weaken political institutions, to restrict freedom of speech and to manipulate elections to remain in power, because they have to fear independent courts, investigative journalism and free elections. If they stop doing it, they risk changes that might lead to an early end of their regime. Once an autocracy has been firmly established, the autocrat can no longer voted out of office. Elections can not be lost for the incumbent anymore. People living in it have therefore a strong incentive to avoid cricizing the autocratic ruler and his family (or in totalitarian systems his party) if they do not want to be imprisoned or killed.
Democrats in a democracy have an incentive to strengthen institutions to remain in power because independent courts, freedom of speech and free elections enable them to obtain power in democratic elections in the first place. Stronger political institutions in turn lead to less power for those who are not democrats. Elections create an incentive for politicians to act in favor of the public if they want to be reelected. People in a democracy have as democratic citizens an incentive to raise their voice to criticize the government. Criminals and conmen have an incentive to remain silent to avoid persecution.
Therefore autocracy and democracy are like two fix points where the system returns to a stable state after any pertubation. If country is democratic, i.e. conducts fair elections, protects basic freedoms and holds elected leaders accountable, then it will remain democratic, if it is disturbed slightly. If country is authoritarian, i.e. has fradulent or no elections, ignores basic freedoms and does not hold elected leaders accountable, then it will remain authoritarian, even if there are unrests. If we use a kind of "democracy score" from 0 to 1 to measure fair elections, public checks and accountability (similar to Hyde, 2020), the system has two fix points at 0 and 1.
In evolutionary game theory which has been for more than 40 years (John Maynard Smith, 1982) two fix points can be found in the stag-hunt game or the coordination game, and we can try to use the well-known replicator equations for these games to model the transition between an autocracy and a democracy. Normally the system returns to a stable democracy, but if the system is pertubed and a certain tipping point is crossed, then the system moves inevitably towards an autocracy (and vice versa).
import math
import numpy as np
import matplotlib.pyplot as plt
Each game has a specific Payoff Matrix
Hawk-Dove: cost for injury is "c", resource value is "v"
General Hawk Dove Coordination
a b (v-c)/2 v -1 2 1 0
c d 0 v/2 0 1 0 2
Prisoner's Dilemma: temptation payoff t, cooperation reward r, punishment p, sucker s where t > r > p > s
Stag Hunt Prisoner's Dilema
4 1 r s 3 1
3 2 t p 4 2
# 2 strategy coordination game payoff matrix
games = {
'coordination_asymmetric_1': [1,0,0,2],
'coordination_asymmetric_2': [2,0,0,1],
'coordination_symmetric': [2,0,0,2],
'hawk_dove_v2_c3': [-0.5,2,0,1],
'hawk_dove_v2_c4': [-1,2,0,1],
'hawk_dove_v2_c5': [-1.5,2,0,1],
'stag_hunt': [4,-1,3,0],
'prisoners_dilemma': [3,1,4,2],
}
# Mixed Nash Equilibrium according to John Maynard Smith (1982)
def nash(name):
a,b,c,d = games[name]
if (b - d + c - a) == 0:
return -1, -1
nash_x = (b - d) / (b - d + c - a)
nash_y = 1-nash_x
return nash_x, nash_y
def g(name,x,y):
payoff = games[name]
z = (payoff[0]*x*x + payoff[2]*x*y + payoff[1]*x*y + payoff[3]*y*y)
vx = x*((payoff[0]*x + payoff[1]*y) - z)
vy = y*((payoff[2]*x + payoff[3]*y) - z)
return vx, vy
Define helper functions
def plot_payoff_matrix(ax, name):
a,b,c,d = games[name]
ax.text(0.4, 0.9, f"Payoff Matrix:", fontsize=10)
ax.text(0.72, 0.92, f"{a} {b}", fontsize=10)
ax.text(0.72, 0.87, f"{c} {d}", fontsize=10)
def plot_nash_equilibrium(ax, name):
nash_x, nash_y = nash(name)
ax.plot(nash_x, nash_y, 'o', color='green')
nash_equilibrium = f"{'{:.2f}'.format(nash_x)}, {'{:.2f}'.format(nash_y)}"
ax.text(0.4, 0.78, f"Nash equilibrium: {nash_equilibrium}", fontsize=10)
Visualize the vector field of the replicator equation for coordination games which have slight different parameters
n = 10
X = np.linspace(0, 1, n)
Y = np.array([(1-value) for value in X])
fig, ax = plt.subplots(1, 3, figsize=(15, 5), sharey=True)
names = {
'coordination_asymmetric_2': "Asymmetric coordination 2-1",
'coordination_symmetric': "Symmetric coordination 2-2",
'coordination_asymmetric_1': "Asymmetric coordination 1-2"
}
keys = list(names.keys())
for i in range(len(keys)):
name = keys[i]
U, V = g(name, X, Y)
ax[i].quiver(X, Y, U, V, width=0.006)
ax[i].plot([0,1.0], [1.0,0.0], color='black', linewidth=0.3)
ax[i].set_title(f"{names[name]} game", fontsize=12)
plot_nash_equilibrium(ax[i], name)
plot_payoff_matrix(ax[i], name)
For a symmetric coordination game or the stag hunt game the mixed Nash equilibrium is in the middle. Both have similar dynamics - two fixed points, and one instable equilibrium between. As Brian Skyrms (2012) as argued, these kind of games can be applied to model cooperation and the evolution of social structure.
If the reward for not deviating from the majority increases dramatically (or alternatively the punishment for a strategy that deviates from the majority), then the equilibrium shifts accordingly.
The idea is that we can model this democratic erosion by shifting the instable fixpoint in a coordination game model, which represents the equilibrium between those who cooperate to support autocracy and those who support democracy.
Bermeo (2016) argues that democratic backsliding happens in different ways – coups d’état, election-day vote fraud, and in recent years in slightly more sophisticated forms suchs as promissory coups, executive aggrandizement, and strategic manipulation of elections. There are many types of election manupulation and election fraud in order to rig elections.
Although coups take place by definition suddenly and violenty, and can certainly be seen as the climax of democratic backsliding, democratic institutions like independent courts, and critical media can prevent them. Democratic erosion is necessary for coups to be successful because it eliminates these safeguards. Courts in authoritarian systems are special (Ginsburg & Moustafa, 2008).
A process of democratic erosion can begin slowly and can take a long time. Democracies erode and finally disappear step by step by
Therefore Levitsky & Ziblatt (2018) propose a three stage model of the democratic backsliding: attacking referees (esp. the judicial system), targeting opponents (political opponents, critical media outlets), and changing the rules of the game (changing constitutions, legislative bodies and electoral systems to consolidate power).
But if we see the group of people which has a special role like police officers, judges, opponents, and journalists and their extended families and friends as part of the population, we can model such a transition simply by counting the number of people who cooperate with the aspiring autocrat. The number of people who cooperate can be described by the replicator equation of the coordination game.
def f(name, x):
result = g(name,x,1-x)
return result[0]
# calculates the trajectory of the state according to
# the replicator equation of the game.
# x is the start value for state
# m is the initial momentum which is used to pertubate the state
# steps is a list which defines the number of iterations
# name is the name of the game
def trajectory(x, m, steps, name):
values = []
sign = m
for step in steps:
m = m + f(name, x)
if (sign > 0) and (m < 0): m = 0
if (sign < 0) and (m > 0): m = 0
x = x + (f(name,x) + m)*1/10
if x < 0: x = 0
if x > 1: x = 1
values.append(x)
return values
If a major part of the population supports democracy and it is well established and well protected by stable institutions like independent parliaments and courts, then the systems returns after an pertubation towards autocracy to a stable state (for instance the United States Capitol attack on Jan 6 2021 by Trump supporters where the institutions remained strong enough and the courts rejected attempts to manipulate the elections). If the magnitude of the unrest is high enough and the system is in a general crises, then it is possible to cross a tipping point towards an authoritarian regime.
In this model the tipping point which corresponds to the nash equilibrium represents the fraction of people which support autocracy or democracy. If a majority of people (in the model 67%) in an autocracy cooperate, i.e. by avoiding criticism of the autocratic ruler, it will remain one even for large pertubations which represent unrests. If such a system is disturbed by anti-government protests, then the system returns after a short pertubation to a stable state (for example the Arabic Spring uprisings). This makes sense because once an authoritarian regime is firmly establised, a major part of the population has an incentive to support the autocracy by silent agreement if the autocracy persecutes dissidents with the full power of the state.
If a only a minority of people in an autocracy cooperate (in the model 33%), while even many police officers, politicians, judges, and journalists are against it, then already small pertubations can lead to a regime change if the conditions are right.
steps = range(30)
X, Y = np.meshgrid(np.linspace(0, 30, 15), np.linspace(0, 1, 15))
name1 = 'coordination_asymmetric_1'
name2 = 'coordination_symmetric'
name3 = 'coordination_asymmetric_2'
values1a = trajectory(0.1, 1.0000, steps, name1)
values1b = trajectory(0.1, 1.1500, steps, name1)
values1c = trajectory(0.1, 1.2000, steps, name1)
values1d = trajectory(0.1, 1.2444, steps, name1)
U1 = X*0
V1 = f(name1,Y)
values2a = trajectory(0.1, 1.0000, steps, name2)
values2b = trajectory(0.1, 1.1500, steps, name2)
values2c = trajectory(0.1, 1.2000, steps, name2)
values2d = trajectory(0.1, 1.2444, steps, name2)
U2 = X*0
V2 = f(name2,Y)
values3a = trajectory(0.1, 0.2000, steps, name3)
values3b = trajectory(0.1, 0.4000, steps, name3)
values3c = trajectory(0.1, 0.5500, steps, name3)
values3d = trajectory(0.1, 0.6000, steps, name3)
U3 = X*0
V3 = f(name3,Y)
fig, ax = plt.subplots(1, 3, figsize=(12, 7), sharey=True)
ax[0].plot(steps, values1a)
ax[0].plot(steps, values1b)
ax[0].plot(steps, values1c)
ax[0].plot(steps, values1d)
ax[0].quiver(X, Y, U1, V1, width=0.006)
nash_x = nash(name1)[0]
ax[0].plot([0.0,30], [nash_x,nash_x], color='black', linewidth=0.5)
ax[0].set_ylabel('Autocracy', fontsize=12)
ax[0].set_xlabel('Time', fontsize=12)
ax[1].plot(steps, values2a)
ax[1].plot(steps, values2b)
ax[1].plot(steps, values2c)
ax[1].plot(steps, values2d)
ax[1].quiver(X, Y, U2, V2, width=0.006)
nash_x = nash(name2)[0]
ax[1].plot([0.0,30], [nash_x,nash_x], color='black', linewidth=0.5)
ax[1].set_xlabel('Time', fontsize=12)
ax[2].plot(steps, values3a)
ax[2].plot(steps, values3b)
ax[2].plot(steps, values3c)
ax[2].plot(steps, values3d)
ax[2].quiver(X, Y, U3, V3, width=0.006)
nash_x = nash(name3)[0]
ax[2].plot([0.0,30], [nash_x,nash_x], color='black', linewidth=0.5)
ax[2].set_xlabel('Time', fontsize=12)
fig.suptitle('Transition Democracy - Autocracy')
Text(0.5, 0.98, 'Transition Democracy - Autocracy')
If a majority of people (in the model 67%) in an democracy cooperate, i.e. by supporting the political institutions and fighting for fair elections, it will remain one even for large pertubations. If such a system is disturbed by riots or right-wing movements, then the system returns after a short pertubation to a stable state (for example the unsuccessful Capital Riot Jan 6). This makes sense because once an democratic regime is firmly establised, a major part of the population has an incentive to support the democracy and to obey the law since the regime persecutes criminals with the full power of the state.
The situation looks different if a democracy is severely weakened, for example by a heavy economic crisis. If only a minority of people in an democracy still cooperate (in the model 33%), while even many police officers, politicians, judges, and journalists are against it, then already small pertubations can lead to a rapid regime change if the conditions are right.
values1a = trajectory(0.9, -0.2000, steps, name1)
values1b = trajectory(0.9, -0.4000, steps, name1)
values1c = trajectory(0.9, -0.5500, steps, name1)
values1d = trajectory(0.9, -0.6000, steps, name1)
U1 = X*0
V1 = f(name1,Y)
values2a = trajectory(0.9, -1.0000, steps, name2)
values2b = trajectory(0.9, -1.1500, steps, name2)
values2c = trajectory(0.9, -1.2000, steps, name2)
values2d = trajectory(0.9, -1.2444, steps, name2)
U2 = X*0
V2 = f(name2,Y)
values3a = trajectory(0.9, -1.0000, steps, name3)
values3b = trajectory(0.9, -1.1500, steps, name3)
values3c = trajectory(0.9, -1.2000, steps, name3)
values3d = trajectory(0.9, -1.2444, steps, name3)
U3 = X*0
V3 = f(name3,Y)
fig, ax = plt.subplots(1, 3, figsize=(12, 7), sharey=True)
ax[0].plot(steps, values3a)
ax[0].plot(steps, values3b)
ax[0].plot(steps, values3c)
ax[0].plot(steps, values3d)
ax[0].quiver(X, Y, U3, V3, width=0.006)
nash_x = nash(name3)[0]
ax[0].plot([0.0,30], [nash_x,nash_x], color='black', linewidth=0.5)
ax[0].set_ylabel('Autocracy', fontsize=12)
ax[0].set_xlabel('Time', fontsize=12)
ax[1].plot(steps, values2a)
ax[1].plot(steps, values2b)
ax[1].plot(steps, values2c)
ax[1].plot(steps, values2d)
ax[1].quiver(X, Y, U2, V2, width=0.006)
nash_x = nash(name2)[0]
ax[1].plot([0.0,30], [nash_x,nash_x], color='black', linewidth=0.5)
ax[1].set_xlabel('Time', fontsize=12)
ax[2].plot(steps, values1a)
ax[2].plot(steps, values1b)
ax[2].plot(steps, values1c)
ax[2].plot(steps, values1d)
ax[2].quiver(X, Y, U1, V1, width=0.006)
nash_x = nash(name1)[0]
ax[2].plot([0.0,30], [nash_x,nash_x], color='black', linewidth=0.5)
ax[2].set_xlabel('Time', fontsize=12)
fig.suptitle('Transition Autocracy - Democracy')
Text(0.5, 0.98, 'Transition Autocracy - Democracy')
Since the model is symmetric, the same argument can be applied to the opposite situation:
If a majority of people (in the model 67%) in an autocracy cooperate with the regime, i.e. by avoiding criticism of the autocratic ruler, it will remain one even for large pertubations which represent unrests. If such a system is disturbed by anti-government protests, then the system returns after a short pertubation to a stable state (for example the Arabic Spring uprisings). This makes sense because once an authoritarian regime is firmly establised, a major part of the population has an incentive to support the autocracy by silent agreement if the autocracy persecutes dissidents with the full power of the state. In authoritarian system anyone who criticizes the authoritarian government is considered as a criminal and potentially as an enemy of the state.
The situation looks different if an authoritarian regime is severely weakened. If only a minority of people in an autocracy still cooperate (in the model 33%), while many members of police & military, politicians, judges, and journalists are against it, then already small pertubations can lead to a regime change if the conditions are right.
We have applied a simple model from evolutionary game theory based on the "coordination game" to describe the problem of democratic backsliding. It describes well that..
autocracies have a tendency to remain stable because people get punished if they do not cooperate and remain silent. Unrests do not necessarily succeed.
democracies are stable too - if institutions remain strong - because again people get punished if they do not cooperate. In democracies the system punishes criminals and people who break the law like people who lie under oath in court
there can be transitions from democracies to autocracies that fail
there can be transitions from autocracies to democracies that fail
there can be transitions between both forms that succeed if the momentum is high enough and the conditions are right
Articles
Books