1 Introduction

This report presents descriptive analysis of the Global Dynasties Dataset (GDD), a leader-level panel recording nominal heads of state or government and their familial ties for 10,119 country-years spanning 1946–2020. A leader is coded as dynastic (pred_bin = 1) if at least one family member previously held political office at any level (national, state, or local).

The analysis proceeds in two parts:

  1. Regional analysis — global and cross-regional patterns of dynastic leadership, kin-type distribution, and regime variation.
  2. South Asia deep-dive — a focused look at the eight South Asian countries in the dataset, where dynastic rates are exceptionally high.

Data source: Global Dynasties Dataset (Verma & Midha, 2026), sheet NEW Jan-Feb 2026. Variables prefixed fln_ are harmonized from the TED dataset (Nooruddin et al., 2022; Harvard Dataverse DOI: 10.7910/DVN/UXFY88).


2 Regime Type Definitions

The dataset classifies each country-year into one of six system categories. These are used throughout the analysis to contextualise dynastic patterns across regime types:

Regime Type Definition
Parliamentary Democracy Competitive multi-party elections; executive accountable to legislature; prime minister or equivalent as effective head of government (e.g. India, Sri Lanka under democratic periods).
Presidential Democracy Competitive elections; directly elected executive president with a fixed term who is not accountable to legislature for survival in office (e.g. Maldives post-2008).
Mixed Democratic Hybrid systems combining features of both parliamentary and presidential models, or semi-competitive elections with meaningful opposition but institutional ambiguities (e.g. Bangladesh under early 1970s arrangements).
Civilian Dictatorship Non-democratic single-party or personalised rule without free elections, led by a civilian ruler (e.g. early Bangladesh under Mujibur Rahman’s one-party BAKSAL period; Sheikh Hasina’s later tenure coded thus).
Military Dictatorship Executive power exercised by military officers through a coup or direct military governance; legislative and electoral competition suspended or tightly controlled (e.g. Pakistan under Ayub Khan, Zia-ul-Haq, Musharraf; Bangladesh under Zia ur-Rahman, Ershad).
Royal Dictatorship Hereditary monarchy with no or minimal competitive elections; executive power concentrated in a royal family (e.g. Bhutan under monarchy, certain Gulf states).

Note: These categories are project-specific codings by the GDD team. They may differ from other datasets’ operationalisations (e.g. V-Dem, Polity). In particular, the Mixed Democratic category captures transitional or ambiguous cases that do not fit neatly into purely democratic or purely autocratic bins.


3 Setup and Data Loading

library(readxl)
library(tidyverse)
library(scales)
library(kableExtra)
library(RColorBrewer)
df <- read_excel(
  "D:/Populism and Democrary/Global Dynasty/Global_Dynasties_Dataset.xlsx",
  sheet = "NEW Jan-Feb 2026"
) %>%
  # Recode labels
  mutate(
    dynasty      = as.integer(pred_bin),
    female_leader = as.integer(fln_gender),
    decade       = paste0(floor(year / 10) * 10, "s"),

    relation_label = case_when(
      relation_code_pred == 2  ~ "Father",
      relation_code_pred == 3  ~ "Mother",
      relation_code_pred == 4  ~ "Son",
      relation_code_pred == 6  ~ "Husband",
      relation_code_pred == 8  ~ "Brother",
      relation_code_pred == 10 ~ "Grandfather",
      relation_code_pred == 11 ~ "Grandmother",
      relation_code_pred == 14 ~ "Uncle",
      relation_code_pred == 18 ~ "Cousin",
      relation_code_pred == 19 ~ "Other kin",
      TRUE                     ~ NA_character_
    ),

    pos_label = case_when(
      pos_code_pred == 2 ~ "Head of Government",
      pos_code_pred == 3 ~ "Cabinet Minister",
      pos_code_pred == 4 ~ "Member of Parliament",
      pos_code_pred == 5 ~ "Assembly / Chief Minister",
      pos_code_pred == 6 ~ "Mayor",
      pos_code_pred == 7 ~ "Councillor",
      pos_code_pred == 1 ~ "Other",
      TRUE               ~ NA_character_
    ),

    system_category = case_when(
      system_category == "Civilian Dictatorship"   ~ "Civilian Dictatorship",
      system_category == "Military Dictatorship"   ~ "Military Dictatorship",
      system_category == "Royal Dictatorship"      ~ "Royal Dictatorship",
      system_category == "Parliamentary Democracy" ~ "Parliamentary Democracy",
      system_category == "Presidential Democracy"  ~ "Presidential Democracy",
      system_category == "Mixed Democratic"        ~ "Mixed Democratic",
      TRUE                                         ~ NA_character_
    )
  )

# Drop the 5 rows missing Region
df <- df %>% filter(!is.na(Region))

cat("Total country-years:", nrow(df), "\n")
## Total country-years: 10114
cat("Dynastic leaders:", sum(df$dynasty == 1), "\n")
## Dynastic leaders: 2658
cat("Non-dynastic:", sum(df$dynasty == 0), "\n")
## Non-dynastic: 7456
cat("Years covered:", min(df$year), "–", max(df$year), "\n")
## Years covered: 1946 – 2020

4 Part I: Regional Analysis

4.1 Global Dynastic Prevalence

4.1.1 Overall Rate

overall <- df %>%
  summarise(
    Total        = n(),
    Dynastic     = sum(dynasty == 1),
    Non_dynastic = sum(dynasty == 0),
    Rate         = round(Dynastic / Total * 100, 1)
  )

overall %>%
  kbl(
    col.names = c("Total country-years", "Dynastic leaders",
                  "Non-dynastic leaders", "Dynastic rate (%)"),
    caption   = "Table 1: Global dynastic leadership (1946–2020)"
  ) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Table 1: Global dynastic leadership (1946–2020)
Total country-years Dynastic leaders Non-dynastic leaders Dynastic rate (%)
10114 2658 7456 26.3

Across all 10114 country-years in the dataset, 2658 (26.3%) had a dynastic leader — a leader with at least one family member who previously held political office.

4.1.2 Trend Over Time

trend <- df %>%
  group_by(year) %>%
  summarise(
    rate    = mean(dynasty == 1) * 100,
    n_total = n()
  )

ggplot(trend, aes(x = year, y = rate)) +
  geom_line(colour = "#2c7bb6", linewidth = 0.8) +
  geom_smooth(method = "loess", span = 0.3, se = TRUE,
              colour = "#d7191c", fill = "#f7b6b2", alpha = 0.3) +
  scale_x_continuous(breaks = seq(1946, 2020, 10)) +
  scale_y_continuous(limits = c(0, 60), labels = label_percent(scale = 1)) +
  labs(
    title    = "Global Share of Dynastic Leaders, 1946–2020",
    subtitle = "Red smoothed line shows LOESS trend; shaded band is 95% CI",
    x        = "Year",
    y        = "Share of dynastic leaders (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.minor = element_blank())
Figure 1: Share of dynastic leaders globally by year (1946–2020)

Figure 1: Share of dynastic leaders globally by year (1946–2020)

4.1.3 By Decade

decade_df <- df %>%
  group_by(decade) %>%
  summarise(rate = mean(dynasty == 1) * 100, n = n()) %>%
  arrange(decade)

ggplot(decade_df, aes(x = decade, y = rate, fill = rate)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(rate, 1), "%")),
            vjust = -0.5, size = 4, fontface = "bold") +
  scale_fill_gradient(low = "#c6dbef", high = "#2171b5", guide = "none") +
  scale_y_continuous(limits = c(0, 40), labels = label_percent(scale = 1)) +
  labs(
    title = "Dynastic Leadership Rate by Decade",
    x     = "Decade",
    y     = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.x = element_blank())
Figure 2: Dynastic rate by decade

Figure 2: Dynastic rate by decade

4.2 Dynastic Rates by Region

region_df <- df %>%
  group_by(Region) %>%
  summarise(
    Total    = n(),
    Dynastic = sum(dynasty == 1),
    Rate     = Dynastic / Total * 100
  ) %>%
  arrange(desc(Rate))

ggplot(region_df, aes(x = reorder(Region, Rate), y = Rate, fill = Rate)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(Rate, 1), "%")),
            hjust = -0.1, size = 4, fontface = "bold") +
  coord_flip() +
  scale_fill_gradient(low = "#fee8c8", high = "#b30000", guide = "none") +
  scale_y_continuous(limits = c(0, 75), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Leadership Rate by Region (1946–2020)",
    subtitle = "Percentage of country-years with a dynastic leader",
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.y = element_blank())
Figure 3: Dynastic leadership rate by region

Figure 3: Dynastic leadership rate by region

region_df %>%
  mutate(Rate = paste0(round(Rate, 1), "%")) %>%
  rename(Region = Region, `Country-years` = Total,
         `Dynastic leaders` = Dynastic, `Dynastic rate` = Rate) %>%
  kbl(caption = "Table 2: Dynastic rates by region") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = FALSE)
Table 2: Dynastic rates by region
Region Country-years Dynastic leaders Dynastic rate
South Asia 552 324 58.7%
Middle East 1169 584 50%
East Asia 1038 309 29.8%
North America 1161 341 29.4%
Australia and Oceania 309 74 23.9%
South America 776 168 21.6%
Africa 2735 568 20.8%
Western Europe 1363 196 14.4%
Eastern Europe 1011 94 9.3%

4.4 Regime Type and Dynasticism

regime_df <- df %>%
  filter(!is.na(system_category)) %>%
  group_by(system_category) %>%
  summarise(
    Total    = n(),
    Dynastic = sum(dynasty == 1),
    Rate     = Dynastic / Total * 100
  ) %>%
  arrange(desc(Rate))

regime_colours <- c(
  "Royal Dictatorship"      = "#7b2d8b",
  "Civilian Dictatorship"   = "#d73027",
  "Military Dictatorship"   = "#fc8d59",
  "Mixed Democratic"        = "#fee090",
  "Parliamentary Democracy" = "#91bfdb",
  "Presidential Democracy"  = "#4575b4"
)

ggplot(regime_df,
       aes(x = reorder(system_category, Rate), y = Rate,
           fill = system_category)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(Rate, 1), "%")),
            hjust = -0.1, size = 4, fontface = "bold") +
  coord_flip() +
  scale_fill_manual(values = regime_colours, guide = "none") +
  scale_y_continuous(limits = c(0, 80), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Leadership Rate by Regime Type (1946–2020)",
    subtitle = "Percentage of country-years with a dynastic leader",
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.y = element_blank())
Figure 5: Dynastic rate by regime type

Figure 5: Dynastic rate by regime type

heat_df <- df %>%
  filter(!is.na(system_category)) %>%
  group_by(Region, system_category) %>%
  summarise(n = n(), rate = mean(dynasty == 1) * 100, .groups = "drop") %>%
  filter(n >= 20)   # suppress cells with very few observations

ggplot(heat_df, aes(x = system_category, y = Region, fill = rate)) +
  geom_tile(colour = "white", linewidth = 0.5) +
  geom_text(aes(label = ifelse(n >= 20, paste0(round(rate, 0), "%"), "")),
            size = 3.5, colour = "black") +
  scale_fill_gradient2(
    low      = "#f7fbff",
    mid      = "#6baed6",
    high     = "#08306b",
    midpoint = 30,
    name     = "Dynastic\nrate (%)"
  ) +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 12)) +
  labs(
    title    = "Dynastic Rate by Regime Type and Region",
    subtitle = "Cells with fewer than 20 country-years suppressed",
    x        = NULL,
    y        = NULL
  ) +
  theme_minimal(base_size = 12) +
  theme(axis.text.x = element_text(angle = 30, hjust = 1, size = 10),
        panel.grid  = element_blank())
Figure 6: Dynastic rate — regime type × region heatmap

Figure 6: Dynastic rate — regime type × region heatmap

4.5 Who Do Dynastic Leaders Inherit From?

4.5.1 Global Kin-Type Distribution

kin_df <- df %>%
  filter(dynasty == 1, !is.na(relation_label)) %>%
  count(relation_label) %>%
  mutate(pct = n / sum(n) * 100) %>%
  arrange(desc(pct))

ggplot(kin_df, aes(x = reorder(relation_label, pct), y = pct,
                   fill = relation_label)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(pct, 1), "%")),
            hjust = -0.1, size = 4, fontface = "bold") +
  coord_flip() +
  scale_fill_brewer(palette = "Paired", guide = "none") +
  scale_y_continuous(limits = c(0, 80), labels = label_percent(scale = 1)) +
  labs(
    title    = "Type of Dynastic Kin Relationship (Global, 1946–2020)",
    subtitle = "Among dynastic leaders (pred_bin = 1) with identified kin type",
    x        = NULL,
    y        = "Share of dynastic leaders (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.y = element_blank())
Figure 7: Type of kin relationship — dynastic predecessors (global)

Figure 7: Type of kin relationship — dynastic predecessors (global)

4.5.2 Position Held by Dynastic Relative

pos_df <- df %>%
  filter(dynasty == 1, !is.na(pos_label)) %>%
  count(pos_label) %>%
  mutate(pct = n / sum(n) * 100) %>%
  arrange(desc(pct))

ggplot(pos_df, aes(x = reorder(pos_label, pct), y = pct, fill = pos_label)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(pct, 1), "%")),
            hjust = -0.1, size = 4, fontface = "bold") +
  coord_flip() +
  scale_fill_brewer(palette = "Set2", guide = "none") +
  scale_y_continuous(limits = c(0, 75), labels = label_percent(scale = 1)) +
  labs(
    title    = "Office Level of Dynastic Predecessor (Global, 1946–2020)",
    subtitle = "Among dynastic leaders with identified predecessor position",
    x        = NULL,
    y        = "Share of dynastic leaders (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.y = element_blank())
Figure 8: Office level held by dynastic predecessor

Figure 8: Office level held by dynastic predecessor

4.6 Gender and Dynasticism

gender_df <- df %>%
  mutate(gender_label = if_else(female_leader == 1, "Female leaders", "Male leaders")) %>%
  group_by(gender_label) %>%
  summarise(
    Total    = n(),
    Dynastic = sum(dynasty == 1),
    Rate     = Dynastic / Total * 100
  )

ggplot(gender_df, aes(x = gender_label, y = Rate, fill = gender_label)) +
  geom_col(colour = "white", width = 0.5) +
  geom_text(aes(label = paste0(round(Rate, 1), "%\n(n=", Dynastic, ")")),
            vjust = -0.4, size = 5, fontface = "bold") +
  scale_fill_manual(values = c("Female leaders" = "#d95f02",
                               "Male leaders"   = "#1f78b4"),
                    guide = "none") +
  scale_y_continuous(limits = c(0, 80), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Rate by Leader Gender (Global, 1946–2020)",
    subtitle = paste0("Female leaders n=", sum(df$female_leader==1),
                      "; Male leaders n=", sum(df$female_leader==0)),
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 14) +
  theme(panel.grid.major.x = element_blank())
Figure 9: Dynastic rates by gender

Figure 9: Dynastic rates by gender

gender_decade <- df %>%
  mutate(gender_label = if_else(female_leader == 1, "Female", "Male")) %>%
  group_by(decade, gender_label) %>%
  summarise(rate = mean(dynasty == 1) * 100, n = n(), .groups = "drop") %>%
  filter(n >= 5)

ggplot(gender_decade, aes(x = decade, y = rate, colour = gender_label,
                          group = gender_label)) +
  geom_line(linewidth = 1.1) +
  geom_point(size = 3) +
  scale_colour_manual(values = c("Female" = "#d95f02", "Male" = "#1f78b4"),
                      name = "Leader gender") +
  scale_y_continuous(limits = c(0, 100), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Rate by Gender Over Decades",
    subtitle = "Cells with fewer than 5 observations suppressed",
    x        = "Decade",
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.minor = element_blank(),
        legend.position  = "bottom")
Figure 10: Dynastic rate for female leaders by decade

Figure 10: Dynastic rate for female leaders by decade


5 Part II: South Asia Deep-Dive

sa <- df %>% filter(Region == "South Asia")
cat("South Asia country-years:", nrow(sa), "\n")
## South Asia country-years: 552
cat("Dynastic leaders:", sum(sa$dynasty == 1),
    paste0("(", round(mean(sa$dynasty==1)*100, 1), "%)"), "\n")
## Dynastic leaders: 324 (58.7%)

South Asia stands out as the most dynastically concentrated region in the dataset. With a dynastic rate of 58.7% — compared to a global average of 26.3% — the eight countries in the region offer a rich case for understanding how familial political succession operates across different regime types and historical periods.

A note on how counts work in this dataset. The GDD is a country-year panel: each row represents one country in one year. When we say “India has 20 dynastic country-years,” this means India was governed by a dynastic leader in 20 separate calendar years — not that India had 20 different dynastic individuals. In fact, India had only 2 unique dynastic leaders (Indira Gandhi and Rajiv Gandhi) who together account for all 20 dynastic years. Likewise, Bangladesh’s figures begin only from 1971 (its year of independence), so all pre-1971 history is excluded. This distinction between country-years and unique leaders matters whenever interpreting counts — the tables in the next section make both explicit.

5.1 Dynastic Leaders at a Glance: India, Pakistan & Bangladesh

5.1.1 India

india_leaders <- df %>%
  filter(Country == "India") %>%
  arrange(year) %>%
  group_by(nominal_leader) %>%
  summarise(
    `Years in power`   = paste0(min(year), "–", max(year)),
    `No. of years`     = n(),
    Dynastic           = if_else(max(dynasty) == 1, "✔ Yes", "✘ No"),
    `Regime type`      = paste(unique(system_category), collapse = " / "),
    `Dynastic lineage` = first(na.omit(dynasty_desc)),
    .groups = "drop"
  ) %>%
  mutate(
    `Dynastic lineage` = str_replace_all(`Dynastic lineage`, "\r\n", "; "),
    `Dynastic lineage` = str_trunc(`Dynastic lineage`, 120)
  ) %>%
  rename(Leader = nominal_leader)

india_leaders %>%
  kbl(caption = "Table 5: All leaders of India (1947–2020) — dynastic status") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = TRUE, font_size = 12) %>%
  column_spec(3, bold = TRUE) %>%
  column_spec(4, color = if_else(india_leaders$Dynastic == "✔ Yes",
                                  "#bd0026", "grey40"), bold = TRUE) %>%
  row_spec(which(india_leaders$Dynastic == "✔ Yes"), background = "#fff0f0")
Table 5: All leaders of India (1947–2020) — dynastic status
Leader Years in power No. of years Dynastic Regime type Dynastic lineage
Atal Bihari Vajpayee 1998–2003 6 ✘ No Parliamentary Democracy Father: Krishna Bihari Vajpayee, school teacher; Mother: Krishna Devi
Chandra Shekhar 1990–1990 1 ✘ No Parliamentary Democracy Son: Pankaj Shekhar Singh, Politician; Son: Neeraj Shekhar, Politician-Member of Parliament
Charan Singh 1979–1979 1 ✘ No Parliamentary Democracy Son: Ajit Singh, Politician-Minister; Grandson: Jayant Chaudhary, Politician-Minister
H.D. Deve Gowda 1996–1996 1 ✘ No Parliamentary Democracy Father: Dodde Gowda, Farmer; Mother: Devamma, home maker ; Son: HD Revanna, Politician-Member of Asseambly; Grands…
Inder Kumar Gujral 1997–1997 1 ✘ No Parliamentary Democracy Father: Avtar Narain ; Mother: Pushpa Gujral ; Son: Naresh Gujral, Politician-Member of Parliament
Indira Gandhi 1966–1983 15 ✔ Yes Parliamentary Democracy Father: Jawaharlal Nehru, Politician-Prime Minister; Son: Rajiv Gandhi, Politician-Prime Minister; Son: Sanjay Gandh…
Jawaharlal Nehru 1947–1963 17 ✘ No Parliamentary Democracy Father: Motilal Nehru, Barrister ; Mother: Swarup Rani Thussu ; Daughter: Indira Gandhi, Politician-Prime Minister
Lal Bahadur Shastri 1964–1965 2 ✘ No Parliamentary Democracy Father: Sharada Prasad Srivastava, Teacher; Mother: Ramdulari Devi; Son: Anil Shastri, Politician-Minister; Son: Su…
Manmohan Singh 2004–2013 10 ✘ No Parliamentary Democracy Father: Gurmukh Singh ; Mother: Amrit Kaur
Morarji Desai 1977–1978 2 ✘ No Parliamentary Democracy father: Ranchhodji Nagarji Desai, school teacher ; Mother: Vajiaben Desai
Narendra Modi 2014–2020 7 ✘ No Parliamentary Democracy Father: Damodardas Mulchand Modi, Grocer; Mother: Hiraben Modi
P.V. Narasimha Rao 1991–1995 5 ✘ No Parliamentary Democracy Father: Sitarama Rao ; Mother: Rukma Baiagrarian ; Son: PV Ranga Rao, Politician-Member of Assembly; Son : P.V. Raje…
Rajiv Gandhi 1984–1988 5 ✔ Yes Parliamentary Democracy Father: Feroze Gandhi, Politician-Member of Parliament; Mother: Indira Gandhi, Politician-Prime Minister; Brother: Sa…
Vishwanath Pratap Singh 1989–1989 1 ✘ No Parliamentary Democracy Son: Ajeya Singh, Politician

India: Only 2 out of 14 leaders were dynastic: Indira Gandhi (daughter of Jawaharlal Nehru; served 1966–1984 across two stints) and Rajiv Gandhi (son of Indira Gandhi; served 1984–1989). Together they account for 20 dynastic country-years out of India’s 74 total. Narendra Modi is coded non-dynastic — his father was a grocer with no political office.


5.1.2 Pakistan

pak_leaders <- df %>%
  filter(Country == "Pakistan") %>%
  arrange(year) %>%
  group_by(nominal_leader) %>%
  summarise(
    `Years in power`   = paste0(min(year), "–", max(year)),
    `No. of years`     = n(),
    Dynastic           = if_else(max(dynasty) == 1, "✔ Yes", "✘ No"),
    `Regime type`      = paste(unique(system_category), collapse = " / "),
    `Dynastic lineage` = first(na.omit(dynasty_desc)),
    .groups = "drop"
  ) %>%
  mutate(
    `Dynastic lineage` = str_replace_all(`Dynastic lineage`, "\r\n", "; "),
    `Dynastic lineage` = str_trunc(`Dynastic lineage`, 120)
  ) %>%
  rename(Leader = nominal_leader)

pak_leaders %>%
  kbl(caption = "Table 6: All leaders of Pakistan (1947–2020) — dynastic status") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = TRUE, font_size = 12) %>%
  column_spec(3, bold = TRUE) %>%
  column_spec(4, color = if_else(pak_leaders$Dynastic == "✔ Yes",
                                  "#bd0026", "grey40"), bold = TRUE) %>%
  row_spec(which(pak_leaders$Dynastic == "✔ Yes"), background = "#fff0f0")
Table 6: All leaders of Pakistan (1947–2020) — dynastic status
Leader Years in power No. of years Dynastic Regime type Dynastic lineage
Agha Mohammad Yahya Khan 1969–1970 2 ✘ No Military Dictatorship Father : Saadat Ali Khan, Police Officer
Benazir Bhutto 1988–1995 5 ✔ Yes Military Dictatorship / Parliamentary Democracy Father: Zulfikar Ali Bhutto, Politician-Prime Minister; Mother : Nusrat Bhutto; Son: Bilawal Zardari, Politician-Mini…
Chauhdry Mohammad Ali 1955–1955 1 ✘ No Parliamentary Democracy Son: Chaudhry Ahmed Mukhtar, Politician-Minister; Grandson: Chaudhry Moonis Elahi, Politician-Member of Parliament
Hwaja Nazim ad-Din 1951–1952 2 ✔ Yes Parliamentary Democracy Father: Khwaja Nizamuddin; Mother: Nawabzadi Bilqis Banu; Grandfather: Khwaja Ahsanullah, Politician-Nawab of Dacca; …
Imran Khan 2018–2020 3 ✘ No Parliamentary Democracy Father: Ikramullah Khan Niazi, Civil engineer; Mother: Shaukat Khanum
Iskander Ali Mirza 1956–1957 2 ✘ No Parliamentary Democracy Father: Sahibzada Sayyid Muhammad Fateh Ali Mirza, Landowner; Mother: Dilshad Begum
Liaquat Ali Khan 1947–1950 4 ✘ No Parliamentary Democracy Wife : Ra’ana Liaquat Ali Khan, Politician-Governor
Miraj Khalid 1996–1996 1 ✘ No Parliamentary Democracy NA
Mohammad Ali Bogra 1953–1954 2 ✔ Yes Parliamentary Democracy Father: Nawabzada Altaf Ali Chowdhury, Politician; Grandfather : Syed Nawab Ali Chowdhury, Politican-Minister; Uncle:…
Mohammad Ayub Khan 1958–1968 11 ✘ No Military Dictatorship Father: Mir Dad Khan, Army Officer; Brother: Sardar Bahadur Khan, Politician-Minister; Son: Gohar Khan, Politician-Mi…
Mohammad Zia-ul-Haq 1977–1987 11 ✘ No Military Dictatorship Father : Muhammad Akbar Ali, Civil Servant; Son : Muhammad Ijaz-ul-Haq, Politician-Minister
Nawaz Sharif 1990–2016 9 ✘ No Parliamentary Democracy Father: Muhammed Sharif, Businessman; Mother: Begum Shamim Akhta; Brothers: Shehbaz Sharif, Politician-Prime Ministe…
Pervez Musharraf 1999–2007 9 ✘ No Parliamentary Democracy / Military Dictatorship Father : Syed Musharrafuddin, Accountant; Mother : Zarin
Shahid Khaqan Abbasi 2017–2017 1 ✔ Yes Parliamentary Democracy Father: Khaqan Abbasi, Politician-Minister; Sister: Sadia Abbasi, Politician-Member of Parliament
Yousaf Raza Gilani 2008–2012 5 ✔ Yes Military Dictatorship / Parliamentary Democracy Father: Makhdoom Syed Alamdar Hussain Gilani, Politician-Minister; Son: Abdul Qadir Gillani, Politician-Member of Par…
Zulfikar Ali Bhutto 1971–1976 6 ✔ Yes Military Dictatorship / Mixed Democratic Father: Shah Nawaz Bhutto, Politician-Member of Assembly; Mother: Khursheed Begum; Daughter: Benazir Bhutto, Politici…

Pakistan: Dynastic leaders include the Bhutto family (Zulfikar Ali Bhutto and his daughter Benazir Bhutto), Hwaja Nazim ad-Din (grandfather was Nawab of Dacca), Mohammad Ali Bogra (father and grandfather were politicians), Yousaf Raza Gilani (father was a minister), and Shahid Khaqan Abbasi (father was also a minister). Nawaz Sharif appears in multiple terms but is coded non-dynastic as his father was a businessman rather than a politician.


5.1.3 Bangladesh

bd_leaders <- df %>%
  filter(Country == "Bangladesh") %>%
  arrange(year) %>%
  group_by(nominal_leader) %>%
  summarise(
    `Years in power`   = paste0(min(year), "–", max(year)),
    `No. of years`     = n(),
    Dynastic           = if_else(max(dynasty) == 1, "✔ Yes", "✘ No"),
    `Regime type`      = paste(unique(system_category), collapse = " / "),
    `Dynastic lineage` = first(na.omit(dynasty_desc)),
    .groups = "drop"
  ) %>%
  mutate(
    `Dynastic lineage` = str_replace_all(`Dynastic lineage`, "\r\n", "; "),
    `Dynastic lineage` = str_trunc(`Dynastic lineage`, 120)
  ) %>%
  rename(Leader = nominal_leader)

bd_leaders %>%
  kbl(caption = "Table 7: All leaders of Bangladesh (1971–2020) — dynastic status") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = TRUE, font_size = 12) %>%
  column_spec(3, bold = TRUE) %>%
  column_spec(4, color = if_else(bd_leaders$Dynastic == "✔ Yes",
                                  "#bd0026", "grey40"), bold = TRUE) %>%
  row_spec(which(bd_leaders$Dynastic == "✔ Yes"), background = "#fff0f0")
Table 7: All leaders of Bangladesh (1971–2020) — dynastic status
Leader Years in power No. of years Dynastic Regime type Dynastic lineage
Abdus Sattar 1981–1981 1 ✘ No Civilian Dictatorship NA
Abu Sadat Mohammad Sayem 1975–1976 2 ✘ No Civilian Dictatorship / Military Dictatorship NA
Abul Fazal Mohammad Chowdhury 1982–1982 1 ✘ No Military Dictatorship NA
Hasina Wazed 2009–2015 7 ✔ Yes Civilian Dictatorship Father : Mujibur Rahman, Politician; Mother : Sheikh Fazilatunnesa Mujib; Son : Sajeeb Ahmed Wajed, Politician; Fathe…
Hossain Mohammad Ershad 1983–1989 7 ✔ Yes Military Dictatorship / Mixed Democratic Father : Mokbul Hossain, Politician-Minister; Mother : Mazida Khatun; Brother: GM Quader, Politician-Member of Parlia…
Iajuddin Ahmed 2006–2008 3 ✘ No Parliamentary Democracy / Military Dictatorship NA
Khaleda Zia 1991–2005 10 ✔ Yes Parliamentary Democracy Father : Iskandar Ali Majumder, Businessman; Mother : Taiyaba Majumder; Husband : Ziaur Rahman, Politician-President…
Mujibur Rahman 1972–1974 3 ✘ No Civilian Dictatorship Father : Sheikh Lutfur Rahman, Law Clerk; Mother : Sayera Khatun, housewife; Daughter : Sheikh Hasina, Politician-Pr…
Shahabuddin Ahmed 1990–1990 1 ✘ No Mixed Democratic Father: Talukdar Resat Ahmed Bhuiyan, Philanthropist;
Sheikh Hasina Wajed 1996–2020 10 ✔ Yes Parliamentary Democracy / Civilian Dictatorship Father : Mujibur Rahman, Politician; Mother : Sheikh Fazilatunnesa Mujib; Son : Sajeeb Ahmed Wajed, Politician; Fathe…
Tajuddin Ahmed 1971–1971 1 ✘ No Civilian Dictatorship Father : Maulavi Muhammad Yasin Khan ; Mother : Meherunnesa Khanam; Brother : Afsaruddin Ahmad, Politician-Member of…
Zia ur-Rahman 1977–1980 4 ✘ No Military Dictatorship Father : Mansur Rahman, Chemist; Mother : Jahanara Khatun; Wife : Khaleda Zia, Politician-Prime Minister; Son : Tariq…

Bangladesh (data from 1971 onwards): The country enters the dataset only at independence in 1971, so there is no pre-1971 data. Sheikh Mujibur Rahman (the founding leader, 1972–1974) is coded non-dynastic (pred_bin = 0) because he had no dynastic predecessor — he was the first of his family in national politics. His daughter Sheikh Hasina (multiple terms from 1996) is dynastic as Mujib’s successor. Khaleda Zia is dynastic as the widow of President Zia ur-Rahman. Hossain Mohammad Ershad (military ruler, 1983–1989) is dynastic through his father, who was a minister.


5.2 Country-Level Dynastic Rates

sa_country <- sa %>%
  group_by(Country) %>%
  summarise(
    Total    = n(),
    Dynastic = sum(dynasty == 1),
    Rate     = Dynastic / Total * 100
  ) %>%
  arrange(desc(Rate))

# Add global average line value
global_rate <- mean(df$dynasty == 1) * 100

ggplot(sa_country, aes(x = reorder(Country, Rate), y = Rate, fill = Rate)) +
  geom_col(colour = "white", width = 0.7) +
  geom_hline(yintercept = global_rate, linetype = "dashed",
             colour = "grey40", linewidth = 0.8) +
  annotate("text", x = 0.6, y = global_rate + 2,
           label = paste0("Global avg: ", round(global_rate, 1), "%"),
           hjust = 0, size = 3.5, colour = "grey30") +
  geom_text(aes(label = paste0(round(Rate, 1), "%")),
            hjust = -0.1, size = 4, fontface = "bold") +
  coord_flip() +
  scale_fill_gradient(low = "#ffffb2", high = "#bd0026", guide = "none") +
  scale_y_continuous(limits = c(0, 90), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Leadership Rate by South Asian Country (1946–2020)",
    subtitle = "Dashed line = global average",
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.y = element_blank())
Figure 11: Dynastic rate by South Asian country

Figure 11: Dynastic rate by South Asian country

sa_country %>%
  mutate(
    Rate        = paste0(round(Rate, 1), "%"),
    vs_global   = paste0(round(Dynastic/Total*100 - global_rate, 1), " pp")
  ) %>%
  rename(Country = Country, `Country-years` = Total,
         `Dynastic leaders` = Dynastic, `Dynastic rate` = Rate,
         `vs. Global avg` = vs_global) %>%
  kbl(caption = "Table 3: South Asian dynastic rates vs. global average") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"),
                full_width = FALSE) %>%
  column_spec(5, bold = TRUE, color = "#bd0026")
Table 3: South Asian dynastic rates vs. global average
Country Country-years Dynastic leaders Dynastic rate vs. Global avg
Bhutan 75 61 81.3% 55.1 pp
Nepal 75 59 78.7% 52.4 pp
Afghanistan 75 52 69.3% 43.1 pp
Maldives 56 37 66.1% 39.8 pp
Sri Lanka 73 44 60.3% 34 pp
Bangladesh 50 30 60% 33.7 pp
Pakistan 74 21 28.4% 2.1 pp
India 74 20 27% 0.7 pp

5.4 Who Do South Asian Leaders Inherit From?

kin_compare <- bind_rows(
  df %>% filter(dynasty == 1, !is.na(relation_label)) %>%
    count(relation_label) %>% mutate(pct = n/sum(n)*100, group = "Global"),
  sa %>% filter(dynasty == 1, !is.na(relation_label)) %>%
    count(relation_label) %>% mutate(pct = n/sum(n)*100, group = "South Asia")
)

ggplot(kin_compare, aes(x = reorder(relation_label, pct), y = pct,
                        fill = group)) +
  geom_col(position = "dodge", colour = "white", width = 0.7) +
  coord_flip() +
  scale_fill_manual(values = c("Global" = "#2166ac", "South Asia" = "#bd0026"),
                    name = NULL) +
  scale_y_continuous(labels = label_percent(scale = 1)) +
  labs(
    title    = "Kin-Type Distribution: South Asia vs. Global",
    subtitle = "Among dynastic leaders with identified kin type",
    x        = NULL,
    y        = "Share of dynastic leaders (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position  = "bottom",
        panel.grid.major.y = element_blank())
Figure 14: Kin-type distribution — South Asia vs global

Figure 14: Kin-type distribution — South Asia vs global

sa_kin_ctry <- sa %>%
  filter(dynasty == 1, !is.na(relation_label)) %>%
  count(Country, relation_label) %>%
  group_by(Country) %>%
  mutate(pct = n / sum(n) * 100) %>%
  ungroup()

ggplot(sa_kin_ctry, aes(x = Country, y = pct, fill = relation_label)) +
  geom_col(colour = "white", width = 0.8) +
  scale_fill_brewer(palette = "Paired", name = "Kin type") +
  scale_y_continuous(labels = label_percent(scale = 1)) +
  labs(
    title    = "Kin-Type Composition by South Asian Country",
    subtitle = "Among dynastic leaders only",
    x        = NULL,
    y        = "Share (%)"
  ) +
  theme_minimal(base_size = 12) +
  theme(axis.text.x  = element_text(angle = 30, hjust = 1),
        legend.position = "bottom")
Figure 15: Kin-type by South Asian country

Figure 15: Kin-type by South Asian country

5.5 Gender and Dynasticism in South Asia

sa_gender <- sa %>%
  mutate(gender_label = if_else(female_leader == 1, "Female", "Male")) %>%
  group_by(Country, gender_label) %>%
  summarise(rate = mean(dynasty == 1) * 100, n = n(), .groups = "drop") %>%
  filter(n >= 3)

ggplot(sa_gender, aes(x = Country, y = rate, fill = gender_label)) +
  geom_col(position = "dodge", colour = "white", width = 0.7) +
  scale_fill_manual(values = c("Female" = "#d95f02", "Male" = "#1f78b4"),
                    name = "Leader gender") +
  scale_y_continuous(limits = c(0, 100), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Rate by Gender and Country — South Asia",
    subtitle = "Cells with fewer than 3 observations suppressed",
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position    = "bottom",
        panel.grid.major.x = element_blank())
Figure 16: Dynastic rate by gender — South Asia

Figure 16: Dynastic rate by gender — South Asia

5.6 Regime Type and Dynasticism in South Asia

sa_regime <- sa %>%
  filter(!is.na(system_category)) %>%
  group_by(system_category) %>%
  summarise(
    Total    = n(),
    Dynastic = sum(dynasty == 1),
    Rate     = Dynastic / Total * 100
  ) %>%
  filter(Total >= 10) %>%
  arrange(desc(Rate))

ggplot(sa_regime, aes(x = reorder(system_category, Rate), y = Rate,
                      fill = Rate)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(Rate, 1), "%\n(n=", Total, ")")),
            hjust = -0.1, size = 3.8, fontface = "bold") +
  coord_flip() +
  scale_fill_gradient(low = "#fdcc8a", high = "#b30000", guide = "none") +
  scale_y_continuous(limits = c(0, 90), labels = label_percent(scale = 1)) +
  labs(
    title    = "Dynastic Rate by Regime Type — South Asia",
    subtitle = "Regime types with fewer than 10 country-years suppressed",
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(panel.grid.major.y = element_blank())
Figure 17: Dynastic rate by regime type — South Asia

Figure 17: Dynastic rate by regime type — South Asia

5.7 Country × Regime Breakdown

sa_ctry_reg <- sa %>%
  filter(!is.na(system_category)) %>%
  group_by(Country, system_category) %>%
  summarise(n = n(), rate = mean(dynasty == 1) * 100, .groups = "drop") %>%
  filter(n >= 5)

ggplot(sa_ctry_reg, aes(x = system_category, y = rate, fill = system_category)) +
  geom_col(colour = "white", width = 0.7) +
  geom_text(aes(label = paste0(round(rate, 0), "%")),
            vjust = -0.4, size = 3) +
  facet_wrap(~Country, ncol = 4, scales = "free_x") +
  scale_fill_brewer(palette = "Set1", guide = "none") +
  scale_y_continuous(limits = c(0, 110), labels = label_percent(scale = 1)) +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 10)) +
  labs(
    title    = "Dynastic Rate by Regime Type — Each South Asian Country",
    subtitle = "Cells with fewer than 5 country-years suppressed",
    x        = NULL,
    y        = "Dynastic rate (%)"
  ) +
  theme_minimal(base_size = 11) +
  theme(axis.text.x  = element_text(angle = 40, hjust = 1, size = 8),
        strip.text   = element_text(face = "bold"))
Figure 18: Dynastic rate by country and regime type — South Asia

Figure 18: Dynastic rate by country and regime type — South Asia


6 Summary of Key Findings

findings <- tibble(
  `#` = 1:8,
  Finding = c(
    paste0("Globally, ", round(mean(df$dynasty==1)*100,1),
           "% of country-years had a dynastic leader (1946–2020)."),
    "South Asia has the highest regional dynastic rate, far exceeding the global average.",
    "Royal dictatorships show the highest dynastic rates across regime types; parliamentary democracies the lowest among democratic systems.",
    "Paternal inheritance (father as predecessor) dominates globally — over two-thirds of dynastic leaders had a father in politics.",
    "Female leaders are substantially more likely to be dynastic than male leaders, consistent with the 'dynastic gateway' hypothesis.",
    "The gender gap in dynastic rates has narrowed over time but remains pronounced in South Asia.",
    "In South Asia, father-to-child transmission accounts for the majority of dynastic ties, with spousal ties (husband as predecessor) prominent in several countries.",
    "Dynastic rates in South Asia remain persistently high even under democratic regimes, distinguishing it from most other regions."
  )
)

findings %>%
  kbl(caption = "Table 4: Key descriptive findings") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = TRUE) %>%
  column_spec(1, bold = TRUE, width = "3em") %>%
  column_spec(2, width = "90%")
Table 4: Key descriptive findings
# Finding
1 Globally, 26.3% of country-years had a dynastic leader (1946–2020).
2 South Asia has the highest regional dynastic rate, far exceeding the global average.
3 Royal dictatorships show the highest dynastic rates across regime types; parliamentary democracies the lowest among democratic systems.
4 Paternal inheritance (father as predecessor) dominates globally — over two-thirds of dynastic leaders had a father in politics.
5 Female leaders are substantially more likely to be dynastic than male leaders, consistent with the ‘dynastic gateway’ hypothesis.
6 The gender gap in dynastic rates has narrowed over time but remains pronounced in South Asia.
7 In South Asia, father-to-child transmission accounts for the majority of dynastic ties, with spousal ties (husband as predecessor) prominent in several countries.
8 Dynastic rates in South Asia remain persistently high even under democratic regimes, distinguishing it from most other regions.

7 Data and Reproducibility

Dataset: Global Dynasties Dataset (GDD), sheet NEW Jan-Feb 2026 Variables derived from TED/FLN: Nooruddin et al. (2022), Harvard Dataverse doi:10.7910/DVN/UXFY88 Analysis software: R R version 4.3.0 (2023-04-21 ucrt); packages: tidyverse, readxl, kableExtra, RColorBrewer, scales Author: Arslan Niyazi · RPubs

sessionInfo()
## R version 4.3.0 (2023-04-21 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 11 x64 (build 26200)
## 
## Matrix products: default
## 
## 
## locale:
## [1] LC_COLLATE=English_India.utf8  LC_CTYPE=English_India.utf8   
## [3] LC_MONETARY=English_India.utf8 LC_NUMERIC=C                  
## [5] LC_TIME=English_India.utf8    
## 
## time zone: Asia/Calcutta
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] RColorBrewer_1.1-3 kableExtra_1.4.0   scales_1.4.0       lubridate_1.9.4   
##  [5] forcats_1.0.1      stringr_1.6.0      dplyr_1.1.4        purrr_1.0.4       
##  [9] readr_2.1.5        tidyr_1.3.1        tibble_3.2.1       ggplot2_4.0.1     
## [13] tidyverse_2.0.0    readxl_1.4.5      
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.9        utf8_1.2.3        generics_0.1.4    xml2_1.3.8       
##  [5] lattice_0.21-8    stringi_1.8.7     hms_1.1.3         digest_0.6.37    
##  [9] magrittr_2.0.3    evaluate_1.0.5    grid_4.3.0        timechange_0.3.0 
## [13] fastmap_1.2.0     Matrix_1.5-4      cellranger_1.1.0  jsonlite_2.0.0   
## [17] mgcv_1.8-42       fansi_1.0.4       viridisLite_0.4.2 jquerylib_0.1.4  
## [21] cli_3.6.1         rlang_1.1.1       splines_4.3.0     withr_3.0.2      
## [25] cachem_1.1.0      yaml_2.3.10       tools_4.3.0       tzdb_0.5.0       
## [29] vctrs_0.6.5       R6_2.6.1          lifecycle_1.0.5   pkgconfig_2.0.3  
## [33] pillar_1.9.0      bslib_0.9.0       gtable_0.3.6      glue_1.6.2       
## [37] systemfonts_1.2.2 xfun_0.52         tidyselect_1.2.1  rstudioapi_0.17.1
## [41] knitr_1.50        farver_2.1.2      nlme_3.1-162      htmltools_0.5.8.1
## [45] labeling_0.4.3    rmarkdown_2.30    svglite_2.1.3     compiler_4.3.0   
## [49] S7_0.2.0