knitr::opts_chunk$set(message = FALSE, warning = FALSE)
options(knitr.table.format = "html")   # needed for the <br>/<small> cell markup

library(dplyr)
library(tidyr)
library(purrr)
library(tibble)
library(ggplot2)
library(ggrepel)
library(knitr)
library(kableExtra)
library(survey)
library(forcats)
library(ggiraph)

# All cleaning and categorisation happens in R/00_wvs_clean_harmonise.R
wvs_all <- readRDS("D:/Populism and Democrary/World value survey/data/clean/wvs_harmonised.rds")

# Comparison set: India vs Western Europe & Offshoots and Middle East & North Africa.
# Adults only: W7 India deliberately interviewed 16-17 year olds (321 of 1,692).
focus_regions <- c("India", "Western Europe & Offshoots", "Middle East & North Africa")
# W3 (1994-99, India 1995) is dropped from this report
wvs <- wvs_all |>
  filter(is.na(age) | age >= 18, macro_region %in% focus_regions, wave != "W3") |>
  mutate(macro_region = droplevels(macro_region))

india_years   <- c(W4 = "2001", W5 = "2006", W6 = "2012", W7 = "2023")
wave_labels   <- c(W4 = "W4 (1999–2004)", W5 = "W5 (2004–09)", W6 = "W6 (2010–16)", W7 = "W7 (2017–23)")
common_states <- c("Bihar", "Delhi", "Haryana", "Maharashtra", "Punjab", "Uttar Pradesh", "West Bengal")
styled <- function(k) kable_styling(k, bootstrap_options = c("striped", "condensed"), full_width = FALSE)

# ---- Chart style ------------------------------------------------------------------
# Colour follows the group, in a fixed order (validated for colour-blind separation):
# Western Europe = blue, India = orange, MENA = green.
region_cols <- c(`Western Europe & Offshoots` = "#2a78d6", India = "#eb6834",
                 `Middle East & North Africa` = "#1baf7a")
year_cols   <- c(`2001` = "#86b6ef", `2006` = "#5598e7",
                 `2012` = "#256abf", `2023` = "#0d366b")        # one-hue ramp: later = darker
india_year_num <- c(W4 = 2001, W5 = 2006, W6 = 2012, W7 = 2023)
ink <- "#0b0b0b"; ink2 <- "#52514e"; grid_col <- "#e6e5e1"

theme_wvs <- function(base = 11) {
  theme_minimal(base_size = base) +
    theme(panel.grid.minor = element_blank(),
          panel.grid.major = element_line(colour = grid_col, linewidth = 0.3),
          axis.text = element_text(colour = ink2), axis.title = element_text(colour = ink2),
          plot.title = element_text(face = "bold", size = base + 1, colour = ink),
          plot.subtitle = element_text(colour = ink2),
          plot.caption = element_text(colour = ink2, hjust = 0, size = base - 2),
          legend.position = "top", legend.title = element_blank(), legend.justification = "left",
          strip.text = element_text(face = "bold", hjust = 0, colour = ink))
}
knitr::opts_chunk$set(dpi = 110)

# Every chart is rendered with ggiraph: hover a dot, bar or point to see its value
# ggiraph tooltips / ids cannot contain a straight apostrophe
safe_txt <- function(x) gsub("'", "’", x, fixed = TRUE)

show_plot <- function(p, w = 9, h = 5) {
  if (isTRUE(getOption("wvs.static"))) return(p)   # for checking layout as images
  girafe(ggobj = p, width_svg = w, height_svg = h,
         options = list(
           opts_tooltip(css = paste0("background:#ffffff;color:#0b0b0b;border:1px solid #d9d8d4;",
                                     "border-radius:4px;padding:6px 8px;font-size:12px;")),
           opts_hover(css = "stroke:#0b0b0b;stroke-width:1.5px;"),
           opts_hover_inv(css = "opacity:0.4;"),
           opts_sizing(rescale = TRUE),
           opts_toolbar(saveaspng = TRUE)))
}
agree4 <- function(x) case_when(x %in% 1:2 ~ 1, x %in% 3:4 ~ 0)
agree5 <- function(x) case_when(x %in% 1:2 ~ 1, x %in% 3:5 ~ 0)
high10 <- function(x) case_when(x %in% 7:10 ~ 1, x %in% 1:6 ~ 0)   # top 4 points of a 1-10 scale
# mean of 0/1 items when at least `k` are answered
row_share <- function(d, vars, k) {
  n_ok <- rowSums(!is.na(d[vars]))
  ifelse(n_ok >= k, rowMeans(d[vars], na.rm = TRUE), NA_real_)
}

# Institutions that USE power (the state) vs institutions that CHECK power
state_inst <- c("conf_civilservice_hi", "conf_police_hi", "conf_army_hi", "conf_govt_hi")
check_inst <- c("conf_parliament_hi", "conf_parties_hi", "conf_press_hi", "conf_courts_hi")

conc_levels <- c("Liberal (maximalist)", "Minimalist (electoral)", "Illiberal")

add_recodes <- function(d) {
  d |>
    mutate(
      # 1. trust in the two sides of the state (share of 4 institutions trusted, 0-1)
      state_trust = row_share(pick(everything()), state_inst, 3),
      check_trust = row_share(pick(everything()), check_inst, 3),
      trust_gap   = state_trust - check_trust,

      # 2. demand for governance (delivery) and for accountability: yes/no on each question (combined below)
      # governance = what people want government to deliver (ranked aims: picked 1st or 2nd)
      gov_growth    = case_when(pm_aims1 == 1 | pm_aims2 == 1 ~ 1, pm_aims1 %in% 1:4 ~ 0),
      gov_prices    = case_when(pm_goals1 == 3 | pm_goals2 == 3 ~ 1, pm_goals1 %in% 1:4 ~ 0),
      gov_economy   = case_when(pm_society1 == 1 | pm_society2 == 1 ~ 1, pm_society1 %in% 1:4 ~ 0),
      gov_crime     = case_when(pm_society1 == 4 | pm_society2 == 4 ~ 1, pm_society1 %in% 1:4 ~ 0),
      acc_say_govt  = case_when(pm_goals1 == 2 | pm_goals2 == 2 ~ 1, pm_goals1 %in% 1:4 ~ 0),
      acc_say_work  = case_when(pm_aims1 == 3 | pm_aims2 == 3 ~ 1, pm_aims1 %in% 1:4 ~ 0),
      acc_petition  = case_when(act_petition %in% 1:2 ~ 1, act_petition == 3 ~ 0),
      acc_demo      = case_when(act_demonstration %in% 1:2 ~ 1, act_demonstration == 3 ~ 0),
      acc_boycott   = case_when(act_boycott %in% 1:2 ~ 1, act_boycott == 3 ~ 0),

      # 3. conception of democracy: yes/no on each liberal and each authoritarian question
      lib_elections = case_when(dess_elections %in% 7:10 ~ 1, dess_elections %in% 1:6 ~ 0),
      lib_civil     = case_when(dess_civilrights %in% 7:10 ~ 1, dess_civilrights %in% 1:6 ~ 0),
      lib_women     = case_when(dess_women %in% 7:10 ~ 1, dess_women %in% 1:6 ~ 0),
      lib_demgood   = case_when(reg_democracy %in% 1:2 ~ 1, reg_democracy %in% 3:4 ~ 0),
      lib_demimp    = case_when(dem_importance %in% 7:10 ~ 1, dem_importance %in% 1:6 ~ 0),
      aut_army_ess  = case_when(dess_army %in% 7:10 ~ 1, dess_army %in% 1:6 ~ 0),
      aut_relig_ess = case_when(dess_religious %in% 7:10 ~ 1, dess_religious %in% 1:6 ~ 0),
      aut_army_rule = case_when(reg_army %in% 1:2 ~ 1, reg_army %in% 3:4 ~ 0),
      aut_strong    = case_when(reg_strongleader %in% 1:2 ~ 1, reg_strongleader %in% 3:4 ~ 0),
      aut_experts   = case_when(reg_experts %in% 1:2 ~ 1, reg_experts %in% 3:4 ~ 0),
      aut_obey      = case_when(dess_obey %in% 7:10 ~ 1, dess_obey %in% 1:6 ~ 0),
      aut_authority = case_when(fut_authority == 1 ~ 1, fut_authority %in% 2:3 ~ 0),
      # liberal score and authoritarian score = share of answered questions with a "yes" (0-1);
      # democracy score = liberal score minus authoritarian score (-1 to +1)
      aut_share = rowMeans(pick(aut_army_ess, aut_relig_ess, aut_army_rule, aut_strong,
                                aut_experts, aut_obey, aut_authority), na.rm = TRUE),
      lib_share = rowMeans(pick(lib_elections, lib_civil, lib_women, lib_demgood, lib_demimp), na.rm = TRUE),
      dem_score = lib_share - aut_share,
      # Classified if free elections was answered (asked from 2006) and at least 3 questions in
      # each set were answered.
      aut_n = rowSums(!is.na(pick(aut_army_ess, aut_relig_ess, aut_army_rule, aut_strong,
                                  aut_experts, aut_obey, aut_authority))),
      lib_n = rowSums(!is.na(pick(lib_elections, lib_civil, lib_women, lib_demgood, lib_demimp))),
      ess_ok = !is.na(dess_elections) & aut_n >= 3 & lib_n >= 3,
      # Types are bands of the democracy score:
      #   Illiberal: score <= 0, or free elections rated 1-6
      #   Minimalist: free elections 7-10 and score above 0 but below 0.5
      #   Liberal: free elections 7-10 and score 0.5 or more
      conception = case_when(
        !ess_ok                                                       ~ NA_character_,
        lib_elections == 0 | dem_score <= 0                           ~ "Illiberal",
        lib_elections == 1 & dem_score >= 0.5                         ~ "Liberal (maximalist)",
        lib_elections == 1 & dem_score > 0 & dem_score < 0.5          ~ "Minimalist (electoral)"),
      conception = factor(conception, conc_levels),
      con_liberal   = as.numeric(conception == "Liberal (maximalist)"),
      con_minimal   = as.numeric(conception == "Minimalist (electoral)"),
      con_illiberal = as.numeric(conception == "Illiberal"),

      # state support (standalone dimension, II.3): yes on each item
      ss_govresp_yes  = case_when(econ_govresp %in% 1:4 ~ 1, econ_govresp %in% 5:10 ~ 0),
      ss_income_yes   = case_when(econ_income %in% 1:4 ~ 1, econ_income %in% 5:10 ~ 0),
      ss_taxrich_yes  = high10(dess_taxrich),
      ss_unemp_yes    = high10(dess_unemp),
      ss_incomeeq_yes = high10(dess_incomeequal),
      ss_policy_n     = ss_govresp_yes + ss_income_yes,
      ss_essential_n  = ss_taxrich_yes + ss_unemp_yes + if_else(wave == "W5", 0, ss_incomeeq_yes)
    )
}
# State supporter = yes on at least 3 of the state-support items. Classified only where at least
# 4 of the 5 were asked in that country-wave (so from 2006) and the respondent answered all asked.
ss_items <- c("ss_govresp_yes", "ss_income_yes", "ss_taxrich_yes", "ss_unemp_yes", "ss_incomeeq_yes")

# Demand for governance / accountability = yes on at least half of the questions asked in that
# country-wave. Classified if the respondent answered all but at most one of those asked.
gov_items <- c("gov_growth", "gov_prices", "gov_economy", "gov_crime")
acc_items <- c("acc_say_govt", "acc_say_work", "acc_petition", "acc_demo", "acc_boycott")
demand <- function(d, items) {
  asked <- d |>
    group_by(wave, country_code) |>
    summarise(k = sum(map_lgl(pick(all_of(items)), ~ any(!is.na(.x)))), .groups = "drop")
  k   <- left_join(select(d, wave, country_code), asked, by = c("wave", "country_code"))$k
  ans <- rowSums(!is.na(d[items]))
  yes <- rowSums(d[items], na.rm = TRUE)
  ifelse(k >= 2 & ans >= k - 1, as.numeric(yes / ans >= 0.5), NA_real_)
}
gtype_of <- function(acc, gov) {
  factor(case_when(acc == 1 & gov == 0 ~ "Accountability-first",
                   acc == 1 & gov == 1 ~ "Want both",
                   acc == 0 & gov == 1 ~ "Governance-first",
                   acc == 0 & gov == 0 ~ "Neither"),
         c("Accountability-first", "Want both", "Governance-first", "Neither"))
}

# All measures of Part II, built the same way for any set of countries
build_measures <- function(d) {
  d <- add_recodes(d) |>
    group_by(wave, country_code) |>
    mutate(ss_asked = sum(map_lgl(pick(all_of(ss_items)), ~ any(!is.na(.x))))) |>
    ungroup() |>
    mutate(ss_answered = rowSums(!is.na(pick(all_of(ss_items)))),
           ss_yes      = rowSums(pick(all_of(ss_items)), na.rm = TRUE),
           state_support = case_when(ss_asked < 4 | ss_answered < ss_asked ~ NA_real_,
                                     ss_yes >= 3 ~ 1, TRUE ~ 0))
  d |>
    mutate(gov_demand = demand(d, gov_items),
           acc_demand = demand(d, acc_items),
           gtype = gtype_of(acc_demand, gov_demand),
           g_accfirst = as.numeric(gtype == "Accountability-first"),
           g_both     = as.numeric(gtype == "Want both"),
           g_govfirst = as.numeric(gtype == "Governance-first"),
           g_neither  = as.numeric(gtype == "Neither"),
           # robustness: accountability from stated preferences only (no demonstrations / boycotts)
           acc_demand_pref = demand(d, setdiff(acc_items, c("acc_demo", "acc_boycott"))),
           gtype_pref = as.character(gtype_of(acc_demand_pref, gov_demand)))
}
wvs <- build_measures(wvs)

# Part II: India vs the UN geoscheme regions. Countries surveyed in at least 3 of W4-W7;
# India on its own. (Internal column name wb_region is kept for the Part III helpers.)
wb_regions <- c("India", "South-eastern Asia", "Western Asia & Northern Africa", "Sub-Saharan Africa",
                "Latin America & Caribbean", "Eastern Europe", "Western Europe & Offshoots")
wvs_wb <- wvs_all |>
  filter(is.na(age) | age >= 18, wave != "W3", wb_3waves, un_region %in% wb_regions) |>
  mutate(wb_region = factor(as.character(un_region), wb_regions)) |>
  build_measures()
india <- wvs |> filter(is_india)
# ---- Weighted estimate with 95% CI ------------------------------------------
# SEs use the Kish effective sample size (weights only). The WVS does not release
# sampling clusters, so intervals are too narrow; do not over-read small gaps.
wstat <- function(x, w) {
  ok <- !is.na(x) & !is.na(w); x <- x[ok]; w <- w[ok]
  if (!length(x)) return(tibble(est = NA_real_, se = NA_real_, n = 0L))
  m    <- sum(w * x) / sum(w)
  neff <- sum(w)^2 / sum(w^2)
  tibble(est = m, se = sqrt(sum(w * (x - m)^2) / sum(w) / neff), n = length(x))
}
wdk <- function(x, w) if (all(is.na(x))) NA_real_ else 100 * sum(w[is.na(x)]) / sum(w)

# ---- India over time ------------------------------------------------------------
india_trend <- function(items, mult = 100, data = india) {
  imap_dfr(items, function(lab, v) {
    data |>
      group_by(wave) |>
      group_modify(~ bind_cols(wstat(.x[[v]], .x$weight), dk = wdk(.x[[v]], .x$weight))) |>
      ungroup() |>
      mutate(item = lab, var = v)
  }) |>
    mutate(lo = est - 1.96 * se, hi = est + 1.96 * se)
}

show_trend <- function(tr, mult = 100, caption = NULL, digits = 1) {
  f <- paste0("%.", digits, "f")
  tr |>
    mutate(cell = ifelse(is.na(est), "—",
                         sprintf(paste0(f, " [", f, ", ", f, "]<br><small>no answer %.0f%%</small>"),
                                 est * mult, lo * mult, hi * mult, dk)),
           year = india_years[wave]) |>
    select(Item = item, year, cell) |>
    pivot_wider(names_from = year, values_from = cell) |>
    (\(x) kable(x, escape = FALSE, caption = caption, align = c("l", rep("c", ncol(x) - 1))))() |>
    styled()
}

# ---- Country estimates and India vs regions -------------------------------------
# Region value = unweighted mean of country estimates (each country counts once)
country_est <- function(v, mult = 100, data = wvs) {
  data |>
    group_by(wave, country_code, country_name, macro_region) |>
    filter(any(!is.na(.data[[v]]))) |>
    summarise(est = weighted.mean(.data[[v]], weight, na.rm = TRUE) * mult, .groups = "drop")
}

region_compare <- function(v, mult = 100, caption = NULL, digits = 1) {
  ce  <- country_est(v, mult)
  f   <- paste0("%.", digits, "f")
  reg <- ce |>
    group_by(wave, macro_region) |>
    summarise(cell = sprintf(paste0(f, " <small>(%d)</small>"), mean(est), n()), .groups = "drop") |>
    mutate(macro_region = as.character(macro_region))
  rnk <- ce |>
    group_by(wave) |>
    mutate(r = rank(-est, ties.method = "min"), N = n()) |>
    filter(country_code == 356) |>
    transmute(wave, macro_region = "India's rank among countries shown (1 = highest)",
              cell = sprintf("%d of %d", r, N))
  bind_rows(reg, rnk) |>
    mutate(wave = wave_labels[wave]) |>
    pivot_wider(names_from = wave, values_from = cell, values_fill = "—") |>
    arrange(factor(macro_region, levels = c(focus_regions, "India's rank among countries shown (1 = highest)"))) |>
    rename(Region = macro_region) |>
    (\(x) kable(x, escape = FALSE, caption = caption, align = c("l", rep("c", ncol(x) - 1))))() |>
    styled() |>
    footnote(general = paste0("Cells: mean of country estimates (number of countries).",
                              if (grepl("trust|check", v)) " W4 has no courts item, so its checking-trust index uses 3 institutions." else ""),
             general_title = "")
}

# ---- Charts used across sections --------------------------------------------------
# India over time: one or more items, India only (orange), items told apart by line type + labels
plot_india_lines <- function(tr, title, ylab = "%", mult = 100, caption = NULL, w = 9, h = 4.6) {
  d <- tr |> filter(!is.na(est)) |> mutate(year = india_year_num[wave])
  p <- ggplot(d, aes(year, est * mult, group = item)) +
    geom_ribbon(aes(ymin = lo * mult, ymax = hi * mult), fill = region_cols["India"], alpha = 0.10) +
    geom_line(aes(linetype = item), colour = region_cols["India"], linewidth = 0.8) +
    geom_point_interactive(aes(tooltip = sprintf("%s<br>%d: %.1f (95%% CI %.1f to %.1f)", item, year,
                                                 est * mult, lo * mult, hi * mult),
                               data_id = paste(item, year)),
                           shape = 21, fill = region_cols["India"], colour = "white", size = 3, stroke = 0.8) +
    geom_text(data = d |> group_by(item) |> slice_max(year, n = 1),
              aes(label = item), hjust = -0.08, size = 3.1, colour = ink) +
    scale_x_continuous(breaks = unname(india_year_num), limits = c(2000, 2033)) +
    scale_linetype_manual(values = c("solid", "22", "42", "12")) +
    labs(title = title, x = NULL, y = ylab, caption = caption) +
    theme_wvs() + theme(legend.position = "none")
  show_plot(p, w, h)
}

# India vs the two regions over waves: region = mean of countries; India = its own estimate
plot_region_lines <- function(v, title, ylab = "%", mult = 100, caption = NULL, w = 9, h = 4.6) {
  d <- country_est(v, mult) |>
    group_by(wave, macro_region) |>
    summarise(est = mean(est), k = n(), .groups = "drop") |>
    mutate(wave_lab = factor(wave_labels[wave], wave_labels), macro_region = factor(macro_region, focus_regions))
  p <- ggplot(d, aes(wave_lab, est, colour = macro_region, group = macro_region)) +
    geom_line(linewidth = 0.8) +
    geom_point_interactive(aes(fill = macro_region, data_id = paste(macro_region, wave),
                               tooltip = sprintf("%s<br>%s: %.1f<br>%d %s", macro_region, wave_lab, est, k,
                                                 ifelse(k == 1, "country", "countries"))),
                           shape = 21, colour = "white", size = 3.2, stroke = 0.8) +
    geom_text(data = d |> group_by(macro_region) |> slice_max(as.integer(wave_lab), n = 1),
              aes(label = sprintf("%.0f", est)), hjust = -0.6, size = 3.1, colour = ink, show.legend = FALSE) +
    scale_colour_manual(values = region_cols, breaks = focus_regions) +
    scale_fill_manual(values = region_cols, guide = "none") +
    labs(title = title, x = NULL, y = ylab,
         caption = caption %||% "Regions: mean of country estimates. W. Europe in W4 is 4 countries.") +
    theme_wvs()
  show_plot(p, w, h)
}

# Every country as a dot, ranked within each wave (one panel per wave); India highlighted.
# Dashed lines = region averages (mean of countries).
plot_country_dots <- function(v, title, xlab, mult = 100, waves = NULL, caption = NULL, w = 11, h = NULL) {
  ce <- country_est(v, mult)
  if (!is.null(waves)) ce <- filter(ce, wave %in% waves)
  ce <- ce |>
    mutate(wave_lab = factor(wave_labels[wave], wave_labels),
           india = country_code == 356,
           name  = safe_txt(as.character(country_name)),
           key   = paste(name, wave, sep = "___")) |>
    arrange(wave, est) |>
    mutate(key = factor(key, unique(key)))
  rm <- ce |> filter(!india) |> group_by(wave_lab, macro_region) |> summarise(m = mean(est), .groups = "drop")
  n_max <- max(table(ce$wave))
  p <- ggplot(ce, aes(est, key)) +
    geom_vline(data = rm, aes(xintercept = m, colour = macro_region), linetype = "22", linewidth = 0.5) +
    geom_point_interactive(aes(colour = macro_region, size = india, data_id = paste(name, wave),
                               tooltip = sprintf("%s (%s)<br>%s: %.1f", name, macro_region, wave_lab, est))) +
    facet_wrap(~ wave_lab, nrow = 1, scales = "free_y") +
    scale_y_discrete(labels = function(x) sub("___.*", "", x)) +
    scale_colour_manual(values = region_cols, breaks = focus_regions) +
    scale_size_manual(values = c(`FALSE` = 2.2, `TRUE` = 3.8), guide = "none") +
    labs(title = title, x = xlab, y = NULL,
         caption = caption %||% "Countries ranked within each wave. Dashed lines: region averages (mean of countries).") +
    theme_wvs(10) + theme(panel.spacing = unit(1.4, "lines"), panel.grid.major.y = element_blank(),
                          axis.text.y = element_text(size = 7.5))
  show_plot(p, w, h %||% max(4.5, 1.8 + 0.18 * n_max))
}

# ---- Groups within India ------------------------------------------------------------
india_groups <- function(v, mult = 100, min_n = 50, caption = NULL, digits = 1,
                         groups = c(Sex = "sex_f", Age = "age_cat3", Education = "educ3",
                                    Party = "in_party_vote", Religion = "in_religion", Caste = "in_caste")) {
  keep_levels <- list(in_party_vote = c("BJP", "INC", "Left", "Other party"),
                      in_religion   = c("Hindu", "Muslim", "Christian", "Other (Sikh, Buddhist, Jain, ...)"))
  f <- paste0("%.", digits, "f")
  long <- imap_dfr(groups, function(g, gl) {
    d <- india |> filter(!is.na(.data[[g]]))
    if (g %in% names(keep_levels)) d <- d |> filter(.data[[g]] %in% keep_levels[[g]])
    d |>
      mutate(level = factor(as.character(.data[[g]]), levels = levels(droplevels(factor(.data[[g]]))))) |>
      group_by(wave, level) |>
      group_modify(~ wstat(.x[[v]], .x$weight)) |>
      ungroup() |>
      mutate(group = factor(gl, levels = names(groups)))
  }) |>
    filter(n > 0)
  wide <- long |>
    mutate(cell = ifelse(n < min_n, sprintf("<small>n=%d</small>", n),
                         sprintf(paste0(f, " <small>(%d)</small>"), est * mult, n)),
           year = factor(india_years[wave], levels = india_years)) |>
    arrange(group, level, year) |>
    select(group, level, year, cell) |>
    pivot_wider(names_from = year, values_from = cell, values_fill = "—")
  wide |>
    select(-group) |>
    rename(` ` = level) |>
    kable(escape = FALSE, caption = caption, align = c("l", rep("c", ncol(wide) - 2))) |>
    styled() |>
    pack_rows(index = table(droplevels(wide$group))) |>
    footnote(general = sprintf("Cells: estimate (unweighted n). Cells with n < %d are not estimated.", min_n),
             general_title = "")
}

# Hindu vs Muslim over time, one panel per item
relig_cols <- c(Hindu = "#4a3aa7", Muslim = "#eda100")
plot_relig_lines <- function(items, title, ylab = "%", ncol = 2, w = 10, h = 6.5, caption = NULL) {
  d <- imap_dfr(items, function(lab, v) {
    india |>
      filter(in_religion %in% names(relig_cols)) |>
      group_by(wave, in_religion) |>
      group_modify(~ wstat(.x[[v]], .x$weight)) |>
      ungroup() |>
      filter(n >= 50) |>
      mutate(item = lab)
  }) |>
    mutate(year = india_year_num[wave], item = factor(item, items),
           in_religion = factor(as.character(in_religion), names(relig_cols)))
  p <- ggplot(d, aes(year, est * 100, colour = in_religion, group = in_religion)) +
    geom_line(linewidth = 0.8) +
    geom_point_interactive(aes(fill = in_religion, data_id = safe_txt(paste(item, in_religion, year)),
                               tooltip = safe_txt(sprintf("%s<br>%s, %d: %.1f%%<br>n = %d", item, in_religion, year, est * 100, n))),
                           shape = 21, colour = "white", size = 2.8, stroke = 0.7) +
    geom_text_repel(data = d |> group_by(item, in_religion) |> slice_max(year, n = 1),
                    aes(label = in_religion), size = 2.9, colour = ink, show.legend = FALSE,
                    direction = "y", hjust = 0, nudge_x = 1.2, segment.colour = NA, seed = 1) +
    facet_wrap(~ item, ncol = ncol) +
    scale_colour_manual(values = relig_cols) +
    scale_fill_manual(values = relig_cols, guide = "none") +
    scale_x_continuous(breaks = unname(india_year_num), limits = c(2000, 2028)) +
    scale_y_continuous(limits = c(0, 100)) +
    labs(title = title, x = NULL, y = ylab,
         caption = caption %||% "India only. Groups with fewer than 50 respondents are not shown.") +
    theme_wvs(10) + theme(panel.spacing = unit(1.2, "lines"))
  show_plot(p, w, h)
}

# Several items in one wave: India and the two regions side by side (Cleveland dot plot)
plot_items_regions <- function(items, wave_sel, title, xlab = "%", w = 9.5, h = NULL, caption = NULL) {
  d <- imap_dfr(items, function(lab, v) {
    country_est(v) |>
      filter(wave == wave_sel) |>
      group_by(macro_region) |>
      summarise(est = mean(est), k = n(), .groups = "drop") |>
      mutate(item = lab)
  }) |>
    mutate(item = factor(item, rev(items)), macro_region = factor(macro_region, focus_regions))
  p <- ggplot(d, aes(est, item)) +
    geom_line(aes(group = item), colour = "#c3c2b7", linewidth = 0.9) +
    geom_point_interactive(aes(colour = macro_region, data_id = safe_txt(paste(item, macro_region)),
                               tooltip = safe_txt(sprintf("%s<br>%s: %.0f%%<br>%d %s", item, macro_region, est, k,
                                                 ifelse(k == 1, "country", "countries")))),
                           size = 3.6) +
    scale_colour_manual(values = region_cols, breaks = focus_regions) +
    scale_x_continuous(limits = c(0, 100)) +
    labs(title = title, x = xlab, y = NULL,
         caption = caption %||% paste0(wave_labels[wave_sel], ". Regions: mean of countries.")) +
    theme_wvs()
  show_plot(p, w, h %||% (1.6 + 0.55 * length(items)))
}

# long version of the group estimates, for charts
group_long <- function(v, groups = c(Sex = "sex_f", Age = "age_cat3", Education = "educ3",
                                     Party = "in_party_vote", Religion = "in_religion", Caste = "in_caste")) {
  keep_levels <- list(in_party_vote = c("BJP", "INC", "Left", "Other party"),
                      in_religion   = c("Hindu", "Muslim", "Christian", "Other (Sikh, Buddhist, Jain, ...)"))
  imap_dfr(groups, function(g, gl) {
    d <- india |> filter(!is.na(.data[[g]]))
    if (g %in% names(keep_levels)) d <- d |> filter(.data[[g]] %in% keep_levels[[g]])
    d |>
      mutate(level = factor(as.character(.data[[g]]), levels = levels(droplevels(factor(.data[[g]]))))) |>
      group_by(wave, level) |>
      group_modify(~ wstat(.x[[v]], .x$weight)) |>
      ungroup() |>
      mutate(group = factor(gl, levels = names(groups)))
  })
}

# ---- Question table at the start of each section ------------------------------------
fmt_conf <- "4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all"
fmt_reg  <- "4-point: 1 very good, 2 fairly good, 3 fairly bad, 4 very bad"
fmt_ess  <- "10-point: 1 not an essential characteristic of democracy ... 10 an essential characteristic"
fmt_agr4 <- "4-point: 1 strongly agree, 2 agree, 3 disagree, 4 strongly disagree"
fmt_agr5 <- "5-point: 1 agree strongly ... 3 neither ... 5 disagree strongly"
fmt_just <- "10-point: 1 never justifiable ... 10 always justifiable"
fmt_surv <- "4-point: 1 definitely should ... 4 definitely should not"
fmt_nb   <- "Yes/no: mentioned or not mentioned on a list"
codebook_vars <- readr::read_csv("D:/Populism and Democrary/World value survey/data/clean/wvs_codebook.csv",
                                 show_col_types = FALSE) |>
  select(var, W4, W5, W6, W7)
# rows: var (several joined with "+", e.g. "pm_aims1+pm_aims2"), question, format, mapped,
# and optionally `side` to group rows under sub-headings
q_table <- function(rows, caption = "Questions used in this section") {
  first <- sub("\\+.*", "", rows$var)
  in_india <- vapply(first, function(v) {
    yrs <- india |> filter(!is.na(.data[[v]])) |> distinct(wave) |> pull(wave) |> sort()
    if (length(yrs)) paste(india_years[yrs], collapse = ", ") else "—"
  }, character(1))
  wave_ids <- function(v, w) {
    ids <- strsplit(v, "+", fixed = TRUE)[[1]]
    x <- codebook_vars[[w]][match(ids, codebook_vars$var)]
    x <- x[!is.na(x) & x != ""]
    if (length(x)) paste(x, collapse = " & ") else "—"
  }
  tab <- rows |> mutate(india_yrs = unname(in_india))
  for (w in c("W4", "W5", "W6", "W7")) tab[[w]] <- vapply(rows$var, wave_ids, character(1), w = w)
  k <- tab |>
    select(Question = question, `Response format` = format, `How it is counted / what it maps to` = mapped,
           `Asked in India` = india_yrs, W4, W5, W6, W7) |>
    kable(caption = caption) |>
    styled() |>
    add_header_above(c(" " = 4, "Question number in the WVS file" = 4)) |>
    column_spec(1, width = "17em") |>
    column_spec(3, width = "15em")
  if ("side" %in% names(rows)) k <- pack_rows(k, index = table(factor(rows$side, unique(rows$side))))
  k
}

# India over time, one number per cell (no intervals)
simple_trend <- function(tr, caption, mult = 100, digits = 0, footnote_text = NULL) {
  k <- tr |>
    mutate(cell = ifelse(is.na(est), "—", formatC(est * mult, format = "f", digits = digits)),
           year = india_years[wave]) |>
    select(item, year, cell) |>
    pivot_wider(names_from = year, values_from = cell) |>
    rename(` ` = item) |>
    (\(x) kable(x, caption = caption, align = c("l", rep("c", ncol(x) - 1))))() |>
    styled()
  if (!is.null(footnote_text)) k <- footnote(k, general = footnote_text, general_title = "")
  k
}

# ---- Part III helpers: India vs the UN geoscheme regions --------------------------------
wb_country_est <- function(v, mult = 100, data = wvs_wb) {
  data |>
    group_by(wave, country_code, country_name, wb_region) |>
    filter(any(!is.na(.data[[v]]))) |>
    summarise(est = weighted.mean(.data[[v]], weight, na.rm = TRUE) * mult, .groups = "drop")
}
wb_rank_label <- "India's rank among all countries (1 = highest)"
# sort key: the row's value in the latest wave that has one
latest_value <- function(tab) {
  wcols <- intersect(unname(wave_labels), names(tab))
  apply(tab[wcols], 1, function(r) {
    v <- suppressWarnings(as.numeric(rev(r)))
    v <- v[!is.na(v)]
    if (length(v)) v[1] else -Inf
  })
}
# one or more measures: rows = India + regions (+ India's rank), columns = waves
wb_compare <- function(vars, caption, mult = 100, digits = 1, rank = TRUE) {
  f <- paste0("%.", digits, "f")
  # regions resting on a single country in a wave (named under the table)
  single <- imap_dfr(vars, function(lab, v) {
    wb_country_est(v, mult) |>
      filter(wb_region != "India") |>
      group_by(wave, wb_region) |>
      filter(n() == 1) |>
      ungroup() |>
      distinct(wave, wb_region, country_name)
  }) |>
    distinct() |>
    arrange(factor(wb_region, wb_regions), wave)
  single_note <- if (nrow(single)) {
    paste0("Single country: ",
           paste(sprintf("%s in %s = %s", single$wb_region, single$wave, single$country_name), collapse = "; "), ".")
  } else NULL
  tab <- imap_dfr(vars, function(lab, v) {
    ce  <- wb_country_est(v, mult)
    reg <- ce |>
      group_by(wave, wb_region) |>
      summarise(cell = sprintf(f, mean(est)), .groups = "drop") |>
      mutate(row = as.character(wb_region))
    out <- reg
    if (rank) {
      out <- bind_rows(reg, ce |>
        group_by(wave) |>
        mutate(r = rank(-est, ties.method = "min"), N = n()) |>
        filter(country_code == 356) |>
        transmute(wave, row = wb_rank_label, cell = sprintf("%d of %d", r, N)))
    }
    out |> mutate(measure = lab)
  }) |>
    mutate(col = wave_labels[wave], measure = factor(measure, vars),
           row = factor(row, c(wb_regions, wb_rank_label))) |>
    arrange(measure, row, wave) |>
    select(measure, row, col, cell) |>
    pivot_wider(names_from = col, values_from = cell, values_fill = "—")
  tab <- tab |>
    mutate(.key = latest_value(tab), .rank = row == wb_rank_label) |>
    arrange(measure, .rank, desc(.key)) |>
    select(-.key, -.rank)
  k <- tab |>
    select(-measure) |>
    rename(` ` = row) |>
    (\(x) kable(x, escape = FALSE, caption = caption, align = c("l", rep("c", ncol(x) - 1))))() |>
    styled() |>
    footnote(general = c("Regions: mean of the country estimates. India: its own estimate. — = not asked.", single_note),
             general_title = "")
  if (length(vars) > 1) k <- pack_rows(k, index = table(tab$measure))
  k
}
# small multiples: one panel per region, India (orange) vs the region (blue)
wb_lines <- function(v, title, ylab = "%", mult = 100, w = 10, h = 8, ylim = NULL) {
  ce  <- wb_country_est(v, mult)
  reg <- ce |> filter(wb_region != "India") |> group_by(wave, wb_region) |>
    summarise(est = mean(est), k = n(), .groups = "drop") |> mutate(series = "Region (mean of countries)")
  ind <- ce |> filter(wb_region == "India") |> select(wave, est)
  panel_ord <- reg |> group_by(wb_region) |> slice_max(as.integer(factor(wave, names(india_years))), n = 1) |>
    ungroup() |> arrange(desc(est)) |> pull(wb_region) |> as.character()
  d <- bind_rows(mutate(reg, wb_region = as.character(wb_region)),
                tidyr::crossing(ind, wb_region = unique(as.character(reg$wb_region))) |> mutate(k = 1L, series = "India")) |>
    mutate(wave_short = factor(wave, c("W4", "W5", "W6", "W7")), wb_region = factor(wb_region, panel_ord),
           tip = ifelse(series == "India", sprintf("India, %s: %.1f", india_years[wave], est),
                        sprintf("%s, %s: %.1f<br>%d %s", wb_region, wave_labels[wave], est, k, ifelse(k == 1, "country", "countries"))))
  p <- ggplot(d, aes(wave_short, est, colour = series, group = series)) +
    geom_line(linewidth = 0.8) +
    geom_point_interactive(aes(fill = series, tooltip = safe_txt(tip), data_id = safe_txt(paste(series, wb_region, wave))),
                           shape = 21, colour = "white", size = 2.6, stroke = 0.7) +
    facet_wrap(~ wb_region, ncol = 4, labeller = label_wrap_gen(24)) +
    scale_y_continuous(limits = ylim) +
    scale_colour_manual(values = c(India = "#eb6834", `Region (mean of countries)` = "#2a78d6")) +
    scale_fill_manual(values = c(India = "#eb6834", `Region (mean of countries)` = "#2a78d6"), guide = "none") +
    labs(title = title, x = NULL, y = ylab,
         caption = "India: W4 2001, W5 2006, W6 2012, W7 2023. Regions: mean of countries surveyed in that wave.") +
    theme_wvs(10) + theme(panel.spacing = unit(1.2, "lines"))
  show_plot(p, w, h)
}
# one measure by conception type: India and each region, one block per type, columns = waves.
# A country counts for a type only if it has at least min_n respondents of that type in that wave.
wb_by_type <- function(v, caption, min_n = 30, digits = 1) {
  f <- paste0("%.", digits, "f")
  ce <- wvs_wb |>
    filter(!is.na(conception), !is.na(.data[[v]])) |>
    group_by(wave, conception, country_code, country_name, wb_region) |>
    filter(n() >= min_n) |>
    summarise(est = 100 * weighted.mean(.data[[v]], weight), .groups = "drop")
  single <- ce |> filter(wb_region != "India") |> group_by(wave, conception, wb_region) |>
    filter(n() == 1) |> ungroup() |> distinct(wave, wb_region, country_name) |>
    arrange(factor(wb_region, wb_regions), wave)
  tab <- ce |>
    group_by(wave, conception, wb_region) |>
    summarise(cell = sprintf(f, mean(est)), .groups = "drop") |>
    mutate(col = wave_labels[wave], wb_region = factor(wb_region, wb_regions)) |>
    arrange(conception, wb_region, wave) |>
    select(conception, wb_region, col, cell) |>
    pivot_wider(names_from = col, values_from = cell, values_fill = "—") |>
    complete(conception, wb_region, fill = list()) |>
    mutate(across(-c(conception, wb_region), ~ ifelse(is.na(.x), "—", .x)))
  tab <- tab |>
    mutate(.key = latest_value(tab)) |>
    arrange(conception, desc(.key)) |>
    select(-.key)
  notes <- c(sprintf("Cells: %% among respondents of that type. Regions: mean of country estimates; a country counts only with at least %d respondents of that type. — = too few respondents or not asked.", min_n),
             if (nrow(single)) paste0("Single country: ", paste(sprintf("%s in %s = %s", single$wb_region, single$wave,
                                                                     single$country_name) |> unique(), collapse = "; "), ".") else NULL)
  tab |>
    select(-conception) |>
    rename(` ` = wb_region) |>
    (\(x) kable(x, caption = caption, align = c("l", rep("c", ncol(x) - 1))))() |>
    styled() |>
    pack_rows(index = table(tab$conception)) |>
    footnote(general = notes, general_title = "")
}

# one chart for one measure: India and every region as rows, one dot per wave (light = 2001, dark = 2023)
wb_dots <- function(v, title, xlab = "%", mult = 100, w = 9.5, h = 5.6,
                    caption = "Regions: mean of countries in each wave.
India surveyed in 2001 (W4), 2006 (W5), 2012 (W6) and 2023 (W7).") {
  ce <- wb_country_est(v, mult)
  d <- ce |>
    group_by(wave, wb_region) |>
    summarise(est = mean(est), k = n(), cn = paste(sort(country_name), collapse = ", "), .groups = "drop") |>
    mutate(wb_region = factor(wb_region, rev(wb_regions)),
           wave_lab = factor(wave, names(india_years)),
           tip = ifelse(wb_region == "India", sprintf("India %s: %.0f%%", india_years[wave], est),
                        sprintf("%s, %s: %.0f%%<br>%s", wb_region, wave_labels[wave], est, cn)))
  wave_cols <- setNames(unname(year_cols), levels(d$wave_lab))
  ord <- d |> group_by(wb_region) |> slice_max(as.integer(wave_lab), n = 1) |> ungroup() |>
    arrange(est) |> pull(wb_region) |> as.character()
  d <- d |> mutate(wb_region = factor(as.character(wb_region), ord))
  p <- ggplot(d, aes(est, wb_region)) +
    geom_line(aes(group = wb_region), colour = "#c3c2b7", linewidth = 0.9) +
    geom_point_interactive(aes(fill = wave_lab, tooltip = safe_txt(tip), data_id = safe_txt(paste(wb_region, wave))),
                           shape = 21, colour = "white", size = 3.6, stroke = 0.8) +
    scale_fill_manual(values = wave_cols) +
    scale_x_continuous(limits = c(0, 100), breaks = seq(0, 100, 25)) +
    scale_y_discrete(labels = function(x) ifelse(x == "India", "INDIA", x)) +
    labs(title = title, x = xlab, y = NULL,
         caption = caption) +
    theme_wvs() +
    theme(axis.text.y = element_text(colour = ink, size = 10), panel.grid.major.y = element_blank())
  show_plot(p, w, h)
}

# stacked shares for the latest wave: India and each region
wb_stack <- function(vars, cols, title, wave_sel = "W7") {
  d <- imap_dfr(vars, function(lab, v) {
    wb_country_est(v) |> filter(wave == wave_sel) |> group_by(wb_region) |>
      summarise(pct = mean(est), k = n(), .groups = "drop") |> mutate(type = lab)
  }) |>
    mutate(type = factor(type, vars))
  ord <- d |> filter(type == vars[[1]]) |> arrange(pct) |> pull(wb_region) |> as.character()
  d <- d |> mutate(wb_region = factor(as.character(wb_region), ord))
  ggplot(d, aes(pct, wb_region, fill = type)) +
    geom_col(width = 0.62, colour = "white", linewidth = 0.6, position = position_stack(reverse = TRUE)) +
    geom_text(aes(label = ifelse(pct >= 6, sprintf("%.0f", pct), ""), group = type,
                  colour = cols[as.character(type)] %in% c("#86b6ef", "#5598e7", "#8a8983")),
              position = position_stack(vjust = 0.5, reverse = TRUE), size = 3, show.legend = FALSE) +
    scale_fill_manual(values = cols) +
    scale_colour_manual(values = c(`TRUE` = ink, `FALSE` = "white"), guide = "none") +
    scale_x_continuous(expand = expansion(mult = c(0, 0.03)), labels = function(x) paste0(x, "%")) +
    labs(title = title, x = NULL, y = NULL,
         caption = paste0(wave_labels[wave_sel], " (India 2023). % of those classified. Regions: mean of countries.")) +
    theme_wvs() + theme(panel.grid.major.y = element_blank())
}

# change within India by group: one dot per survey year, joined by a line
plot_dumbbell <- function(v, waves, title, xlab, min_n = 50, mult = 100, w = 9, h = 7.5) {
  gl <- group_long(v) |>
    filter(wave %in% waves, n >= min_n) |>
    mutate(year = factor(india_years[wave], india_years[waves]), level = fct_rev(level))
  p <- ggplot(gl, aes(est * mult, level)) +
    geom_line(aes(group = level), colour = "#c3c2b7", linewidth = 0.9) +
    geom_point_interactive(aes(fill = year, data_id = paste(group, level, year),
                               tooltip = sprintf("%s: %s<br>%s: %.1f%% (n = %d)", group, level, year, est * mult, n)),
                           shape = 21, colour = "white", size = 3.6, stroke = 0.8) +
    facet_grid(group ~ ., scales = "free_y", space = "free_y", switch = "y") +
    scale_fill_manual(values = year_cols) +
    labs(title = title, x = xlab, y = NULL, caption = sprintf("Groups with fewer than %d respondents are not shown.", min_n)) +
    theme_wvs() +
    theme(strip.placement = "outside", strip.text.y.left = element_text(angle = 0, face = "bold"))
  show_plot(p, w, h)
}

What this report does

The report asks whether Indians separate governance (a state that gets things done) from democratic accountability (checks on that state), what they think democracy is, and whether they want the state to support the less well-off, and how India compares with every world region.

Part What it covers
I. Data, samples and coverage Which countries and waves, the world regions, how region averages are formed, who was interviewed, and how India was sampled
II. India and the world regions II.1 Governance vs accountability (four groups); II.2 Liberal, minimalist or illiberal conceptions of democracy (democracy score); II.3 State support
III. Question by question One table per question (trust in 8 institutions, and every question behind Part II): India and each region, wave by wave
IV. PALS 2022 A second survey (Public Attitudes towards the Liberal Script, 2021–22): countries and samples, and its questions on the same three themes, India vs the same regions
V. India across both surveys Questions asked in both WVS 2023 and PALS 2022, grouped by the report’s measures: India’s rank among the 15 countries in both surveys, and India’s nearest countries
VI. How far is India from the others? The same bridge questions on their full scales: India’s rank, z-score and effect size in each survey, how well each pair agrees across countries, and nearest countries by statistical distance

Comparison set: India against 6 world regions (UN geoscheme, adjusted), keeping countries surveyed in at least 3 of the 4 waves from W4 (India 2001) to W7 (India 2023). The earlier 1995 wave is not used.

Two caveats on India’s samples, set out in Part I:

  1. The 2001, 2006 and 2012 samples carry no weights: they are male-skewed and, in 2006 and 2012, mostly rural.
  2. The 2023 sample is a quota sample in 8 states.

Part I. Data, samples and coverage

knitr::opts_chunk$set(message = FALSE, warning = FALSE)
options(knitr.table.format = "html")

library(dplyr)
library(tidyr)
library(purrr)
library(tibble)
library(knitr)
library(kableExtra)

# All cleaning and categorisation happens in R/00_wvs_clean_harmonise.R
wvs_all <- readRDS("D:/Populism and Democrary/World value survey/data/clean/wvs_harmonised.rds")

# Comparison set: India vs the world regions (UN geoscheme, adjusted; see R/00_wvs_clean_harmonise.R),
# countries surveyed in at least 3 of W4-W7. W3 (1994-99, India 1995) is dropped from this report.
# (The column is called macro_region here so the tables below work unchanged.)
focus_regions <- c("India", "South-eastern Asia", "Western Asia & Northern Africa", "Sub-Saharan Africa",
                   "Latin America & Caribbean", "Eastern Europe", "Western Europe & Offshoots")
wvs <- wvs_all |>
  filter(wave != "W3", wb_3waves, un_region %in% focus_regions) |>
  mutate(macro_region = factor(as.character(un_region), focus_regions))

wave_labels <- c(W4 = "W4", W5 = "W5", W6 = "W6", W7 = "W7")
india_years <- c(W4 = "2001", W5 = "2006", W6 = "2012", W7 = "2023")
regions     <- levels(wvs$macro_region)

wmean <- function(x, w) {
  ok <- !is.na(x) & !is.na(w)
  if (!any(ok)) NA_real_ else sum(x[ok] * w[ok]) / sum(w[ok])
}
styled <- function(k) kable_styling(k, bootstrap_options = c("striped", "condensed"), full_width = FALSE)

The comparison set is India against 6 world regions, built from the countries surveyed in at least 3 of the 4 waves (2001–2023). Every table in this part is restricted to these countries.

Before testing any claim, this part sets out:

  • what each wave covers
  • how countries are grouped into regions, and how region averages are weighted
  • the demographic make-up of each region and of India
  • how the India samples were drawn and weighted

Parts II and III use the same data (data/clean/wvs_harmonised.rds), the same countries and the same regions.

The four waves

per_country <- wvs |> count(wave, country_code)

wvs |>
  group_by(wave) |>
  summarise(Fieldwork   = paste(min(survey_year, na.rm = TRUE), max(survey_year, na.rm = TRUE), sep = "–"),
            Countries   = n_distinct(country_code),
            Respondents = n(),
            `Under 18`  = sum(age < 18, na.rm = TRUE),
            .groups = "drop") |>
  left_join(per_country |> group_by(wave) |>
              summarise(`Median N per country` = median(n), `Smallest` = min(n), `Largest` = max(n)),
            by = "wave") |>
  mutate(`India survey` = india_years[wave]) |>
  rename(Wave = wave) |>
  kable(caption = "Coverage of the four waves (India and the 6 regions)", format.args = list(big.mark = ",")) |>
  styled() |>
  footnote(general = "W3 (1994–99) is not used. 'Under 18': respondents aged 15–17 (a few countries sample from 15 or 16); Parts II and III use adults only.",
           general_title = "")
Coverage of the four waves (India and the 6 regions)
Wave Fieldwork Countries Respondents Under 18 Median N per country Smallest Largest India survey
W4 1999–2004 23 37,052 490 1,251 1,000 3,401 2001
W5 2004–2008 31 49,503 518 1,421 954 3,051 2006
W6 2011–2014 32 51,402 91 1,493 841 4,078 2012
W7 2017–2023 33 51,972 387 1,289 1,000 4,018 2023
W3 (1994–99) is not used. ‘Under 18’: respondents aged 15–17 (a few countries sample from 15 or 16); Parts II and III use adults only.

Countries and regions

Region scheme

The regions follow the UN geoscheme (the UN Statistics Division’s M49 standard), the same grouping PALS uses for its “your region” questions. The WVS itself has no world-region variable for all waves. The UN sub-regions are used with these adjustments:

  • India is its own group.
  • Western Asia and Northern Africa are combined (Turkey, Iraq, Jordan, Cyprus, Egypt, Morocco).
  • Western Europe & Offshoots: Western, Northern and Southern Europe together with the United States, Canada, Australia and New Zealand.
  • Kyrgyzstan (Central Asia) and Serbia are placed in Eastern Europe.

Only countries surveyed in at least 3 of the 4 waves are kept, so that each region is made of roughly the same countries over time.

How to read this: even with the 3-wave rule, the countries in a region change somewhat from wave to wave, so a change in a region’s average can reflect which countries were surveyed, not only changing attitudes. Three cases need care:

  • Thin regions: Sub-Saharan Africa has three countries, and only one (South Africa) in W5. Where a region has a single country in a wave, it is named under each table in Parts II and III.
  • W4 (2001) gaps: Western Europe & Offshoots is thin in W4 (Australia and New Zealand were not surveyed, and most European countries were covered that round by the separate European Values Study).
  • Israel (surveyed in W4 only) is removed from the data altogether.
cl <- wvs |>
  count(macro_region, country_name, wave) |>
  mutate(n = format(n, big.mark = ",")) |>
  pivot_wider(names_from = wave, values_from = n, values_fill = "—") |>
  select(macro_region, Country = country_name, any_of(c("W4", "W5", "W6", "W7"))) |>
  arrange(macro_region, Country)

cl |>
  select(-macro_region) |>
  kable(caption = "Every country in the comparison, with respondents per wave (all ages)", align = c("l", rep("r", 4))) |>
  styled() |>
  pack_rows(index = table(cl$macro_region)) |>
  scroll_box(height = "500px")
Every country in the comparison, with respondents per wave (all ages)
Country W4 W5 W6 W7
India
India 2,002 2,001 4,078 1,692
South-eastern Asia
Indonesia 1,000 2,015 — 3,200
Malaysia — 1,201 1,300 1,313
Philippines 1,200 — 1,200 1,200
Singapore 1,512 — 1,972 2,012
Thailand — 1,534 1,200 1,500
Vietnam 1,000 1,495 — 1,200
Western Asia & Northern Africa
Cyprus — 1,050 1,000 1,000
Egypt 3,000 3,051 1,523 1,200
Iraq 2,325 2,701 1,200 1,200
Jordan 1,223 1,200 1,200 1,203
Morocco 1,251 1,200 1,200 1,200
Turkey 3,401 1,346 1,605 2,415
Sub-Saharan Africa
Nigeria 2,022 — 1,759 1,237
South Africa 3,000 2,988 3,531 —
Zimbabwe 1,002 — 1,500 1,215
Latin America & Caribbean
Argentina 1,280 1,002 1,030 1,003
Brazil — 1,500 1,486 1,762
Chile 1,200 1,000 1,000 1,000
Colombia — 3,025 1,512 1,520
Mexico 1,535 1,560 2,000 1,741
Peru 1,501 1,500 1,210 1,400
Uruguay — 1,000 1,000 1,000
Eastern Europe
Kyrgyzstan 1,043 — 1,500 1,200
Romania — 1,776 1,503 1,257
Russia — 2,033 2,500 1,810
Serbia 1,200 1,220 — 1,046
Ukraine — 1,000 1,500 1,289
Western Europe & Offshoots
Australia — 1,421 1,477 1,813
Canada 1,931 2,164 — 4,018
Germany — 2,064 2,046 1,528
Netherlands — 1,050 1,902 2,145
New Zealand — 954 841 1,057
Spain 1,209 1,200 1,189 —
Sweden 1,015 1,003 1,206 —
United States 1,200 1,249 2,232 2,596

How region averages are weighted

Within a country: every estimate uses that country’s own survey weight (W4 V245, W5 V259, W6 V258, W7 W_WEIGHT). These weights correct each national sample towards the national population, mainly on sex, age and education.

Across countries (a region): the region value is the simple mean of its country estimates. Every country counts once, whatever its population or sample size:

  • The United States counts the same as New Zealand in Western Europe & Offshoots.
  • Egypt counts the same as Cyprus in Western Asia & Northern Africa.

This equals pooling respondents with the WVS equilibrated weight (S018), which rescales every country to N = 1,000.

India vs a region: India is always shown on its own. The comparison is therefore India vs the average country in each region, not India vs the region’s population. That is why every comparison table also gives India’s rank among the countries in the comparison (India plus every country surveyed in that wave). The rank does not depend on averaging.

Why not weight by population? Population-weighting would let the United States dominate Western Europe & Offshoots, Indonesia South-eastern Asia and Brazil Latin America. The WVS samples national publics, so the unit of comparison is the country.

The table below checks how much region averages move when only the countries surveyed in W5, W6 and W7 are kept (a balanced panel). The example indicator is “a strong leader who does not bother with parliament and elections is good”.

country_est <- wvs |>
  filter(is.na(age) | age >= 18) |>
  group_by(wave, country_code, macro_region) |>
  filter(any(!is.na(reg_strongleader_good))) |>
  summarise(est = 100 * wmean(reg_strongleader_good, weight), .groups = "drop")

panel_ids <- wvs |>
  distinct(country_code, wave) |>
  group_by(country_code) |>
  filter(all(c("W5", "W6", "W7") %in% wave)) |>
  distinct(country_code) |>
  pull()

bind_rows(
  country_est |> mutate(sample = "All countries"),
  country_est |> filter(country_code %in% panel_ids) |> mutate(sample = "Balanced panel (W5–W7)")
) |>
  filter(wave %in% c("W5", "W6", "W7")) |>
  group_by(macro_region, sample, wave) |>
  summarise(cell = sprintf("%.1f <small>(%d)</small>", mean(est), n()), .groups = "drop") |>
  pivot_wider(names_from = wave, values_from = cell, values_fill = "—") |>
  rename(Region = macro_region, Sample = sample) |>
  kable(escape = FALSE, caption = "Strong leader is good (%): all countries vs balanced panel") |>
  styled() |>
  collapse_rows(columns = 1, valign = "top") |>
  footnote(general = "Cells: mean of country estimates (number of countries). Adults only.",
           general_title = "")
Strong leader is good (%): all countries vs balanced panel
Region Sample W5 W6 W7
India All countries 63.9 (1) 64.9 (1) 69.1 (1)
Balanced panel (W5–W7) 63.9 (1) 64.9 (1) 69.1 (1)
South-eastern Asia All countries 40.8 (4) 47.9 (4) 70.2 (6)
Balanced panel (W5–W7) 65.2 (2) 40.6 (2) 80.5 (2)
Western Asia & Northern Africa All countries 30.5 (6) 47.7 (6) 53.3 (6)
Balanced panel (W5–W7) 30.5 (6) 47.7 (6) 53.3 (6)
Sub-Saharan Africa All countries 43.1 (1) 39.6 (3) 49.7 (2)
Latin America & Caribbean All countries 44.7 (7) 52.9 (7) 61.1 (7)
Balanced panel (W5–W7) 44.7 (7) 52.9 (7) 61.1 (7)
Eastern Europe All countries 57.8 (4) 76.0 (4) 65.8 (5)
Balanced panel (W5–W7) 66.5 (3) 73.9 (3) 69.0 (3)
Western Europe & Offshoots All countries 25.8 (8) 30.5 (7) 28.8 (6)
Balanced panel (W5–W7) 26.8 (5) 27.9 (5) 29.7 (5)
Cells: mean of country estimates (number of countries). Adults only.

Demographic profile by region

Each cell is the mean of country-level weighted values, so it describes the average country in the region, as in Parts II and III. All respondents are included.

Profile by wave

demo_country <- wvs |>
  group_by(wave, country_code, macro_region) |>
  summarise(
    `Female %`          = 100 * wmean(sex == 2, weight),
    `Mean age`          = wmean(age, weight),
    `18–34 %`           = 100 * wmean(age_cat3 == "18-34", weight),
    `55+ %`             = 100 * wmean(age_cat3 == "55+", weight),
    `Lower education %` = 100 * wmean(educ3 == "Lower", weight),
    `Higher education %`= 100 * wmean(educ3 == "Higher", weight),
    `Upper / upper-middle class %` = 100 * wmean(class3 == "Upper / upper middle", weight),
    `Lower class %`     = 100 * wmean(class3 == "Lower", weight),
    .groups = "drop")

for (w in c("W4", "W5", "W6", "W7")) {
  cat("\n\n#### ", w, " (India ", india_years[w], ")\n\n", sep = "")
  tab <- demo_country |>
    filter(wave == w) |>
    group_by(macro_region) |>
    summarise(Countries = n(), across(`Female %`:`Lower class %`, ~ mean(.x, na.rm = TRUE))) |>
    rename(Region = macro_region)
  print(tab |>
          kable(digits = 1, caption = paste("Demographic profile by region,", w)) |>
          styled() |>
          row_spec(which(tab$Region == "India"), bold = TRUE, background = "#FFF3D6"))
}

W4 (India 2001)

Demographic profile by region, W4
Region Countries Female % Mean age 18–34 % 55+ % Lower education % Higher education % Upper / upper-middle class % Lower class %
India 1 43.2 40.2 41.5 18.1 52.2 23.4 20.0 19.8
South-eastern Asia 4 50.4 39.8 37.6 20.5 28.8 20.2 18.1 11.5
Western Asia & Northern Africa 5 50.3 36.9 50.1 13.1 54.5 15.2 19.2 18.0
Sub-Saharan Africa 3 49.6 33.9 60.2 9.1 30.6 9.3 17.2 38.7
Latin America & Caribbean 4 52.4 39.4 43.9 19.1 30.8 17.1 15.3 15.4
Eastern Europe 2 53.8 41.7 39.4 23.4 8.6 37.5 25.7 7.5
Western Europe & Offshoots 4 50.7 44.4 33.2 28.9 23.4 31.0 30.6 4.9

W5 (India 2006)

Demographic profile by region, W5
Region Countries Female % Mean age 18–34 % 55+ % Lower education % Higher education % Upper / upper-middle class % Lower class %
India 1 43.1 41.4 36.7 19.9 50.4 22.0 20.1 27.2
South-eastern Asia 4 49.4 38.5 43.7 16.2 29.6 17.0 19.9 6.6
Western Asia & Northern Africa 6 50.9 38.5 45.9 16.1 45.1 19.3 21.5 10.2
Sub-Saharan Africa 1 50.0 37.3 47.9 18.5 28.6 5.0 17.6 43.9
Latin America & Caribbean 7 52.1 41.4 41.2 23.7 37.7 17.3 9.7 16.3
Eastern Europe 4 53.3 44.9 31.5 30.8 15.8 28.0 16.4 14.6
Western Europe & Offshoots 8 52.2 47.4 25.7 35.4 18.7 30.4 27.2 4.4

W6 (India 2012)

Demographic profile by region, W6
Region Countries Female % Mean age 18–34 % 55+ % Lower education % Higher education % Upper / upper-middle class % Lower class %
India 1 43.8 41.2 38.1 19.0 46.1 13.3 18.8 14.2
South-eastern Asia 4 50.8 43.3 30.7 24.1 32.7 20.4 19.9 9.7
Western Asia & Northern Africa 6 49.6 39.1 45.3 17.7 39.8 20.9 19.4 14.2
Sub-Saharan Africa 3 51.6 35.1 59.1 13.3 18.1 9.4 13.7 41.0
Latin America & Caribbean 7 51.4 41.7 40.3 24.1 28.1 18.8 13.0 15.6
Eastern Europe 4 53.2 44.1 35.2 28.8 5.6 31.7 23.2 8.8
Western Europe & Offshoots 7 52.0 48.7 25.3 38.6 17.4 34.2 27.6 4.1

W7 (India 2023)

Demographic profile by region, W7
Region Countries Female % Mean age 18–34 % 55+ % Lower education % Higher education % Upper / upper-middle class % Lower class %
India 1 48.9 37.8 46.2 18.8 33.9 27.2 25.7 10.1
South-eastern Asia 6 51.6 41.9 36.7 22.8 51.1 24.1 20.3 12.2
Western Asia & Northern Africa 6 50.2 40.3 40.2 20.6 44.5 25.1 17.5 11.8
Sub-Saharan Africa 2 50.0 35.4 58.8 11.8 47.8 8.6 15.6 37.6
Latin America & Caribbean 7 51.7 42.8 37.2 26.9 37.4 20.8 12.3 17.2
Eastern Europe 5 54.0 45.2 32.9 32.0 14.5 46.6 26.0 8.3
Western Europe & Offshoots 6 52.9 50.6 23.4 44.1 10.4 41.8 37.2 4.5

Religion by region

rel_country <- wvs |>
  filter(!is.na(religion_major)) |>
  group_by(wave, country_code, macro_region, religion_major) |>
  summarise(w = sum(weight), .groups = "drop_last") |>
  mutate(pct = 100 * w / sum(w)) |>
  ungroup() |>
  complete(nesting(wave, country_code, macro_region), religion_major, fill = list(pct = 0))

rel_country |>
  filter(wave == "W7") |>
  group_by(macro_region, religion_major) |>
  summarise(pct = mean(pct), .groups = "drop") |>
  pivot_wider(names_from = religion_major, values_from = pct) |>
  rename(Region = macro_region) |>
  kable(digits = 1, caption = "Religious denomination by region, W7 (% of respondents, mean of countries)") |>
  styled() |>
  scroll_box(width = "100%")
Religious denomination by region, W7 (% of respondents, mean of countries)
Region None Catholic Protestant Orthodox Jewish Muslim Hindu Buddhist Other Christian Other
India 0.0 1.2 0.0 0.0 0.0 9.5 83.0 1.4 0.0 4.8
South-eastern Asia 16.8 15.4 5.0 0.3 0.0 29.0 2.0 26.1 3.5 1.9
Western Asia & Northern Africa 0.7 0.1 0.0 12.0 0.0 86.4 0.0 0.0 0.8 0.0
Sub-Saharan Africa 6.0 39.7 19.9 2.6 1.8 29.5 0.0 0.0 0.3 0.3
Latin America & Caribbean 28.8 54.5 10.0 0.1 0.1 0.0 0.2 0.1 2.5 3.7
Eastern Europe 10.0 3.7 2.3 63.1 0.1 19.7 0.1 0.1 0.5 0.4
Western Europe & Offshoots 48.2 21.4 13.1 1.1 0.8 2.0 0.9 1.0 9.3 2.2

The India samples

How each sample was drawn

tribble(
  ~` `,              ~`2001 (W4)`, ~`2006 (W5)`, ~`2012 (W6)`, ~`2023 (W7)`,
  "Fieldwork",       "2001", "Dec 2006 – Jan 2007", "2012", "5 Jun – 2 Jul 2023",
  "Organisation",    "Not documented in docs/", "Lokniti Network (PI Sandeep Shastri)", "Sandeep Shastri (Jain University CERRSE); W7 report credits Lokniti-CSDS", "Lokniti-CSDS",
  "Design",          "Not documented in docs/", "Multistage stratified random sample from electoral rolls: 40 Lok Sabha seats → 80 assembly seats → 160 polling stations → voters", "Four-stage stratified random sample from electoral rolls (Lok Sabha seats → assembly seats → polling stations → voters). Plan: 320 seats, 19,444 target", "8 states chosen purposively; 15 assembly seats (PPS); 60 polling stations; random-walk households; age and gender quotas",
  "States",          "18", "18 of 28 (97% of population)", "17", "8: Bihar, Delhi, Haryana, Maharashtra, Punjab, Telangana, UP, West Bengal",
  "Achieved N",      "2,002", "2,001", "4,078", "1,692 (1,371 aged 18+)",
  "Age range",       "18+", "18+", "18+", "16+ (321 aged 16–17 by design)",
  "Languages",       "—", "10", "—", "5",
  "Comparable as a national trend point?", "Yes", "Yes", "Yes", "Partly: 8 states, quota, 60 clusters"
) |>
  kable(caption = "India sample designs (from docs/ in each wave folder)") |>
  styled() |>
  column_spec(1, bold = TRUE) |>
  footnote(general = "Sources: W5 study description; W6 India sample design proposal; W7 India technical report (Lokniti-CSDS, July 2023). No India methodology document for W4 is in the project folder.",
           general_title = "")
India sample designs (from docs/ in each wave folder)
2001 (W4) 2006 (W5) 2012 (W6) 2023 (W7)
Fieldwork 2001 Dec 2006 – Jan 2007 2012 5 Jun – 2 Jul 2023
Organisation Not documented in docs/ Lokniti Network (PI Sandeep Shastri) Sandeep Shastri (Jain University CERRSE); W7 report credits Lokniti-CSDS Lokniti-CSDS
Design Not documented in docs/ Multistage stratified random sample from electoral rolls: 40 Lok Sabha seats → 80 assembly seats → 160 polling stations → voters Four-stage stratified random sample from electoral rolls (Lok Sabha seats → assembly seats → polling stations → voters). Plan: 320 seats, 19,444 target 8 states chosen purposively; 15 assembly seats (PPS); 60 polling stations; random-walk households; age and gender quotas
States 18 18 of 28 (97% of population) 17 8: Bihar, Delhi, Haryana, Maharashtra, Punjab, Telangana, UP, West Bengal
Achieved N 2,002 2,001 4,078 1,692 (1,371 aged 18+)
Age range 18+ 18+ 18+ 16+ (321 aged 16–17 by design)
Languages — 10 — 5
Comparable as a national trend point? Yes Yes Yes Partly: 8 states, quota, 60 clusters
Sources: W5 study description; W6 India sample design proposal; W7 India technical report (Lokniti-CSDS, July 2023). No India methodology document for W4 is in the project folder.

Where the interviews were done

wvs |>
  filter(is_india) |>
  count(in_state = tidyr::replace_na(in_state, "Not recorded"), wave) |>
  mutate(n = as.character(n)) |>
  pivot_wider(names_from = wave, values_from = n, values_fill = "—") |>
  rename(State = in_state, `2001` = W4, `2006` = W5, `2012` = W6, `2023` = W7) |>
  arrange(State) |>
  kable(caption = "India: interviews per state", align = c("l", rep("r", 4))) |>
  styled() |>
  footnote(general = "Bihar, Delhi, Haryana, Maharashtra, Punjab, Uttar Pradesh and West Bengal are the only states in all four waves.",
           general_title = "")
India: interviews per state
State 2001 2006 2012 2023
Andhra Pradesh 152 143 307 —
Assam 61 52 — —
Bihar 147 197 332 241
Chhattisgarh 46 44 99 —
Delhi 43 38 94 229
Gujarat 96 102 259 —
Haryana 50 44 122 115
Jharkhand 65 52 160 —
Karnataka 112 103 239 —
Kerala 71 59 192 —
Madhya Pradesh 115 104 256 —
Maharashtra 194 201 280 202
Not recorded — 1 — —
Odisha 68 75 355 —
Punjab 49 53 151 122
Rajasthan 102 112 278 —
Tamil Nadu 129 165 — —
Telangana — — — 210
Unlabelled (W6 code 356019) — — 64 —
Uttar Pradesh 328 301 596 360
West Bengal 174 155 294 213
Bihar, Delhi, Haryana, Maharashtra, Punjab, Uttar Pradesh and West Bengal are the only states in all four waves.

Who was interviewed: unweighted and weighted

Comparing the raw sample with the weighted one shows what the weight corrects.

india <- wvs |>
  filter(is_india) |>
  mutate(age_band = ifelse(!is.na(age) & age < 18, "16–17", as.character(age_cat3)))

profile_vars <- c(Sex = "sex_f", Age = "age_band", Education = "educ3", Religion = "in_religion",
                  Caste = "in_caste", `Subjective class` = "class3", `Town size` = "urban_size",
                  `Party would vote for` = "in_party_vote")

prof <- imap_dfr(profile_vars, function(v, lab) {
  india |>
    filter(!is.na(.data[[v]])) |>
    group_by(wave, level = as.character(.data[[v]])) |>
    summarise(n = n(), w = sum(weight), .groups = "drop_last") |>
    mutate(Unweighted = 100 * n / sum(n), Weighted = 100 * w / sum(w)) |>
    ungroup() |>
    mutate(group = lab)
})

prof_wide <- prof |>
  mutate(cell = sprintf("%.1f / %.1f", Unweighted, Weighted),
         group = factor(group, names(profile_vars)),
         year = india_years[wave]) |>
  select(group, level, year, cell) |>
  pivot_wider(names_from = year, values_from = cell, values_fill = "—") |>
  arrange(group) |>
  select(group, level, any_of(unname(india_years)))

prof_wide |>
  select(-group) |>
  rename(` ` = level) |>
  kable(caption = "India sample profile: unweighted % / weighted %", align = c("l", rep("c", 4))) |>
  styled() |>
  pack_rows(index = table(prof_wide$group)) |>
  footnote(general = "Percentages are among respondents with a valid answer on that variable. Caste was not asked in 2006.",
           general_title = "")
India sample profile: unweighted % / weighted %
2001 2006 2012 2023
Sex
Female 43.2 / 43.2 43.1 / 43.1 43.8 / 43.8 43.4 / 48.9
Male 56.8 / 56.8 56.9 / 56.9 56.2 / 56.2 56.6 / 51.1
Age
18-34 41.5 / 41.5 36.7 / 36.7 38.1 / 38.1 32.6 / 43.6
35-54 40.4 / 40.4 43.5 / 43.5 42.9 / 42.9 33.0 / 33.0
55+ 18.1 / 18.1 19.9 / 19.9 19.0 / 19.0 15.5 / 17.7
16–17 — — — 19.0 / 5.7
Education
Higher 23.4 / 23.4 22.0 / 22.0 13.3 / 13.3 23.1 / 27.2
Lower 52.2 / 52.2 50.4 / 50.4 46.1 / 46.1 32.2 / 33.9
Middle 24.4 / 24.4 27.6 / 27.6 40.6 / 40.6 44.6 / 38.9
Religion
Christian 3.0 / 3.0 3.2 / 3.2 1.6 / 1.6 1.0 / 1.2
Hindu 73.3 / 73.3 77.8 / 77.8 81.9 / 81.9 82.0 / 83.0
Muslim 11.0 / 11.0 8.3 / 8.3 11.0 / 11.0 10.4 / 9.5
None 6.7 / 6.7 3.0 / 3.0 0.4 / 0.4 —
Other (Sikh, Buddhist, Jain, …) 6.1 / 6.1 7.6 / 7.6 5.1 / 5.1 6.6 / 6.2
Caste
General / other 43.5 / 43.5 — 32.6 / 32.6 31.6 / 32.0
OBC 38.5 / 38.5 — 40.6 / 40.6 44.3 / 44.0
SC 12.9 / 12.9 — 20.1 / 20.1 19.1 / 19.2
ST 5.2 / 5.2 — 6.7 / 6.7 5.0 / 4.8
Subjective class
Lower 19.8 / 19.8 27.2 / 27.2 14.2 / 14.2 10.1 / 10.1
Lower middle / working 60.2 / 60.2 52.7 / 52.7 67.0 / 67.0 63.9 / 64.1
Upper / upper middle 20.0 / 20.0 20.1 / 20.1 18.8 / 18.8 26.0 / 25.7
Town size
100k+ 11.2 / 11.2 7.9 / 7.9 3.1 / 3.1 5.9 / 5.7
20k-100k 19.0 / 19.0 2.8 / 2.8 6.4 / 6.4 10.5 / 9.9
Under 20k 69.8 / 69.8 89.3 / 89.3 90.6 / 90.6 83.6 / 84.3
Party would vote for
BJP 28.1 / 28.1 21.5 / 21.5 28.2 / 28.2 46.0 / 45.1
INC 33.1 / 33.1 32.4 / 32.4 28.0 / 28.0 21.4 / 21.9
Left 7.1 / 7.1 8.9 / 8.9 5.5 / 5.5 3.9 / 4.0
No party / blank / other 0.3 / 0.3 8.2 / 8.2 2.2 / 2.2 9.2 / 9.3
Other party 31.5 / 31.5 28.9 / 28.9 36.2 / 36.2 19.6 / 19.7
Percentages are among respondents with a valid answer on that variable. Caste was not asked in 2006.

The India weights

india |>
  group_by(wave) |>
  summarise(N = n(),
            Min = min(weight), Max = max(weight), Mean = mean(weight),
            `CV of weights` = sd(weight) / mean(weight),
            `Design effect (1 + CV²)` = 1 + (sd(weight) / mean(weight))^2,
            `Effective N` = sum(weight)^2 / sum(weight^2),
            .groups = "drop") |>
  mutate(wave = india_years[wave]) |>
  rename(`Survey year` = wave) |>
  kable(digits = 2, caption = "India: survey weights", format.args = list(big.mark = ",")) |>
  styled() |>
  footnote(general = "Design effect here is from weighting only. Clustering (e.g. 60 polling stations in 2023) adds more, which the public data do not let us estimate.",
           general_title = "")
India: survey weights
Survey year N Min Max Mean CV of weights Design effect (1 + CV²) Effective N
2001 2,002 1.00 1.00 1 0.00 1.00 2,002.0
2006 2,001 1.00 1.00 1 0.00 1.00 2,001.0
2012 4,078 1.00 1.00 1 0.00 1.00 4,078.0
2023 1,692 0.19 1.94 1 0.44 1.19 1,419.8
Design effect here is from weighting only. Clustering (e.g. 60 polling stations in 2023) adds more, which the public data do not let us estimate.

The 2001, 2006 and 2012 India samples are unweighted. Every weight is 1, so “weighted” India estimates for those years are raw sample percentages. The profile table above shows what that means:

  • Men are 55–57% of respondents.
  • In 2006 and 2012 about 90% live in places under 20,000 people. The 2011 Census puts India’s urban share at about 31%.
  • Only 13% have higher education in 2012, against 22–23% in 2001 and 2006.

Only 2023 is weighted: 16–17 year olds are brought down from 19% to 6% of the sample, and the sex split is balanced. For India trends this means:

  1. Changes between 2012 and 2023 partly reflect a change from unweighted to weighted samples.
  2. Group breakdowns (by sex, education or town size) are more trustworthy than India totals, because they do not depend on the sample’s overall mix.
  3. A useful robustness check is to reweight 2001–2012 to Census sex × education × urban margins. This needs Census tables that are not in the project yet.

Part II. India and the world regions

This part compares India with every world region on three measures: governance vs accountability, the conception of democracy, and state support. The regions, countries and samples are described in Part I.

  • Regions: six world regions based on the UN geoscheme (UN Statistics Division, M49 standard): South-eastern Asia; Western Asia & Northern Africa; Sub-Saharan Africa; Latin America & Caribbean; Eastern Europe; and Western Europe & Offshoots (Western, Northern and Southern Europe with the United States, Canada, Australia and New Zealand). India is shown on its own. Part I gives the details.
  • Countries: only those surveyed in at least 3 of the 4 waves (2001–2023), so that each region is made of roughly the same countries over time.
  • Region averages: the mean of the country estimates, so each country counts once whatever its sample size. India is its own estimate, and is also ranked among all the countries shown. Where a region has a single country in a wave, it is named under the table.

II.1 Governance, accountability, or both?

The question. The passage argued that Indians want both democracy and a strong, effective government. Do people want a state that delivers, a state that answers to them, or both?

What is calculated. Two yes/no measures for each respondent:

  • Demand for governance (delivery), four questions: economic growth, fighting rising prices, a stable economy and the fight against crime, each counted as yes when picked among the top two aims.
  • Demand for accountability, including willingness to act, five questions: more say in government decisions and more say at work and in communities (picked among the top two aims); has signed or would sign a petition, attend a peaceful demonstration, join a boycott.

A respondent demands governance (or accountability) if they say yes to at least half of the questions they answered (2 of 4; 3 of 5). Crossing the two gives four groups: Accountability-first, Want both, Governance-first and Neither, shown as a % of those classified. Three questions on each side come from “pick your top two” lists, so choosing more delivery aims leaves less room for accountability aims.

fmt_rank <- function(list) paste0("Ranked: 1st and 2nd choice from 4 options (", list, ")")
aims_list    <- "economic growth / strong defence / more say at work and in communities / beautiful cities"
goals_list   <- "maintaining order / more say in government / fighting rising prices / free speech"
society_list <- "stable economy / more humane society / ideas over money / fight against crime"
fmt_act <- "3-point: 1 have done, 2 might do, 3 would never do"
gov_side <- "Governance (delivery): yes on at least half of 4"
acc_side <- "Accountability, including willingness to act: yes on at least half of 5"
q_table(tribble(
  ~side, ~var, ~question, ~format, ~mapped,
  gov_side, "pm_aims1+pm_aims2", "Aims of the country: a high level of economic growth", fmt_rank(aims_list), "Picked 1st or 2nd = yes",
  gov_side, "pm_goals1+pm_goals2", "Most important for the country: fighting rising prices", fmt_rank(goals_list), "Picked 1st or 2nd = yes",
  gov_side, "pm_society1+pm_society2", "Most important: a stable economy", fmt_rank(society_list), "Picked 1st or 2nd = yes",
  gov_side, "pm_society1+pm_society2", "Most important: the fight against crime", fmt_rank(society_list), "Picked 1st or 2nd = yes",
  acc_side, "pm_goals1+pm_goals2", "Most important for the country: giving people more say in important government decisions", fmt_rank(goals_list), "Picked 1st or 2nd = yes",
  acc_side, "pm_aims1+pm_aims2", "Aims of the country: people have more say about how things are done at their jobs and in their communities", fmt_rank(aims_list), "Picked 1st or 2nd = yes",
  acc_side, "act_petition", "Signing a petition", fmt_act, "1–2 (done or might do) = yes",
  acc_side, "act_demonstration", "Attending peaceful demonstrations", fmt_act, "1–2 (done or might do) = yes",
  acc_side, "act_boycott", "Joining in boycotts", fmt_act, "1–2 (done or might do) = yes"),
  caption = "Questions used in this section")
Questions used in this section
Question number in the WVS file
Question Response format How it is counted / what it maps to Asked in India W4 W5 W6 W7
Governance (delivery): yes on at least half of 4
Aims of the country: a high level of economic growth Ranked: 1st and 2nd choice from 4 options (economic growth / strong defence / more say at work and in communities / beautiful cities) Picked 1st or 2nd = yes 2001, 2006, 2012, 2023 V120 & V121 V69 & V70 V60 & V61 Q152 & Q153
Most important for the country: fighting rising prices Ranked: 1st and 2nd choice from 4 options (maintaining order / more say in government / fighting rising prices / free speech) Picked 1st or 2nd = yes 2001, 2006, 2012, 2023 V122 & V123 V71 & V72 V62 & V63 Q154 & Q155
Most important: a stable economy Ranked: 1st and 2nd choice from 4 options (stable economy / more humane society / ideas over money / fight against crime) Picked 1st or 2nd = yes 2001, 2006, 2012, 2023 V124 & V125 V73 & V74 V64 & V65 Q156 & Q157
Most important: the fight against crime Ranked: 1st and 2nd choice from 4 options (stable economy / more humane society / ideas over money / fight against crime) Picked 1st or 2nd = yes 2001, 2006, 2012, 2023 V124 & V125 V73 & V74 V64 & V65 Q156 & Q157
Accountability, including willingness to act: yes on at least half of 5
Most important for the country: giving people more say in important government decisions Ranked: 1st and 2nd choice from 4 options (maintaining order / more say in government / fighting rising prices / free speech) Picked 1st or 2nd = yes 2001, 2006, 2012, 2023 V122 & V123 V71 & V72 V62 & V63 Q154 & Q155
Aims of the country: people have more say about how things are done at their jobs and in their communities Ranked: 1st and 2nd choice from 4 options (economic growth / strong defence / more say at work and in communities / beautiful cities) Picked 1st or 2nd = yes 2001, 2006, 2012, 2023 V120 & V121 V69 & V70 V60 & V61 Q152 & Q153
Signing a petition 3-point: 1 have done, 2 might do, 3 would never do 1–2 (done or might do) = yes 2001, 2006, 2012, 2023 V134 V96 V85 Q209
Attending peaceful demonstrations 3-point: 1 have done, 2 might do, 3 would never do 1–2 (done or might do) = yes 2001, 2006, 2012, 2023 V136 V98 V87 Q211
Joining in boycotts 3-point: 1 have done, 2 might do, 3 would never do 1–2 (done or might do) = yes 2001, 2006, 2012, 2023 V135 V97 V86 Q210
wb_compare(c(g_accfirst = "Accountability-first", g_both = "Want both",
             g_govfirst = "Governance-first", g_neither = "Neither"),
           caption = "Governance and accountability groups (% of those classified): India vs the regions")
Governance and accountability groups (% of those classified): India vs the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Accountability-first
Western Europe & Offshoots 17.2 14.3 11.9 20.5
India 4.8 6.1 6.0 14.3
Latin America & Caribbean 7.8 7.4 7.5 9.7
Western Asia & Northern Africa 6.6 5.1 3.6 7.3
South-eastern Asia 4.4 2.7 6.4 6.6
Eastern Europe 3.1 2.1 1.8 5.9
Sub-Saharan Africa 3.4 3.8 5.2 5.3
India’s rank among all countries (1 = highest) 13 of 22 18 of 29 17 of 32 8 of 33
Want both
Western Europe & Offshoots 62.2 63.0 61.8 59.3
Latin America & Caribbean 40.4 44.6 43.4 42.2
India 43.0 43.7 35.0 32.7
Eastern Europe 41.1 35.2 23.9 31.5
Sub-Saharan Africa 43.1 41.9 38.0 28.2
South-eastern Asia 25.9 20.0 30.4 26.9
Western Asia & Northern Africa 24.0 25.8 20.7 26.0
India’s rank among all countries (1 = highest) 8 of 22 15 of 29 18 of 32 19 of 33
Governance-first
Sub-Saharan Africa 50.5 49.7 52.0 60.2
Western Asia & Northern Africa 62.9 64.2 70.4 59.8
South-eastern Asia 64.9 70.7 56.3 57.1
Eastern Europe 53.8 59.9 70.5 55.9
India 47.3 44.7 53.4 44.0
Latin America & Caribbean 47.6 43.9 45.0 42.8
Western Europe & Offshoots 18.9 21.0 24.6 18.2
India’s rank among all countries (1 = highest) 15 of 22 15 of 29 15 of 32 19 of 33
Neither
South-eastern Asia 4.8 6.5 6.9 9.4
India 4.9 5.5 5.6 9.0
Western Asia & Northern Africa 6.5 4.9 5.3 6.9
Eastern Europe 2.0 2.7 3.8 6.7
Sub-Saharan Africa 3.0 4.5 4.8 6.2
Latin America & Caribbean 4.2 4.1 4.1 5.4
Western Europe & Offshoots 1.7 1.7 1.6 2.0
India’s rank among all countries (1 = highest) 8 of 22 6 of 29 8 of 32 8 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.
wb_stack(c(g_accfirst = "Accountability-first", g_both = "Want both",
           g_govfirst = "Governance-first", g_neither = "Neither"),
         cols = c(`Accountability-first` = "#256abf", `Want both` = "#5598e7",
                  `Governance-first` = "#e34948", Neither = "#8a8983"),
         title = "Governance and accountability groups, latest wave")

Each chart: India and every region as rows, one dot per wave (light = W4, dark = W7).

gt_plots <- imap(c(g_accfirst = "Accountability-first", g_both = "Want both", g_govfirst = "Governance-first"),
                 ~ wb_dots(.y, title = .x, xlab = "% of those classified"))
if (isTRUE(getOption("wvs.static"))) invisible(lapply(gt_plots, print)) else htmltools::tagList(gt_plots)

II.2 Liberal, minimalist or illiberal?

The question. A minimalist conception of democracy asks for free elections and rejects authoritarian alternatives, but does not insist on civil rights, equal rights and a firm commitment to democracy. A maximalist liberal conception insists on all of these. An illiberal conception either does not treat free elections as essential, or accepts authoritarian ways of governing. Which do people hold?

What is calculated. The liberal score is the share of 5 liberal questions answered yes; the authoritarian score is the share of 7 authoritarian questions answered yes; the democracy score is the first minus the second (−1 to +1), following Kirsch and Welzel’s liberal-minus-authoritarian notions of democracy. The three types are bands of this score:

  • Liberal (maximalist): 0.5 or more, with free elections rated 7–10.
  • Minimalist (electoral): above 0 and below 0.5, with free elections rated 7–10.
  • Illiberal: 0 or less, or free elections rated 1–6.

Classified from 2006 (the essentials-of-democracy questions start in W5), if free elections and at least three questions in each set were answered. “People obey their rulers” was asked only from 2012, so in 2006 the authoritarian score uses six questions.

lib_side  <- "Liberal questions: liberal score = share answered yes"
aut_side  <- "Authoritarian questions: authoritarian score = share answered yes"
show_side <- "Shown for each type (not used in the rules)"
q_table(tribble(
  ~side, ~var, ~question, ~format, ~mapped,
  lib_side, "dess_elections", "Essential to democracy: people choose their leaders in free elections", fmt_ess, "7–10 = yes. 1–6 = Illiberal whatever the score",
  lib_side, "dess_civilrights", "Essential to democracy: civil rights protect people from state oppression", fmt_ess, "7–10 = yes",
  lib_side, "dess_women", "Essential to democracy: women have the same rights as men", fmt_ess, "7–10 = yes",
  lib_side, "reg_democracy", "Having a democratic political system", fmt_reg, "1–2 (good) = yes",
  lib_side, "dem_importance", "How important is it for you to live in a country that is governed democratically?", "10-point: 1 not at all important ... 10 absolutely important", "7–10 = yes",
  aut_side, "dess_army", "Essential to democracy: the army takes over when government is incompetent", fmt_ess, "7–10 = yes",
  aut_side, "dess_religious", "Essential to democracy: religious authorities ultimately interpret the laws", fmt_ess, "7–10 = yes",
  aut_side, "dess_obey", "Essential to democracy: people obey their rulers", fmt_ess, "7–10 = yes (from 2012)",
  aut_side, "reg_army", "Having the army rule", fmt_reg, "1–2 (good) = yes",
  aut_side, "reg_strongleader", "Having a strong leader who does not have to bother with parliament and elections", fmt_reg, "1–2 (good) = yes",
  aut_side, "reg_experts", "Having experts, not government, make decisions according to what they think is best for the country", fmt_reg, "1–2 (good) = yes",
  aut_side, "fut_authority", "In the near future: greater respect for authority", "3-point: 1 good thing, 2 don't mind, 3 bad thing", "1 (good thing) = yes",
  show_side, "act_demonstration", "Attending peaceful demonstrations", "3-point: 1 have done, 2 might do, 3 would never do", "1–2 = done or might do",
  show_side, "act_boycott", "Joining in boycotts", "3-point: 1 have done, 2 might do, 3 would never do", "1–2 = done or might do"),
  caption = "Questions used in this section")
Questions used in this section
Question number in the WVS file
Question Response format How it is counted / what it maps to Asked in India W4 W5 W6 W7
Liberal questions: liberal score = share answered yes
Essential to democracy: people choose their leaders in free elections 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes. 1–6 = Illiberal whatever the score 2006, 2012, 2023 — V154 V133 Q243
Essential to democracy: civil rights protect people from state oppression 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes 2006, 2012, 2023 — V157 V136 Q246
Essential to democracy: women have the same rights as men 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes 2006, 2012, 2023 — V161 V139 Q249
Having a democratic political system 4-point: 1 very good, 2 fairly good, 3 fairly bad, 4 very bad 1–2 (good) = yes 2001, 2006, 2012, 2023 V167 V151 V130 Q238
How important is it for you to live in a country that is governed democratically? 10-point: 1 not at all important … 10 absolutely important 7–10 = yes 2006, 2012, 2023 — V162 V140 Q250
Authoritarian questions: authoritarian score = share answered yes
Essential to democracy: the army takes over when government is incompetent 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes 2006, 2012, 2023 — V156 V135 Q245
Essential to democracy: religious authorities ultimately interpret the laws 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes 2006, 2012, 2023 — V153 V132 Q242
Essential to democracy: people obey their rulers 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes (from 2012) 2012, 2023 — — V138 Q248
Having the army rule 4-point: 1 very good, 2 fairly good, 3 fairly bad, 4 very bad 1–2 (good) = yes 2001, 2006, 2012, 2023 V166 V150 V129 Q237
Having a strong leader who does not have to bother with parliament and elections 4-point: 1 very good, 2 fairly good, 3 fairly bad, 4 very bad 1–2 (good) = yes 2001, 2006, 2012, 2023 V164 V148 V127 Q235
Having experts, not government, make decisions according to what they think is best for the country 4-point: 1 very good, 2 fairly good, 3 fairly bad, 4 very bad 1–2 (good) = yes 2001, 2006, 2012, 2023 V165 V149 V128 Q236
In the near future: greater respect for authority 3-point: 1 good thing, 2 don’t mind, 3 bad thing 1 (good thing) = yes 2001, 2006, 2012, 2023 V130 V78 V69 Q45
Shown for each type (not used in the rules)
Attending peaceful demonstrations 3-point: 1 have done, 2 might do, 3 would never do 1–2 = done or might do 2001, 2006, 2012, 2023 V136 V98 V87 Q211
Joining in boycotts 3-point: 1 have done, 2 might do, 3 would never do 1–2 = done or might do 2001, 2006, 2012, 2023 V135 V97 V86 Q210
wb_compare(c(con_liberal = "Liberal (maximalist)", con_minimal = "Minimalist (electoral)",
             con_illiberal = "Illiberal"),
           caption = "Conceptions of democracy (% of those classified): India vs the regions")
Conceptions of democracy (% of those classified): India vs the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Liberal (maximalist)
Western Europe & Offshoots 72.8 67.9 70.3
Eastern Europe 48.2 31.7 31.0
Latin America & Caribbean 45.5 36.3 28.5
Western Asia & Northern Africa 36.0 28.4 26.9
India 25.0 29.5 26.4
Sub-Saharan Africa 37.5 22.6 20.7
South-eastern Asia 38.0 29.9 17.3
India’s rank among all countries (1 = highest) 24 of 29 19 of 32 21 of 33
Minimalist (electoral)
Sub-Saharan Africa 32.7 40.0 46.7
India 35.8 34.7 40.7
Latin America & Caribbean 29.2 36.0 36.7
Western Asia & Northern Africa 39.6 37.2 35.1
Eastern Europe 30.6 36.5 35.1
South-eastern Asia 32.1 33.5 33.3
Western Europe & Offshoots 13.3 15.8 13.7
India’s rank among all countries (1 = highest) 6 of 29 16 of 32 7 of 33
Illiberal
South-eastern Asia 29.9 36.6 49.4
Western Asia & Northern Africa 24.5 34.4 38.0
Latin America & Caribbean 25.4 27.7 34.8
Eastern Europe 21.2 31.8 33.9
India 39.2 35.9 32.9
Sub-Saharan Africa 29.8 37.4 32.6
Western Europe & Offshoots 13.9 16.3 16.0
India’s rank among all countries (1 = highest) 4 of 29 10 of 32 17 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.
wb_stack(c(con_liberal = "Liberal (maximalist)", con_minimal = "Minimalist (electoral)", con_illiberal = "Illiberal"),
         cols = c(`Liberal (maximalist)` = "#0d366b", `Minimalist (electoral)` = "#256abf", Illiberal = "#86b6ef"),
         title = "Conceptions of democracy, latest wave")

Each chart: India and every region as rows, one dot per wave (light = W5, dark = W7; the types are classified from 2006).

conc_plots <- imap(c(con_liberal = "Liberal (maximalist)", con_minimal = "Minimalist (electoral)", con_illiberal = "Illiberal"),
                   ~ wb_dots(.y, title = .x, xlab = "% of those classified"))
if (isTRUE(getOption("wvs.static"))) invisible(lapply(conc_plots, print)) else htmltools::tagList(conc_plots)

Do liberals act on their views?

What is shown. For each conception type: the % who have attended or might attend a peaceful demonstration, and the % who have joined or might join a boycott. If liberals act on their views, they should be more willing to protest than minimalists and illiberals.

wb_by_type("acc_demo", caption = "Has attended or might attend a peaceful demonstration (%), by conception of democracy")
Has attended or might attend a peaceful demonstration (%), by conception of democracy
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Liberal (maximalist)
Western Europe & Offshoots 73.4 74.6 77.5
Latin America & Caribbean 61.7 62.0 63.4
India 53.6 55.2 57.0
Eastern Europe 51.5 39.0 52.2
Sub-Saharan Africa 58.5 52.6 48.7
Western Asia & Northern Africa 43.3 34.3 45.9
South-eastern Asia 26.8 23.2 33.4
Minimalist (electoral)
Western Europe & Offshoots 63.5 58.7 59.7
Latin America & Caribbean 48.4 52.2 55.0
India 49.9 44.8 53.2
Eastern Europe 43.9 33.6 46.4
Sub-Saharan Africa 46.9 50.3 42.2
Western Asia & Northern Africa 34.1 30.2 35.5
South-eastern Asia 29.1 27.6 31.0
Illiberal
India 46.7 43.7 63.7
Western Europe & Offshoots 56.3 52.4 55.7
Latin America & Caribbean 45.2 46.1 47.8
Sub-Saharan Africa 38.9 42.7 40.7
Eastern Europe 44.4 31.1 38.5
Western Asia & Northern Africa 32.0 24.9 36.8
South-eastern Asia 28.4 25.4 34.0
Cells: % among respondents of that type. Regions: mean of country estimates; a country counts only with at least 30 respondents of that type. — = too few respondents or not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.
wb_by_type("acc_boycott", caption = "Has joined or might join a boycott (%), by conception of democracy")
Has joined or might join a boycott (%), by conception of democracy
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Liberal (maximalist)
Western Europe & Offshoots 65.8 67.1 75.8
India 55.2 47.7 40.6
Western Asia & Northern Africa 34.3 25.2 34.9
Latin America & Caribbean 24.7 28.4 32.3
Sub-Saharan Africa 42.5 39.2 27.9
Eastern Europe 30.3 16.7 27.3
South-eastern Asia 19.0 16.2 22.0
Minimalist (electoral)
Western Europe & Offshoots 48.1 49.6 55.5
India 46.0 35.8 40.5
Western Asia & Northern Africa 27.4 22.0 27.5
Sub-Saharan Africa 32.6 31.4 26.8
Eastern Europe 27.3 14.1 26.1
Latin America & Caribbean 18.4 22.6 23.7
South-eastern Asia 17.9 20.9 20.8
Illiberal
Western Europe & Offshoots 42.8 43.8 50.1
India 45.9 34.4 48.7
Western Asia & Northern Africa 25.7 18.9 32.0
Sub-Saharan Africa 29.0 28.1 30.0
Latin America & Caribbean 18.3 21.9 29.1
Eastern Europe 27.5 16.4 28.6
South-eastern Asia 18.9 19.4 24.6
Cells: % among respondents of that type. Regions: mean of country estimates; a country counts only with at least 30 respondents of that type. — = too few respondents or not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

What this shows.

  • In most regions, liberals are the most willing to protest. In the latest wave, 78% of liberals in Western Europe & Offshoots would attend a peaceful demonstration against 56% of illiberals; Latin America 63% vs 48%; Eastern Europe 52% vs 39%; Western Asia & Northern Africa 46% vs 37%. Boycotts show the same order. South-eastern Asia shows little difference.
  • India is the exception in 2023. Indian liberals led in 2006 and 2012 (55% vs 44% for demonstrations in 2012), but in 2023 illiberals are the most willing: 64% would demonstrate, against 57% of liberals and 53% of minimalists; for boycotts 49% against 41% and 41%. In India, holding a liberal idea of democracy no longer goes with a greater readiness to act on it.
  • India’s 2023 liberal group is small (about 300 respondents), so read the gap with some care.

II.3 State support

The question. Do people want the state to look after those who cannot look after themselves? This is kept apart from the conception types: a liberal, a minimalist or an illiberal can each be for or against state support.

What is calculated. A state supporter says yes to at least 3 of five questions: government should take more responsibility (1–4 on the 10-point scale), incomes should be made more equal (1–4), and taxing the rich, unemployment aid and the state making incomes equal rated 7–10 as essential to democracy. Classified from 2006; in 2006 only four were asked (3 of 4).

q_table(tribble(
  ~var, ~question, ~format, ~mapped,
  "econ_govresp", "Government should take more responsibility to ensure that everyone is provided for (1) ... people should take more responsibility to provide for themselves (10)", "10-point scale between the two statements", "1–4 = yes to state support",
  "econ_income", "Incomes should be made more equal (1) ... we need larger income differences as incentives (10)", "10-point scale between the two statements", "1–4 = yes to state support",
  "dess_taxrich", "Essential to democracy: governments tax the rich and subsidise the poor", fmt_ess, "7–10 = yes to state support",
  "dess_unemp", "Essential to democracy: people receive state aid for unemployment", fmt_ess, "7–10 = yes to state support",
  "dess_incomeequal", "Essential to democracy: the state makes people's incomes equal", fmt_ess, "7–10 = yes to state support"),
  caption = "Questions used in this section. State supporter = yes to at least 3")
Questions used in this section. State supporter = yes to at least 3
Question number in the WVS file
Question Response format How it is counted / what it maps to Asked in India W4 W5 W6 W7
Government should take more responsibility to ensure that everyone is provided for (1) … people should take more responsibility to provide for themselves (10) 10-point scale between the two statements 1–4 = yes to state support 2001, 2006, 2012, 2023 V143 V118 V98 Q108
Incomes should be made more equal (1) … we need larger income differences as incentives (10) 10-point scale between the two statements 1–4 = yes to state support 2001, 2006, 2012, 2023 V141 V116 V96 Q106
Essential to democracy: governments tax the rich and subsidise the poor 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes to state support 2006, 2012, 2023 — V152 V131 Q241
Essential to democracy: people receive state aid for unemployment 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes to state support 2006, 2012, 2023 — V155 V134 Q244
Essential to democracy: the state makes people’s incomes equal 10-point: 1 not an essential characteristic of democracy … 10 an essential characteristic 7–10 = yes to state support 2012, 2023 — — V137 Q247
wb_compare(c(state_support = "State supporters (%)"),
           caption = "State supporters: India vs the regions")
State supporters: India vs the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Asia & Northern Africa 51.0 67.7 57.7
Sub-Saharan Africa 39.1 40.7 53.5
Eastern Europe 44.5 61.6 52.9
India 46.3 71.6 52.4
South-eastern Asia 18.3 42.0 39.3
Latin America & Caribbean 27.3 45.4 38.7
Western Europe & Offshoots 29.0 39.4 38.6
India’s rank among all countries (1 = highest) 9 of 29 6 of 32 10 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.
wb_lines("state_support", title = "State supporters: India vs each region", ylab = "% state supporters")

State support and the conception of democracy

What is shown. For each conception type: the % who are state supporters. This shows whether wanting a supportive state goes with a liberal, a minimalist or an illiberal idea of democracy.

wb_by_type("state_support", caption = "State supporters (%), by conception of democracy")
State supporters (%), by conception of democracy
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Liberal (maximalist)
Western Asia & Northern Africa 52.3 71.3 64.7
Eastern Europe 44.7 68.4 58.5
India 43.7 85.6 55.1
Sub-Saharan Africa 43.3 39.2 53.1
Latin America & Caribbean 29.7 49.8 47.5
South-eastern Asia 17.9 42.7 45.8
Western Europe & Offshoots 32.4 42.1 41.2
Minimalist (electoral)
Western Asia & Northern Africa 54.8 73.2 67.3
Sub-Saharan Africa 44.9 56.4 64.5
Eastern Europe 51.8 72.8 63.5
India 49.7 77.6 60.6
South-eastern Asia 22.8 54.7 53.2
Latin America & Caribbean 28.5 50.0 45.4
Western Europe & Offshoots 25.6 40.7 42.0
Illiberal
Western Asia & Northern Africa 35.9 52.4 41.9
India 38.4 53.9 39.2
Sub-Saharan Africa 26.8 25.7 39.1
Eastern Europe 35.8 41.3 37.6
South-eastern Asia 13.5 28.3 29.8
Latin America & Caribbean 17.6 29.0 25.4
Western Europe & Offshoots 14.0 25.4 23.9
Cells: % among respondents of that type. Regions: mean of country estimates; a country counts only with at least 30 respondents of that type. — = too few respondents or not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

What this shows.

  • Everywhere, illiberals are the least state-supportive; liberals and minimalists are alike. In the latest wave, Western Europe & Offshoots: 41% of liberals and 42% of minimalists are state supporters, against 24% of illiberals; Eastern Europe 59%, 64% and 38%; Latin America 48%, 45% and 25%.
  • India follows the same pattern. In 2023, 55% of Indian liberals and 61% of minimalists are state supporters, against 39% of illiberals (2012: 86%, 78% and 54%). Wanting democracy and wanting a supportive state go together, in India as elsewhere.

What this part shows.

All figures are for the latest wave (India 2023) unless stated.

  • Governance vs accountability: India sits between Western Europe & Offshoots and the rest. 44% of Indians are governance-first, like Latin America (43%); below South-eastern Asia (57%), Eastern Europe (56%), Western Asia & Northern Africa and Sub-Saharan Africa (60%); and far above Western Europe & Offshoots (18%). India’s accountability-first share (14%) is higher than in every region except Western Europe & Offshoots (21%). “Want both” (33%) is close to Eastern Europe (32%), below Latin America (42%) and far below Western Europe & Offshoots (59%).
  • Conceptions: few liberals, many minimalists. India’s liberal share (26%) is like Western Asia & Northern Africa (27%), Latin America (29%) and Eastern Europe (31%), above South-eastern Asia (17%) and Sub-Saharan Africa (21%), and far below Western Europe & Offshoots (70%). Its minimalist share (41%) is among the highest (7th of 33 countries), with Sub-Saharan Africa (47%); Western Europe & Offshoots has 14%. Its illiberal share (33%) is mid-range: South-eastern Asia is highest (49%), Western Europe & Offshoots lowest (16%).
  • State support: India is in the upper middle. 52% of Indians are state supporters, like Eastern Europe (53%) and Sub-Saharan Africa (54%), below Western Asia & Northern Africa (58%), and above South-eastern Asia, Latin America and Western Europe & Offshoots (39% each).
  • Caution: Sub-Saharan Africa has only three countries (one in W5), so its figures rest on very few surveys.

Part III. Question by question: India and the regions

Part II combines questions into measures (groups, types, state supporters). This part shows each question on its own, so that every building block can be checked, and adds trust in institutions.

  • One table per question: rows are India and the regions of Part II (same countries: those surveyed in at least 3 of the 4 waves); columns are the waves.
  • What each cell shows: the % giving the answer that the report counts as “yes” for that question (set out in each section’s question table). India’s cell is its own estimate; a region’s cell is the mean of its countries. The last row gives India’s rank among all countries shown.
  • “—” means the question was not asked in that wave (or not in any of the region’s countries).
  • Click a tab to see each question.
# one table per question, printed under its own tab
p4_tabs <- function(items) {
  for (v in names(items)) {
    cat("\n\n#### ", items[[v]], "\n\n", sep = "")
    print(wb_compare(setNames(items[[v]], v),
                     caption = paste0(items[[v]], ": % counted as yes, India and the regions")))
  }
  cat("\n\n")
}

III.1 Trust in institutions

What is shown. For each of the 8 institutions: the % with a great deal or quite a lot of confidence (answers 1–2 on the 4-point scale). The courts question was not asked in W4.

q_table(tribble(
  ~var, ~question, ~format, ~mapped,
  "conf_civilservice", "Confidence in the civil service", fmt_conf, "1–2 = trusts. State (uses power)",
  "conf_police", "Confidence in the police", fmt_conf, "1–2 = trusts. State (uses power)",
  "conf_army", "Confidence in the armed forces", fmt_conf, "1–2 = trusts. State (uses power)",
  "conf_govt", "Confidence in the government", fmt_conf, "1–2 = trusts. State (uses power)",
  "conf_parliament", "Confidence in parliament", fmt_conf, "1–2 = trusts. Checks power",
  "conf_parties", "Confidence in political parties", fmt_conf, "1–2 = trusts. Checks power",
  "conf_press", "Confidence in the press", fmt_conf, "1–2 = trusts. Checks power",
  "conf_courts", "Confidence in the courts", fmt_conf, "1–2 = trusts. Checks power"))
Questions used in this section
Question number in the WVS file
Question Response format How it is counted / what it maps to Asked in India W4 W5 W6 W7
Confidence in the civil service 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. State (uses power) 2001, 2006, 2012, 2023 V156 V141 V118 Q74
Confidence in the police 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. State (uses power) 2001, 2006, 2012, 2023 V152 V136 V113 Q69
Confidence in the armed forces 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. State (uses power) 2001, 2006, 2012, 2023 V148 V132 V109 Q65
Confidence in the government 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. State (uses power) 2001, 2006, 2012, 2023 V153 V138 V115 Q71
Confidence in parliament 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. Checks power 2001, 2006, 2012, 2023 V155 V140 V117 Q73
Confidence in political parties 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. Checks power 2001, 2006, 2012, 2023 V154 V139 V116 Q72
Confidence in the press 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. Checks power 2001, 2006, 2012, 2023 V149 V133 V110 Q66
Confidence in the courts 4-point: 1 a great deal, 2 quite a lot, 3 not very much, 4 none at all 1–2 = trusts. Checks power 2006, 2012, 2023 — V137 V114 Q70

Each institution

p4_tabs(c(conf_civilservice_hi = "Civil service", conf_police_hi = "Police",
          conf_army_hi = "Armed forces", conf_govt_hi = "Government",
          conf_parliament_hi = "Parliament", conf_parties_hi = "Political parties",
          conf_press_hi = "Press", conf_courts_hi = "Courts"))

Civil service

Civil service: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
India 48.6 54.3 61.0 80.7
South-eastern Asia 69.8 64.7 70.0 73.0
Sub-Saharan Africa 62.5 55.4 52.1 49.6
Western Europe & Offshoots 48.9 43.7 47.6 49.6
Eastern Europe 36.7 38.6 46.0 41.9
Western Asia & Northern Africa 58.1 57.3 43.1 39.4
Latin America & Caribbean 19.6 26.0 26.7 27.0
India’s rank among all countries (1 = highest) 13 of 21 10 of 30 6 of 32 2 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Police

Police: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 72.0 73.3 75.0 77.5
South-eastern Asia 68.7 64.9 67.1 73.1
Western Asia & Northern Africa 76.1 72.7 64.8 66.9
India 38.0 64.1 51.2 66.7
Eastern Europe 35.2 35.4 40.7 46.1
Sub-Saharan Africa 51.6 61.1 44.3 38.8
Latin America & Caribbean 31.4 39.3 42.0 38.8
India’s rank among all countries (1 = highest) 16 of 21 12 of 29 20 of 32 14 of 32
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Armed forces

Armed forces: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
India 92.0 83.3 87.1 86.8
South-eastern Asia 81.5 76.9 74.9 79.7
Western Asia & Northern Africa 73.6 76.7 74.5 74.8
Western Europe & Offshoots 57.6 63.2 68.7 74.1
Eastern Europe 65.7 64.9 64.2 71.5
Sub-Saharan Africa 54.7 63.4 58.1 53.4
Latin America & Caribbean 37.6 49.5 47.9 46.7
India’s rank among all countries (1 = highest) 3 of 22 6 of 30 3 of 31 4 of 32
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Government

Government: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
South-eastern Asia 67.1 67.1 66.6 73.8
India 56.2 54.9 50.4 65.2
Sub-Saharan Africa 53.1 70.4 45.4 46.1
Western Europe & Offshoots 41.4 37.0 39.2 40.0
Western Asia & Northern Africa 58.2 64.2 47.1 37.8
Eastern Europe 33.2 31.9 38.1 35.1
Latin America & Caribbean 33.4 42.9 38.5 26.3
India’s rank among all countries (1 = highest) 7 of 21 9 of 30 11 of 32 6 of 32
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Parliament

Parliament: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
India 55.2 62.4 58.4 73.7
South-eastern Asia 67.0 59.1 62.9 64.4
Sub-Saharan Africa 51.7 65.2 44.4 39.0
Western Europe & Offshoots 44.9 35.7 37.9 34.0
Eastern Europe 29.6 21.8 31.4 25.5
Western Asia & Northern Africa 51.0 54.9 34.6 23.4
Latin America & Caribbean 19.7 24.1 24.8 18.5
India’s rank among all countries (1 = highest) 6 of 21 5 of 29 5 of 32 2 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Political parties

Political parties: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
South-eastern Asia 56.7 51.4 54.4 53.3
India 33.5 46.4 37.4 42.6
Sub-Saharan Africa 39.3 43.5 36.0 31.0
Eastern Europe 20.1 16.3 28.3 20.9
Western Asia & Northern Africa 30.9 34.2 21.8 18.3
Western Europe & Offshoots 24.3 20.6 20.7 17.8
Latin America & Caribbean 16.9 18.7 18.9 13.8
India’s rank among all countries (1 = highest) 6 of 20 3 of 29 9 of 32 5 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Press

Press: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
India 70.3 75.8 71.8 65.6
South-eastern Asia 68.8 62.2 59.9 58.5
Sub-Saharan Africa 61.2 60.9 52.0 43.2
Western Europe & Offshoots 37.1 29.1 30.8 31.7
Eastern Europe 36.3 37.0 43.0 31.4
Western Asia & Northern Africa 50.4 49.9 39.2 30.8
Latin America & Caribbean 37.7 41.1 40.3 30.2
India’s rank among all countries (1 = highest) 2 of 21 2 of 30 1 of 32 3 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Courts

Courts: % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
South-eastern Asia 72.7 76.3 76.3
India 68.9 64.5 74.3
Western Europe & Offshoots 56.6 62.1 64.9
Western Asia & Northern Africa 74.8 64.4 57.5
Sub-Saharan Africa 65.9 52.3 48.0
Eastern Europe 32.1 36.3 35.6
Latin America & Caribbean 33.9 33.2 29.6
India’s rank among all countries (1 = highest) 8 of 29 12 of 32 7 of 32
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

III.2 Governance (delivery) questions

What is shown. The four delivery questions of II.1: the % who pick each aim as the country’s 1st or 2nd most important.

The questions are listed in the table in II.1.

Each question

p4_tabs(c(gov_growth  = "Economic growth (top two aims)",
          gov_prices  = "Fighting rising prices (top two aims)",
          gov_economy = "A stable economy (top two aims)",
          gov_crime   = "The fight against crime (top two aims)"))

Economic growth (top two aims)

Economic growth (top two aims): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Sub-Saharan Africa 84.4 78.5 80.2 78.7
Western Asia & Northern Africa 80.7 83.4 82.7 78.2
Latin America & Caribbean 82.0 82.9 83.8 76.9
Eastern Europe 89.9 87.8 88.9 76.4
South-eastern Asia 86.9 86.1 78.2 73.2
Western Europe & Offshoots 79.6 79.8 83.1 71.5
India 72.3 69.8 73.0 62.7
India’s rank among all countries (1 = highest) 21 of 22 29 of 29 28 of 32 30 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Fighting rising prices (top two aims)

Fighting rising prices (top two aims): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Asia & Northern Africa 50.8 65.7 67.3 65.1
India 71.0 69.9 68.4 64.5
Eastern Europe 57.0 69.3 65.9 62.0
Sub-Saharan Africa 62.3 64.2 65.0 56.4
Latin America & Caribbean 48.3 48.4 53.0 52.8
South-eastern Asia 42.0 46.7 59.5 47.6
Western Europe & Offshoots 34.6 42.0 50.8 40.4
India’s rank among all countries (1 = highest) 2 of 23 6 of 31 9 of 32 9 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

A stable economy (top two aims)

A stable economy (top two aims): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Sub-Saharan Africa 82.5 73.9 78.4 81.2
South-eastern Asia 87.6 88.8 75.2 79.9
Eastern Europe 83.3 85.3 85.4 76.4
Western Europe & Offshoots 66.6 70.9 78.7 72.7
Latin America & Caribbean 75.5 70.4 71.1 71.9
Western Asia & Northern Africa 61.6 74.4 74.9 71.5
India 53.9 47.0 63.1 52.0
India’s rank among all countries (1 = highest) 21 of 22 29 of 29 29 of 32 33 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

The fight against crime (top two aims)

The fight against crime (top two aims): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Latin America & Caribbean 56.1 62.3 61.7 59.9
Eastern Europe 64.9 59.2 52.5 50.5
Sub-Saharan Africa 67.2 79.4 46.3 49.1
India 60.1 67.6 65.6 48.3
Western Europe & Offshoots 55.5 56.6 49.0 47.7
Western Asia & Northern Africa 56.3 55.6 57.4 45.2
South-eastern Asia 39.8 33.9 45.0 40.1
India’s rank among all countries (1 = highest) 10 of 22 6 of 29 5 of 32 20 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

III.3 Accountability questions

What is shown. The five accountability questions of II.1: the % who pick more say as one of the top two aims, and the % who have done or might do each political action. The questions are listed in the table in II.1.

Each question

p4_tabs(c(acc_say_govt = "More say in important government decisions (top two aims)",
          acc_say_work = "More say at work and in communities (top two aims)",
          acc_petition = "Signing a petition (done or might do)",
          acc_demo     = "Attending peaceful demonstrations (done or might do)",
          acc_boycott  = "Joining in boycotts (done or might do)"))

More say in important government decisions (top two aims)

More say in important government decisions (top two aims): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 58.9 53.7 47.1 54.7
South-eastern Asia 47.8 49.6 45.4 54.1
Latin America & Caribbean 49.8 50.7 49.3 47.1
Sub-Saharan Africa 40.0 47.4 50.2 45.6
Eastern Europe 36.1 34.8 41.1 42.3
India 33.3 35.8 35.9 41.2
Western Asia & Northern Africa 35.3 39.9 30.5 39.3
India’s rank among all countries (1 = highest) 19 of 23 24 of 31 26 of 32 26 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

More say at work and in communities (top two aims)

More say at work and in communities (top two aims): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Latin America & Caribbean 69.0 67.3 63.5 63.0
Western Europe & Offshoots 70.2 67.8 66.4 60.9
South-eastern Asia 39.5 40.0 54.9 48.1
Eastern Europe 46.9 46.7 51.1 42.6
Sub-Saharan Africa 60.6 63.2 59.4 41.1
India 30.7 35.7 38.5 34.7
Western Asia & Northern Africa 33.7 36.5 30.6 34.6
India’s rank among all countries (1 = highest) 20 of 22 26 of 29 27 of 32 29 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Signing a petition (done or might do)

Signing a petition (done or might do): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 87.1 88.4 86.8 93.3
Latin America & Caribbean 59.3 62.1 59.2 60.5
India 57.5 54.7 38.1 47.8
Eastern Europe 49.2 40.8 28.4 45.7
South-eastern Asia 38.6 27.0 27.5 40.1
Western Asia & Northern Africa 44.2 38.0 28.6 37.8
Sub-Saharan Africa 46.1 46.9 41.9 34.7
India’s rank among all countries (1 = highest) 8 of 22 17 of 31 21 of 31 20 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Attending peaceful demonstrations (done or might do)

Attending peaceful demonstrations (done or might do): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 72.9 69.6 67.6 70.9
India 52.3 46.4 47.6 57.1
Latin America & Caribbean 39.4 52.5 52.7 54.1
Eastern Europe 52.2 45.5 34.6 42.9
Sub-Saharan Africa 50.2 47.9 48.0 42.7
Western Asia & Northern Africa 26.5 36.4 30.1 38.4
South-eastern Asia 29.5 27.7 25.7 33.8
India’s rank among all countries (1 = highest) 9 of 22 20 of 31 16 of 31 12 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Joining in boycotts (done or might do)

Joining in boycotts (done or might do): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 63.7 61.9 59.6 68.0
India 40.4 44.5 39.0 42.6
Western Asia & Northern Africa 35.7 28.8 21.5 30.5
Sub-Saharan Africa 38.4 34.7 31.8 28.0
Latin America & Caribbean 24.1 20.8 23.8 27.4
Eastern Europe 35.6 27.8 15.5 25.8
South-eastern Asia 18.6 18.3 19.1 24.1
India’s rank among all countries (1 = highest) 8 of 22 9 of 31 10 of 31 11 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

III.4 Conception of democracy: liberal questions

What is shown. The five liberal questions of II.2: the % rating each 7–10 as essential to democracy, saying a democratic system is good, or rating living in a democracy as important (7–10). Asked from W5 (W4 for “democratic system”).

The questions are listed in the table in II.2.

Each question

p4_tabs(c(lib_elections = "Essential: free elections (7–10)",
          lib_civil     = "Essential: civil rights protect people from the state (7–10)",
          lib_women     = "Essential: women have the same rights as men (7–10)",
          lib_demgood   = "Having a democratic political system is good",
          lib_demimp    = "Living in a democracy is important (7–10)"))

Essential: free elections (7–10)

Essential: free elections (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 87.9 85.6 85.9
India 77.8 74.9 78.9
Sub-Saharan Africa 82.6 72.9 78.9
Eastern Europe 87.2 75.2 76.4
Western Asia & Northern Africa 86.3 82.1 76.2
Latin America & Caribbean 82.5 79.2 72.3
South-eastern Asia 76.2 70.8 62.9
India’s rank among all countries (1 = highest) 25 of 29 24 of 32 14 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: civil rights protect people from the state (7–10)

Essential: civil rights protect people from the state (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 82.3 74.6 75.6
India 67.7 66.9 73.3
Sub-Saharan Africa 70.8 61.9 72.7
Eastern Europe 85.5 72.8 72.5
Western Asia & Northern Africa 80.3 70.3 66.7
Latin America & Caribbean 71.7 60.2 56.5
South-eastern Asia 69.3 59.1 54.6
India’s rank among all countries (1 = highest) 25 of 29 17 of 32 11 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: women have the same rights as men (7–10)

Essential: women have the same rights as men (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 90.9 87.5 87.1
Eastern Europe 87.9 78.1 79.5
India 71.0 79.0 77.4
Latin America & Caribbean 85.3 79.7 71.5
Western Asia & Northern Africa 72.2 67.7 69.1
Sub-Saharan Africa 76.1 59.9 66.1
South-eastern Asia 75.3 66.3 65.0
India’s rank among all countries (1 = highest) 24 of 29 16 of 32 17 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Having a democratic political system is good

Having a democratic political system is good: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 92.5 92.7 91.9 91.8
Sub-Saharan Africa 91.0 90.3 86.8 90.0
South-eastern Asia 91.9 93.7 87.8 87.3
Latin America & Caribbean 88.6 90.2 90.3 85.4
India 93.0 91.7 90.0 84.2
Western Asia & Northern Africa 94.3 94.6 93.7 82.6
Eastern Europe 87.8 83.6 81.0 81.5
India’s rank among all countries (1 = highest) 12 of 23 19 of 31 20 of 32 22 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Living in a democracy is important (7–10)

Living in a democracy is important (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Europe & Offshoots 90.7 88.4 87.8
India 46.4 73.7 83.0
Sub-Saharan Africa 89.9 77.8 81.7
Latin America & Caribbean 83.5 83.6 81.7
Western Asia & Northern Africa 92.6 86.0 80.5
South-eastern Asia 86.8 79.9 79.2
Eastern Europe 76.6 75.2 75.4
India’s rank among all countries (1 = highest) 29 of 29 30 of 32 14 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

III.5 Conception of democracy: authoritarian questions

What is shown. The seven authoritarian questions of II.2: the % rating each 7–10 as essential to democracy, calling each way of governing good, or saying greater respect for authority would be a good thing. The questions are listed in the table in II.2.

Each question

p4_tabs(c(aut_army_ess  = "Essential: the army takes over when government is incompetent (7–10)",
          aut_relig_ess = "Essential: religious authorities interpret the laws (7–10)",
          aut_obey      = "Essential: people obey their rulers (7–10)",
          aut_army_rule = "Having the army rule is good",
          aut_strong    = "Having a strong leader who does not bother with parliament and elections is good",
          aut_experts   = "Having experts, not government, make decisions is good",
          aut_authority = "Greater respect for authority would be a good thing"))

Essential: the army takes over when government is incompetent (7–10)

Essential: the army takes over when government is incompetent (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Sub-Saharan Africa 36.1 37.1 42.2
India 38.3 45.0 40.4
South-eastern Asia 35.8 30.5 39.2
Eastern Europe 30.0 30.0 37.7
Western Asia & Northern Africa 44.5 35.4 35.5
Latin America & Caribbean 28.5 26.5 30.1
Western Europe & Offshoots 14.9 12.1 12.1
India’s rank among all countries (1 = highest) 9 of 29 4 of 31 9 of 31
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: religious authorities interpret the laws (7–10)

Essential: religious authorities interpret the laws (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Western Asia & Northern Africa 46.8 42.9 34.1
India 21.7 23.3 33.2
South-eastern Asia 43.5 30.8 33.0
Sub-Saharan Africa 41.2 37.3 33.0
Eastern Europe 22.7 19.0 24.2
Latin America & Caribbean 23.1 20.3 20.2
Western Europe & Offshoots 7.2 7.6 5.5
India’s rank among all countries (1 = highest) 15 of 29 13 of 32 10 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: people obey their rulers (7–10)

Essential: people obey their rulers (7–10): % counted as yes, India and the regions
W6 (2010–16) W7 (2017–23)
Sub-Saharan Africa 60.9 74.0
India 53.8 58.4
Eastern Europe 47.4 50.3
South-eastern Asia 56.9 49.9
Western Asia & Northern Africa 53.9 48.6
Latin America & Caribbean 48.0 40.5
Western Europe & Offshoots 26.7 26.5
India’s rank among all countries (1 = highest) 12 of 32 8 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.

Having the army rule is good

Having the army rule is good: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
South-eastern Asia 52.2 59.1 38.3 54.9
India 20.0 36.0 45.2 39.0
Sub-Saharan Africa 19.8 32.7 36.1 33.3
Eastern Europe 22.4 19.9 25.2 32.3
Western Asia & Northern Africa 30.2 38.0 23.1 30.2
Latin America & Caribbean 22.9 26.0 26.8 29.5
Western Europe & Offshoots 7.0 7.4 7.6 8.6
India’s rank among all countries (1 = highest) 10 of 21 7 of 31 4 of 30 11 of 31
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Having a strong leader who does not bother with parliament and elections is good

Having a strong leader who does not bother with parliament and elections is good: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
South-eastern Asia 51.1 40.8 47.9 70.2
India 59.1 63.9 64.9 69.1
Eastern Europe 40.0 57.8 76.0 65.8
Latin America & Caribbean 44.8 44.7 52.9 61.1
Western Asia & Northern Africa 32.4 30.5 47.7 53.3
Sub-Saharan Africa 34.4 43.1 39.6 49.7
Western Europe & Offshoots 23.3 25.8 30.5 28.8
India’s rank among all countries (1 = highest) 5 of 23 4 of 31 7 of 32 9 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Having experts, not government, make decisions is good

Having experts, not government, make decisions is good: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
India 68.0 70.5 71.4 72.5
South-eastern Asia 61.8 54.2 52.1 69.4
Latin America & Caribbean 60.5 58.0 62.8 68.1
Sub-Saharan Africa 64.6 59.9 65.2 65.4
Eastern Europe 77.1 65.3 66.9 64.7
Western Asia & Northern Africa 76.6 73.0 66.2 59.1
Western Europe & Offshoots 40.9 45.3 51.0 51.0
India’s rank among all countries (1 = highest) 9 of 23 10 of 31 5 of 32 8 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Greater respect for authority would be a good thing

Greater respect for authority would be a good thing: % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Sub-Saharan Africa 81.7 78.6 66.0 88.9
Latin America & Caribbean 71.1 78.9 73.2 71.3
Western Asia & Northern Africa 84.0 76.3 71.2 65.0
Western Europe & Offshoots 55.1 59.1 59.5 56.4
Eastern Europe 52.9 65.1 59.6 54.1
South-eastern Asia 59.8 45.3 52.2 53.8
India 43.4 38.0 43.3 50.2
India’s rank among all countries (1 = highest) 20 of 22 28 of 31 29 of 32 25 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

III.6 State support questions

What is shown. The five state-support questions of II.3: the % on the government-responsibility and equal-incomes side of the 10-point scales (1–4), and the % rating each of the three economic items 7–10 as essential to democracy.

The questions are listed in the table in II.3.

Each question

p4_tabs(c(ss_govresp_yes  = "Government should take more responsibility (1–4)",
          ss_income_yes   = "Incomes should be made more equal (1–4)",
          ss_taxrich_yes  = "Essential: governments tax the rich and subsidise the poor (7–10)",
          ss_unemp_yes    = "Essential: state aid for unemployment (7–10)",
          ss_incomeeq_yes = "Essential: the state makes people's incomes equal (7–10)"))

Government should take more responsibility (1–4)

Government should take more responsibility (1–4): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Sub-Saharan Africa 59.4 47.4 49.6 64.9
Western Asia & Northern Africa 56.7 64.0 64.8 50.6
Eastern Europe 58.4 54.2 58.4 46.8
Latin America & Caribbean 47.8 45.0 48.7 44.4
India 51.5 48.4 66.7 39.5
Western Europe & Offshoots 39.0 32.7 34.1 36.7
South-eastern Asia 32.5 30.5 34.0 35.6
India’s rank among all countries (1 = highest) 13 of 23 12 of 31 5 of 32 20 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Incomes should be made more equal (1–4)

Incomes should be made more equal (1–4): % counted as yes, India and the regions
W4 (1999–2004) W5 (2004–09) W6 (2010–16) W7 (2017–23)
Latin America & Caribbean 40.9 35.3 45.1 36.3
Western Asia & Northern Africa 27.3 35.9 44.6 33.8
Western Europe & Offshoots 35.4 31.4 41.3 33.1
Sub-Saharan Africa 31.6 37.8 21.8 24.9
India 54.4 48.0 71.1 20.6
Eastern Europe 36.3 31.8 49.5 19.3
South-eastern Asia 16.9 15.1 27.9 19.1
India’s rank among all countries (1 = highest) 3 of 22 4 of 31 1 of 32 25 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: governments tax the rich and subsidise the poor (7–10)

Essential: governments tax the rich and subsidise the poor (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
India 72.7 65.0 69.4
Western Asia & Northern Africa 70.3 66.3 60.6
Eastern Europe 63.5 55.5 58.6
Sub-Saharan Africa 60.1 44.7 54.0
South-eastern Asia 59.9 55.6 52.5
Western Europe & Offshoots 51.1 49.3 52.1
Latin America & Caribbean 44.3 41.6 38.5
India’s rank among all countries (1 = highest) 5 of 29 7 of 32 6 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: state aid for unemployment (7–10)

Essential: state aid for unemployment (7–10): % counted as yes, India and the regions
W5 (2004–09) W6 (2010–16) W7 (2017–23)
Eastern Europe 81.5 70.6 68.9
Sub-Saharan Africa 74.7 57.2 67.1
Western Asia & Northern Africa 74.9 72.7 66.1
India 73.5 69.0 66.0
Western Europe & Offshoots 66.7 61.0 58.6
Latin America & Caribbean 59.4 57.7 55.1
South-eastern Asia 50.1 56.2 48.7
India’s rank among all countries (1 = highest) 15 of 29 15 of 32 13 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.
Single country: Sub-Saharan Africa in W5 = South Africa.

Essential: the state makes people’s incomes equal (7–10)

Essential: the state makes people’s incomes equal (7–10): % counted as yes, India and the regions
W6 (2010–16) W7 (2017–23)
Western Asia & Northern Africa 59.8 58.2
Eastern Europe 59.2 57.6
India 64.3 54.7
South-eastern Asia 46.8 47.2
Sub-Saharan Africa 38.7 46.6
Latin America & Caribbean 45.7 40.5
Western Europe & Offshoots 27.6 27.7
India’s rank among all countries (1 = highest) 6 of 32 11 of 33
Regions: mean of the country estimates. India: its own estimate. — = not asked.

Part IV. PALS 2022: India and the regions

The PALS survey (Public Attitudes towards the Liberal Script, Wave 1) was carried out in 26 countries between December 2021 and July 2022. It asks several questions close to the themes of this report, often more directly than the WVS. It is used here as a second, independent look at India against the same regions.

  • One survey, one time point: there is no trend; India was interviewed in February–March 2022.
  • Mode: India and six other countries were interviewed face to face; the rest online. Online samples under-represent people without internet access, so differences between India and the online countries partly reflect mode.
  • Scales: most questions are 1–6 scales between two statements (or from “fully disagree” to “fully agree”). Each cell shows the % on the 4–6 side: leaning towards the right-hand statement, or agreeing. Answers “prefer not to say” and “don’t know” are left out.
  • Weights: each country uses PALS’s post-stratification weight (w2); a region is the mean of its countries, as in Parts II and III. India is ranked among all countries shown.
  • Regions: the same six regions as the WVS parts. Japan and South Korea (Eastern Asia) are left out; Latvia sits in Western Europe & Offshoots, as the UN places it in Northern Europe.
library(haven)
pals_raw <- read_dta("D:/Populism and Democrary/World value survey/PALS/PALS dataset.dta")
pals_region_of <- c(
  "India" = "India",
  "Indonesia" = "South-eastern Asia", "Singapore" = "South-eastern Asia",
  "Türkiye" = "Western Asia & Northern Africa", "Tunisia" = "Western Asia & Northern Africa",
  "Ghana" = "Sub-Saharan Africa", "Nigeria" = "Sub-Saharan Africa", "Senegal" = "Sub-Saharan Africa",
  "South Africa" = "Sub-Saharan Africa",
  "Brazil" = "Latin America & Caribbean", "Chile" = "Latin America & Caribbean",
  "Mexico" = "Latin America & Caribbean", "Peru" = "Latin America & Caribbean",
  "Poland" = "Eastern Europe", "Russian Federation" = "Eastern Europe",
  "France" = "Western Europe & Offshoots", "Germany" = "Western Europe & Offshoots",
  "Italy" = "Western Europe & Offshoots", "Spain" = "Western Europe & Offshoots",
  "Sweden" = "Western Europe & Offshoots", "Latvia" = "Western Europe & Offshoots",
  "United Kingdom of Great Britain and Northern Ireland" = "Western Europe & Offshoots",
  "United States of America" = "Western Europe & Offshoots", "Australia" = "Western Europe & Offshoots")
pals_capi <- c("Ghana", "India", "Nigeria", "Peru", "Senegal", "South Africa", "Tunisia")
pals <- pals_raw |>
  mutate(country_name = as.character(as_factor(country)),
         region = factor(unname(pals_region_of[country_name]), wb_regions)) |>
  filter(!is.na(region)) |>
  mutate(country_name = recode(country_name,
                               "United Kingdom of Great Britain and Northern Ireland" = "United Kingdom",
                               "United States of America" = "United States",
                               "Russian Federation" = "Russia"))

# one table per question, under tabs: India and the regions in descending order, with India's rank
pals_table <- function(items, caption, side = 4:6) {
  cat("\n\n### ", caption, " {.tabset}\n\n", sep = "")
  for (v in names(items)) {
    est <- pals |>
      transmute(region, country_name, w = w2, x = as.numeric(zap_labels(.data[[v]]))) |>
      filter(!is.na(x), x %in% c(0:6)) |>
      group_by(region, country_name) |>
      summarise(est = 100 * weighted.mean(if (all(x %in% 0:1)) x else as.numeric(x %in% side), w), .groups = "drop")
    rk <- est |> mutate(r = rank(-est, ties.method = "min")) |> filter(country_name == "India")
    tab <- est |> group_by(Region = as.character(region)) |> summarise(v = mean(est), .groups = "drop") |>
      arrange(desc(v)) |> mutate(`%` = sprintf("%.0f", v)) |> select(Region, `%`)
    cat("\n\n#### ", items[[v]], "\n\n", sep = "")
    print(tab |>
            kable(caption = paste0(items[[v]], " (%)"), align = c("l", "c")) |>
            styled() |>
            footnote(general = c(sprintf("India's rank among the %d PALS countries shown: %d (1 = highest).", nrow(est), rk$r),
                                 "Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates."),
                     general_title = ""))
  }
  cat("\n\n")
}
# plain question table for PALS items
pals_qtable <- function(rows, caption = "PALS questions used in this section") {
  rows |>
    kable(caption = caption) |>
    styled() |>
    column_spec(2, width = "26em")
}

IV.1 Countries and samples

What is shown. The PALS countries in each region, the number of respondents, and the interview mode. Japan and South Korea are not used.

pals |>
  group_by(region, country_name) |>
  summarise(n = n(), .groups = "drop") |>
  mutate(mode = ifelse(country_name %in% pals_capi, "face to face", "online")) |>
  group_by(Region = region) |>
  summarise(Countries = paste0(country_name, " (", format(n, big.mark = ","), "; ", mode, ")", collapse = "; "),
            Respondents = sum(n), .groups = "drop") |>
  kable(caption = "PALS countries by region (respondents; interview mode)", format.args = list(big.mark = ",")) |>
  styled() |>
  column_spec(2, width = "40em")
PALS countries by region (respondents; interview mode)
Region Countries Respondents
India India (2,822; face to face) 2,822
South-eastern Asia Indonesia (2,001; online); Singapore (2,010; online) 4,011
Western Asia & Northern Africa Tunisia (2,012; face to face); Türkiye (2,016; online) 4,028
Sub-Saharan Africa Ghana (2,000; face to face); Nigeria (2,000; face to face); Senegal (1,996; face to face); South Africa (2,030; face to face) 8,026
Latin America & Caribbean Brazil (2,110; online); Chile (2,005; online); Mexico (2,160; online); Peru (2,018; face to face) 8,293
Eastern Europe Poland (2,037; online); Russia (2,143; online) 4,180
Western Europe & Offshoots Australia (2,032; online); France (2,001; online); Germany (2,020; online); Italy (2,119; online); Latvia (2,100; online); Spain (2,114; online); Sweden (2,090; online); United Kingdom (2,007; online); United States (2,033; online) 18,516

IV.2 Governance and accountability

What is shown. Two sets of PALS questions close to section II.1. First, the same “most important aims” list as the WVS: respondents pick two of four, and each cell is the % who picked that aim. Second, five questions on who should decide policy when citizens disagree with another actor: each cell is the % on the 4–6 side, leaning towards that actor rather than citizens.

pals_qtable(tribble(
  ~Code, ~Question, ~`Response format`, ~`Cell shows`,
  "D06_a–d", "Goals for the next ten years: maintaining order / more say in government decisions / fighting rising prices / protecting freedom of speech", "Pick the two most important", "% who picked that goal",
  "B01_a", "If citizens and strong political leaders disagree, whose opinion should be most decisive for policy-making?", "1 citizens ... 6 strong political leaders", "% 4–6 (leaders)",
  "B01_b", "... citizens and elected politicians", "1 citizens ... 6 elected politicians", "% 4–6 (politicians)",
  "B01_c", "... citizens and established experts", "1 citizens ... 6 experts", "% 4–6 (experts)",
  "B01_d", "... citizens and religious leaders", "1 citizens ... 6 religious leaders", "% 4–6 (religious leaders)",
  "B01_e", "... citizens and the military", "1 citizens ... 6 the military", "% 4–6 (the military)"))
PALS questions used in this section
Code Question Response format Cell shows
D06_a–d Goals for the next ten years: maintaining order / more say in government decisions / fighting rising prices / protecting freedom of speech Pick the two most important % who picked that goal
B01_a If citizens and strong political leaders disagree, whose opinion should be most decisive for policy-making? 1 citizens … 6 strong political leaders % 4–6 (leaders)
B01_b … citizens and elected politicians 1 citizens … 6 elected politicians % 4–6 (politicians)
B01_c … citizens and established experts 1 citizens … 6 experts % 4–6 (experts)
B01_d … citizens and religious leaders 1 citizens … 6 religious leaders % 4–6 (religious leaders)
B01_e … citizens and the military 1 citizens … 6 the military % 4–6 (the military)
pals_table(c(D06_a = "Goal: maintaining order (picked)", D06_b = "Goal: more say in government decisions (picked)",
             D06_c = "Goal: fighting rising prices (picked)", D06_d = "Goal: protecting freedom of speech (picked)"),
           caption = "Most important goals")

Most important goals

Goal: maintaining order (picked)

Goal: maintaining order (picked) (%)
Region %
South-eastern Asia 55
Sub-Saharan Africa 50
India 46
Western Europe & Offshoots 43
Western Asia & Northern Africa 40
Latin America & Caribbean 38
Eastern Europe 35
India’s rank among the 24 PALS countries shown: 10 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Goal: more say in government decisions (picked)

Goal: more say in government decisions (picked) (%)
Region %
Eastern Europe 48
Latin America & Caribbean 42
Western Europe & Offshoots 41
South-eastern Asia 40
India 37
Sub-Saharan Africa 37
Western Asia & Northern Africa 32
India’s rank among the 24 PALS countries shown: 17 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Goal: fighting rising prices (picked)

Goal: fighting rising prices (picked) (%)
Region %
Western Asia & Northern Africa 72
Eastern Europe 69
India 67
Sub-Saharan Africa 64
Latin America & Caribbean 59
Western Europe & Offshoots 52
South-eastern Asia 49
India’s rank among the 24 PALS countries shown: 4 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Goal: protecting freedom of speech (picked)

Goal: protecting freedom of speech (picked) (%)
Region %
Western Europe & Offshoots 44
Latin America & Caribbean 42
Sub-Saharan Africa 41
South-eastern Asia 39
Western Asia & Northern Africa 37
Eastern Europe 37
India 30
India’s rank among the 24 PALS countries shown: 21 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.
pals_table(c(B01_a = "Strong political leaders should decide (not citizens)",
             B01_b = "Elected politicians should decide (not citizens)",
             B01_c = "Established experts should decide (not citizens)",
             B01_d = "Religious leaders should decide (not citizens)",
             B01_e = "The military should decide (not citizens)"),
           caption = "Who should decide policy when citizens disagree")

Who should decide policy when citizens disagree

Strong political leaders should decide (not citizens)

Strong political leaders should decide (not citizens) (%)
Region %
South-eastern Asia 41
India 35
Western Europe & Offshoots 31
Sub-Saharan Africa 27
Latin America & Caribbean 22
Eastern Europe 21
Western Asia & Northern Africa 21
India’s rank among the 24 PALS countries shown: 6 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Elected politicians should decide (not citizens)

Elected politicians should decide (not citizens) (%)
Region %
South-eastern Asia 39
India 36
Western Europe & Offshoots 33
Sub-Saharan Africa 25
Latin America & Caribbean 23
Eastern Europe 21
Western Asia & Northern Africa 21
India’s rank among the 24 PALS countries shown: 6 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Established experts should decide (not citizens)

Established experts should decide (not citizens) (%)
Region %
South-eastern Asia 52
Western Europe & Offshoots 50
Latin America & Caribbean 43
India 40
Western Asia & Northern Africa 39
Sub-Saharan Africa 37
Eastern Europe 33
India’s rank among the 24 PALS countries shown: 18 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Religious leaders should decide (not citizens)

Religious leaders should decide (not citizens) (%)
Region %
Sub-Saharan Africa 42
South-eastern Asia 41
India 35
Western Asia & Northern Africa 24
Latin America & Caribbean 18
Western Europe & Offshoots 18
Eastern Europe 12
India’s rank among the 24 PALS countries shown: 5 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

The military should decide (not citizens)

The military should decide (not citizens) (%)
Region %
India 39
South-eastern Asia 35
Western Asia & Northern Africa 35
Sub-Saharan Africa 30
Western Europe & Offshoots 29
Latin America & Caribbean 26
Eastern Europe 23
India’s rank among the 24 PALS countries shown: 3 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

IV.3 Rule of law, tolerance and authoritarian values

What is shown. PALS questions close to the liberal and authoritarian questions of II.2. For rule of law and tolerance, each cell is the % leaning to the right-hand statement (the less liberal side). For the six authoritarianism statements, each cell is the % who agree (4–6); three statements are worded the other way round, so agreeing is the less authoritarian answer (marked “reversed”).

pals_qtable(tribble(
  ~Code, ~Question, ~`Response format`, ~`Cell shows`,
  "B02_a", "Should the government always obey the laws and court decisions, or not be bound by them so it can work unhindered?", "1 always obey ... 6 not bound at all", "% 4–6 (not bound)",
  "B02_b", "Should laws be enforced equally for everyone, or differently for different people under certain circumstances?", "1 equally ... 6 differently", "% 4–6 (differently)",
  "B02_c", "Should every human have the same basic rights in all countries, or should each society decide?", "1 same rights everywhere ... 6 each society decides", "% 4–6 (society decides)",
  "B06", "Should society accept all people equally, or decide whom to accept?", "1 accept all equally ... 6 society decides", "% 4–6 (society decides)",
  "D07_a", "It's great that many young people today are prepared to defy authority (reversed)", "1 fully disagree ... 6 fully agree", "% agree (4–6)",
  "D07_b", "What our country needs most is discipline, with everyone following our leaders in unity", "1 fully disagree ... 6 fully agree", "% agree (4–6)",
  "D07_c", "The old-fashioned ways and values still show the best way to live", "1 fully disagree ... 6 fully agree", "% agree (4–6)",
  "D07_d", "There is nothing wrong with premarital sexual intercourse (reversed)", "1 fully disagree ... 6 fully agree", "% agree (4–6)",
  "D07_e", "Our society does not need tougher government and stricter laws (reversed)", "1 fully disagree ... 6 fully agree", "% agree (4–6)",
  "D07_f", "We have to crack down harder on troublemakers to preserve law and order", "1 fully disagree ... 6 fully agree", "% agree (4–6)"))
PALS questions used in this section
Code Question Response format Cell shows
B02_a Should the government always obey the laws and court decisions, or not be bound by them so it can work unhindered? 1 always obey … 6 not bound at all % 4–6 (not bound)
B02_b Should laws be enforced equally for everyone, or differently for different people under certain circumstances? 1 equally … 6 differently % 4–6 (differently)
B02_c Should every human have the same basic rights in all countries, or should each society decide? 1 same rights everywhere … 6 each society decides % 4–6 (society decides)
B06 Should society accept all people equally, or decide whom to accept? 1 accept all equally … 6 society decides % 4–6 (society decides)
D07_a It’s great that many young people today are prepared to defy authority (reversed) 1 fully disagree … 6 fully agree % agree (4–6)
D07_b What our country needs most is discipline, with everyone following our leaders in unity 1 fully disagree … 6 fully agree % agree (4–6)
D07_c The old-fashioned ways and values still show the best way to live 1 fully disagree … 6 fully agree % agree (4–6)
D07_d There is nothing wrong with premarital sexual intercourse (reversed) 1 fully disagree … 6 fully agree % agree (4–6)
D07_e Our society does not need tougher government and stricter laws (reversed) 1 fully disagree … 6 fully agree % agree (4–6)
D07_f We have to crack down harder on troublemakers to preserve law and order 1 fully disagree … 6 fully agree % agree (4–6)
pals_table(c(B02_a = "Government should not be bound by laws and courts",
             B02_b = "Laws can be enforced differently for different people",
             B02_c = "Each society should decide which rights people have",
             B06   = "Society should decide whom to accept"),
           caption = "Rule of law and tolerance")

Rule of law and tolerance

Government should not be bound by laws and courts

Government should not be bound by laws and courts (%)
Region %
India 34
South-eastern Asia 27
Western Asia & Northern Africa 22
Latin America & Caribbean 22
Western Europe & Offshoots 19
Sub-Saharan Africa 19
Eastern Europe 10
India’s rank among the 24 PALS countries shown: 1 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Laws can be enforced differently for different people

Laws can be enforced differently for different people (%)
Region %
India 37
South-eastern Asia 30
Latin America & Caribbean 22
Sub-Saharan Africa 22
Western Europe & Offshoots 21
Western Asia & Northern Africa 16
Eastern Europe 14
India’s rank among the 24 PALS countries shown: 1 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Each society should decide which rights people have

Each society should decide which rights people have (%)
Region %
India 41
Sub-Saharan Africa 40
Eastern Europe 37
South-eastern Asia 32
Western Europe & Offshoots 27
Western Asia & Northern Africa 25
Latin America & Caribbean 21
India’s rank among the 24 PALS countries shown: 3 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Society should decide whom to accept

Society should decide whom to accept (%)
Region %
Sub-Saharan Africa 32
India 29
South-eastern Asia 27
Western Europe & Offshoots 24
Eastern Europe 22
Western Asia & Northern Africa 20
Latin America & Caribbean 16
India’s rank among the 24 PALS countries shown: 6 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.
pals_table(c(D07_a = "Young people defying authority is great (reversed)",
             D07_b = "Discipline, everyone following our leaders in unity",
             D07_c = "Old-fashioned ways and values are best",
             D07_d = "Nothing wrong with premarital sex (reversed)",
             D07_e = "No need for tougher government and stricter laws (reversed)",
             D07_f = "Crack down harder on troublemakers"),
           caption = "Authoritarian values")

Authoritarian values

Young people defying authority is great (reversed)

Young people defying authority is great (reversed) (%)
Region %
Eastern Europe 70
India 70
South-eastern Asia 63
Western Asia & Northern Africa 60
Sub-Saharan Africa 57
Latin America & Caribbean 54
Western Europe & Offshoots 51
India’s rank among the 24 PALS countries shown: 4 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Discipline, everyone following our leaders in unity

Discipline, everyone following our leaders in unity (%)
Region %
Sub-Saharan Africa 78
South-eastern Asia 75
India 73
Western Europe & Offshoots 54
Latin America & Caribbean 52
Western Asia & Northern Africa 52
Eastern Europe 41
India’s rank among the 24 PALS countries shown: 4 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Old-fashioned ways and values are best

Old-fashioned ways and values are best (%)
Region %
India 72
Sub-Saharan Africa 69
South-eastern Asia 62
Western Europe & Offshoots 60
Eastern Europe 60
Western Asia & Northern Africa 56
Latin America & Caribbean 55
India’s rank among the 24 PALS countries shown: 3 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Nothing wrong with premarital sex (reversed)

Nothing wrong with premarital sex (reversed) (%)
Region %
Western Europe & Offshoots 86
Eastern Europe 77
Latin America & Caribbean 71
South-eastern Asia 50
India 43
Sub-Saharan Africa 34
Western Asia & Northern Africa 29
India’s rank among the 24 PALS countries shown: 19 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

No need for tougher government and stricter laws (reversed)

No need for tougher government and stricter laws (reversed) (%)
Region %
India 60
Eastern Europe 59
Western Europe & Offshoots 58
Sub-Saharan Africa 58
South-eastern Asia 56
Western Asia & Northern Africa 52
Latin America & Caribbean 49
India’s rank among the 24 PALS countries shown: 10 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Crack down harder on troublemakers

Crack down harder on troublemakers (%)
Region %
South-eastern Asia 84
Western Asia & Northern Africa 79
India 77
Sub-Saharan Africa 76
Western Europe & Offshoots 76
Latin America & Caribbean 73
Eastern Europe 64
India’s rank among the 24 PALS countries shown: 10 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

IV.4 State support

What is shown. PALS questions close to the state-support questions of II.3: whether society should provide public goods for everyone, and whether state ownership should grow. Each cell is the % who agree (4–6) or lean to state ownership (4–6).

pals_qtable(tribble(
  ~Code, ~Question, ~`Response format`, ~`Cell shows`,
  "C04_a–e", "Society should provide, even if this costs everyone: school education without tuition fees / free basic healthcare / welfare benefits for everyone in need / support for disadvantaged groups such as minorities or the poor / support for women to foster gender equality", "1 fully disagree ... 6 fully agree", "% agree (4–6)",
  "B03_a", "What should be increased: private or state ownership of businesses and industry?", "1 private ... 6 state", "% 4–6 (state)"))
PALS questions used in this section
Code Question Response format Cell shows
C04_a–e Society should provide, even if this costs everyone: school education without tuition fees / free basic healthcare / welfare benefits for everyone in need / support for disadvantaged groups such as minorities or the poor / support for women to foster gender equality 1 fully disagree … 6 fully agree % agree (4–6)
B03_a What should be increased: private or state ownership of businesses and industry? 1 private … 6 state % 4–6 (state)
pals_table(c(C04_a = "Free education", C04_b = "Free healthcare", C04_c = "Welfare benefits",
             C04_d = "Support for disadvantaged groups", C04_e = "Support for women",
             B03_a = "State ownership should be increased"),
           caption = "State support questions")

State support questions

Free education

Free education (%)
Region %
Eastern Europe 93
Western Europe & Offshoots 90
Western Asia & Northern Africa 88
Latin America & Caribbean 85
South-eastern Asia 82
Sub-Saharan Africa 80
India 78
India’s rank among the 24 PALS countries shown: 22 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Free healthcare

Free healthcare (%)
Region %
Eastern Europe 92
Western Europe & Offshoots 89
Western Asia & Northern Africa 89
Latin America & Caribbean 86
South-eastern Asia 85
Sub-Saharan Africa 84
India 79
India’s rank among the 24 PALS countries shown: 22 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Welfare benefits

Welfare benefits (%)
Region %
Western Asia & Northern Africa 90
South-eastern Asia 88
Sub-Saharan Africa 85
Western Europe & Offshoots 83
Latin America & Caribbean 83
Eastern Europe 82
India 79
India’s rank among the 24 PALS countries shown: 19 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Support for disadvantaged groups

Support for disadvantaged groups (%)
Region %
South-eastern Asia 90
Western Asia & Northern Africa 86
Sub-Saharan Africa 85
Western Europe & Offshoots 85
Latin America & Caribbean 84
Eastern Europe 83
India 75
India’s rank among the 24 PALS countries shown: 24 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Support for women

Support for women (%)
Region %
South-eastern Asia 84
Western Europe & Offshoots 82
Latin America & Caribbean 82
Sub-Saharan Africa 78
Eastern Europe 78
India 77
Western Asia & Northern Africa 70
India’s rank among the 24 PALS countries shown: 18 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

State ownership should be increased

State ownership should be increased (%)
Region %
Western Asia & Northern Africa 55
Sub-Saharan Africa 49
India 47
Eastern Europe 46
South-eastern Asia 45
Western Europe & Offshoots 44
Latin America & Caribbean 43
India’s rank among the 24 PALS countries shown: 9 (1 = highest).
Cells: % of respondents (weighted, w2). India: its own estimate. Regions: mean of country estimates.

Part V. India across both surveys

This part puts the two surveys side by side. It uses bridge questions: questions asked in both the WVS (Wave 7) and PALS (2022) that measure the same thing, sometimes with identical wording. Each is grouped under the measures used in Part II.

  • Countries: only the 15 countries surveyed in both (Japan and South Korea are left out, as in the rest of the report). India is ranked against the other 14 in each survey, so the two ranks can be compared directly.
  • Ranks, not levels: the surveys use different scales (4- and 10-point in the WVS, 6-point in PALS), so the percentages are not directly comparable across surveys. India’s rank is. Rank 1 = the highest share among the 15 countries.
  • Timing and mode: WVS Wave 7 was fielded in 2017–2023 (India 2023), PALS in 2022. All WVS interviews here are face to face; in PALS India, Nigeria, Peru and Tunisia were face to face and the rest online.
  • Weights: each survey’s own weight within a country (WVS survey weight; PALS w2). Adults only.
shared <- c("India", "Australia", "Brazil", "Chile", "Germany", "Indonesia", "Mexico", "Nigeria", "Peru",
            "Russia", "Singapore", "Tunisia", "Turkey", "United Kingdom", "United States")

# WVS Wave 7: one yes/no per bridge question
wvs7 <- wvs_all |>
  filter(wave == "W7", country_name %in% shared, is.na(age) | age >= 18) |>
  mutate(
    b_prices    = case_when(pm_goals1 == 3 | pm_goals2 == 3 ~ 1, pm_goals1 %in% 1:4 ~ 0),
    b_say       = case_when(pm_goals1 == 2 | pm_goals2 == 2 ~ 1, pm_goals1 %in% 1:4 ~ 0),
    b_speech    = case_when(pm_goals1 == 4 | pm_goals2 == 4 ~ 1, pm_goals1 %in% 1:4 ~ 0),
    b_order     = case_when(pm_goals1 == 1 | pm_goals2 == 1 ~ 1, pm_goals1 %in% 1:4 ~ 0),
    b_strong    = case_when(reg_strongleader %in% 1:2 ~ 1, reg_strongleader %in% 3:4 ~ 0),
    b_experts   = case_when(reg_experts %in% 1:2 ~ 1, reg_experts %in% 3:4 ~ 0),
    b_army      = case_when(reg_army %in% 1:2 ~ 1, reg_army %in% 3:4 ~ 0),
    b_religious = case_when(dess_religious %in% 7:10 ~ 1, dess_religious %in% 1:6 ~ 0),
    b_authority = case_when(fut_authority == 1 ~ 1, fut_authority %in% 2:3 ~ 0),
    b_rulelaw   = case_when(dess_civilrights %in% 7:10 ~ 1, dess_civilrights %in% 1:6 ~ 0),
    b_menjobs   = case_when(jobs_men == 3 ~ 1, jobs_men %in% 1:2 ~ 0),   # disagrees: men first
    b_stateown  = case_when(econ_ownership %in% 6:10 ~ 1, econ_ownership %in% 1:5 ~ 0),
    b_welfare   = case_when(econ_govresp %in% 1:4 ~ 1, econ_govresp %in% 5:10 ~ 0),
    b_luck      = case_when(econ_hardwork %in% 6:10 ~ 1, econ_hardwork %in% 1:5 ~ 0),
    b_equalinc  = case_when(econ_income %in% 1:4 ~ 1, econ_income %in% 5:10 ~ 0),
    b_compet    = case_when(econ_competition %in% 6:10 ~ 1, econ_competition %in% 1:5 ~ 0),
    b_immig     = case_when(immig_policy %in% 3:4 ~ 1, immig_policy %in% 1:2 ~ 0),
    b_satis     = case_when(sat_polsystem %in% 6:10 ~ 1, sat_polsystem %in% 1:5 ~ 0),
    b_video     = case_when(surv_video %in% 1:2 ~ 1, surv_video %in% 3:4 ~ 0),
    b_internet  = case_when(surv_email %in% 1:2 ~ 1, surv_email %in% 3:4 ~ 0),
    b_vote      = case_when(vote_national %in% 1:2 ~ 1, vote_national == 3 ~ 0),
    b_saypol    = case_when(dess_elections %in% 7:10 ~ 1, dess_elections %in% 1:6 ~ 0),
    b_fairlaw   = case_when(dess_civilrights %in% 7:10 ~ 1, dess_civilrights %in% 1:6 ~ 0),
    b_womensay  = case_when(dess_women %in% 7:10 ~ 1, dess_women %in% 1:6 ~ 0),
    b_womenlead = case_when(gen_menleaders %in% 3:4 ~ 1, gen_menleaders %in% 1:2 ~ 0),   # disagrees: men better leaders
    b_bigint    = case_when(ei_richbuy %in% 1:2 ~ 1, ei_richbuy %in% 3:4 ~ 0),           # rich buy elections often
    b_offnot    = case_when(conf_govt %in% 3:4 ~ 1, conf_govt %in% 1:2 ~ 0),             # little confidence in government
    b_taxrich   = case_when(dess_taxrich %in% 7:10 ~ 1, dess_taxrich %in% 1:6 ~ 0),
    b_nationals = case_when(jobs_nationals == 1 ~ 1, jobs_nationals %in% 2:3 ~ 0))

# PALS 2022: the matching yes/no
p_side <- function(x, side) as.numeric(zap_labels(x)) |> (\(v) case_when(v %in% side ~ 1, v %in% 1:6 ~ 0))()
pals5 <- pals |>
  mutate(country_name = recode(country_name, "Türkiye" = "Turkey")) |>
  filter(country_name %in% shared) |>
  mutate(
    b_prices    = as.numeric(zap_labels(D06_c)), b_say = as.numeric(zap_labels(D06_b)),
    b_speech    = as.numeric(zap_labels(D06_d)), b_order = as.numeric(zap_labels(D06_a)),
    across(c(b_prices, b_say, b_speech, b_order), ~ ifelse(.x %in% 0:1, .x, NA)),
    b_strong    = p_side(B01_a, 4:6), b_experts = p_side(B01_c, 4:6), b_army = p_side(B01_e, 4:6),
    b_religious = p_side(B01_d, 4:6), b_authority = p_side(D07_b, 4:6),
    b_rulelaw   = p_side(B02_a, 1:3), b_menjobs = p_side(C05_a, 1:3),
    b_stateown  = p_side(B03_a, 4:6), b_welfare = p_side(C04_c, 4:6),
    b_luck      = p_side(B03_c, 4:6), b_nationals = p_side(C05_b, 4:6),
    b_equalinc  = ifelse(as.numeric(zap_labels(D01_a3)) %in% 0:1, as.numeric(zap_labels(D01_a3)), NA),
    b_taxrich   = p_side(C04_d, 4:6),
    b_compet    = p_side(B03_b, 4:6),
    b_immig     = p_side(C01_d, 4:6),
    b_satis     = p_side(D02_a, 4:6),
    # D09_a is a split-sample experiment: half asked about cameras, half about phone/internet monitoring
    b_video     = ifelse(as.numeric(zap_labels(D09_a1)) == 1, p_side(D09_a, 4:6), NA),
    b_internet  = ifelse(as.numeric(zap_labels(D09_a1)) == 2, p_side(D09_a, 4:6), NA),
    b_vote      = case_when(as.numeric(zap_labels(E01)) == 1 ~ 1, as.numeric(zap_labels(E01)) == 2 ~ 0),
    # A03 items were each shown to a random part of the sample (96 = not shown)
    across(c(A03_a3, A03_c2, A03_b5), ~ ifelse(as.numeric(zap_labels(.x)) %in% 0:1, as.numeric(zap_labels(.x)), NA), .names = "{.col}_01"),
    b_saypol    = A03_a3_01, b_fairlaw = A03_c2_01, b_womensay = A03_b5_01,
    b_womenlead = p_side(C06_a, 4:6),
    b_bigint    = p_side(D03_d, 4:6),
    b_offnot    = p_side(D03_e, 1:3))

bridges <- tribble(
  ~measure, ~var, ~wvs_q, ~pals_q,
  "Governance (delivery)", "b_prices", "Fighting rising prices among the top two aims (Q154–155)", "Same question (D06_c)",
  "Accountability", "b_say", "More say in important government decisions among the top two aims (Q154–155)", "Same question (D06_b)",
  "Accountability", "b_speech", "Protecting freedom of speech among the top two aims (Q154–155)", "Same question (D06_d)",
  "Accountability", "b_vote", "Votes in national elections always or usually (Q222)", "Voted in the last national election (E01; those eligible)",
  "Accountability: perceived capture", "b_bigint", "Rich people buy elections, very or fairly often (Q230)", "The government is run by a few big interests looking out for themselves (D03_d, agree 4–6)",
  "Accountability: perceived capture", "b_offnot", "Not very much or no confidence in the government (Q71)", "Disagrees that government officials use their power to improve people's lives (D03_e, 1–3)",
  "Satisfaction with the political system", "b_satis", "Satisfied with how the political system is functioning (Q252, 6–10)", "Satisfied with the political system (D02_a, 4–6)",
  "Authoritarian side", "b_order", "Maintaining order among the top two aims (Q154–155)", "Same question (D06_a)",
  "Authoritarian side", "b_strong", "A strong leader who does not bother with parliament and elections is good (Q235)", "Strong political leaders, not citizens, should decide (B01_a, 4–6)",
  "Authoritarian side", "b_experts", "Experts, not government, making decisions is good (Q236)", "Established experts, not citizens, should decide (B01_c, 4–6)",
  "Authoritarian side", "b_army", "Army rule is good (Q237)", "The military, not citizens, should decide (B01_e, 4–6)",
  "Authoritarian side", "b_religious", "Religious authorities interpreting the laws is essential to democracy (Q242, 7–10)", "Religious leaders, not citizens, should decide (B01_d, 4–6)",
  "Authoritarian side", "b_authority", "Greater respect for authority would be good (Q45)", "Discipline, everyone following our leaders in unity (D07_b, agree 4–6)",
  "Security over freedom", "b_video", "Government should have the right to keep people under video surveillance in public areas (Q196, should 1–2)", "Accepts more camera monitoring of public places against terrorism (D09_a, half the sample, 4–6)",
  "Security over freedom", "b_internet", "Government should have the right to monitor e-mails and information on the internet (Q197, should 1–2)", "Accepts monitoring of everyone's phone calls and internet activity without a warrant against terrorism (D09_a, other half, 4–6)",
  "Liberal side", "b_saypol", "Free elections are essential to democracy (Q243, 7–10)", "Having a say in politics is necessary to live freely (A03_a3, picked)",
  "Liberal side", "b_fairlaw", "Civil rights protecting people from the state are essential to democracy (Q246, 7–10)", "A fair legal system is necessary to live freely (A03_c2, picked; part of the sample)",
  "Liberal side", "b_womensay", "Women having the same rights as men is essential to democracy (Q249, 7–10)", "More say for women is necessary to live freely (A03_b5, picked; part of the sample)",
  "Liberal side", "b_womenlead", "Disagrees: men make better political leaders than women (Q29)", "Women should be preferred for leadership positions until equal representation (C06_a, agree 4–6)",
  "Liberal side", "b_rulelaw", "Civil rights protecting people from the state are essential to democracy (Q246, 7–10)", "Government should obey the laws and courts (B02_a, 1–3)",
  "Liberal side", "b_menjobs", "Disagrees: when jobs are scarce, men have more right to a job than women (Q33)", "Disagrees: when jobs are scarce, men should be preferred (C05_a, 1–3)",
  "State support", "b_stateown", "State ownership of business should be increased (Q107, 6–10)", "Same question (B03_a, 4–6)",
  "State support", "b_compet", "Competition is harmful (Q109, 6–10)", "Same question (B03_b, 4–6)",
  "State support", "b_welfare", "Government should take more responsibility to provide for everyone (Q108, 1–4)", "Society should provide welfare benefits for everyone in need (C04_c, agree 4–6)",
  "Inequality: redistribution", "b_equalinc", "Incomes should be made more equal (Q106, 1–4)", "The gap between the rich and the poor is a major threat (D01_a3, picked)",
  "Inequality: redistribution", "b_taxrich", "Governments taxing the rich and subsidising the poor is essential to democracy (Q241, 7–10)", "Society should support disadvantaged groups, like minorities or the poor (C04_d, agree 4–6)",
  "Inequality: exclusion", "b_luck", "Success is more a matter of luck and connections than hard work (Q110, 6–10)", "Wealth and status should be based on ancestry and contacts (B03_c, 4–6)",
  "Inequality: exclusion", "b_immig", "Immigration policy: strict limits or prohibit people coming to work (Q130)", "The country should have the right to reject immigrants (C01_d, agree 4–6)",
  "Inequality: exclusion", "b_nationals", "When jobs are scarce, employers should prefer nationals over immigrants (Q34, agree)", "When jobs are scarce, citizens should be preferred over migrants (C05_b, agree 4–6)")

# country % for each bridge question, in each survey
bridge_est <- function(d, wcol) {
  imap_dfr(setNames(bridges$var, bridges$var), function(v, nm) {
    d |>
      filter(!is.na(.data[[v]])) |>
      group_by(country_name) |>
      summarise(est = 100 * weighted.mean(.data[[v]], .data[[wcol]]), .groups = "drop") |>
      mutate(var = v)
  })
}
b_wvs  <- bridge_est(wvs7, "weight") |> mutate(survey = "WVS")
b_pals <- bridge_est(pals5, "w2") |> mutate(survey = "PALS")
b_all  <- bind_rows(b_wvs, b_pals) |>
  group_by(survey, var) |>
  mutate(rank = rank(-est, ties.method = "min"), N = n()) |>
  ungroup()

# ---- full-scale versions and bridge correlations (used in Parts V and VI) ----
pf <- function(x, rev = FALSE) {           # PALS 1-6, drop "prefer not to say" / "don't know"
  v <- as.numeric(zap_labels(x)); v[!v %in% 1:6] <- NA
  if (rev) 7 - v else v
}
p01 <- function(x) { v <- as.numeric(zap_labels(x)); ifelse(v %in% 0:1, v, NA) }

wvs_full <- wvs7 |>
  transmute(country_name, w = weight,
    b_prices = b_prices, b_say = b_say, b_speech = b_speech, b_order = b_order,
    b_vote = 4 - vote_national, b_satis = sat_polsystem,
    b_bigint = 5 - ei_richbuy, b_offnot = conf_govt,
    b_strong = 5 - reg_strongleader, b_experts = 5 - reg_experts, b_army = 5 - reg_army,
    b_religious = dess_religious, b_authority = 4 - fut_authority,
    b_video = 5 - surv_video, b_internet = 5 - surv_email,
    b_saypol = dess_elections, b_fairlaw = dess_civilrights, b_womensay = dess_women,
    b_womenlead = gen_menleaders, b_rulelaw = dess_civilrights, b_menjobs = jobs_men,
    b_stateown = econ_ownership, b_compet = econ_competition, b_welfare = 11 - econ_govresp,
    b_equalinc = 11 - econ_income, b_taxrich = dess_taxrich,
    b_luck = econ_hardwork, b_immig = immig_policy, b_nationals = 4 - jobs_nationals)

pals_full <- pals5 |>
  transmute(country_name, w = w2,
    b_prices = b_prices, b_say = b_say, b_speech = b_speech, b_order = b_order,
    b_vote = b_vote, b_satis = pf(D02_a),
    b_bigint = pf(D03_d), b_offnot = pf(D03_e, rev = TRUE),
    b_strong = pf(B01_a), b_experts = pf(B01_c), b_army = pf(B01_e),
    b_religious = pf(B01_d), b_authority = pf(D07_b),
    b_video = ifelse(as.numeric(zap_labels(D09_a1)) == 1, pf(D09_a), NA),
    b_internet = ifelse(as.numeric(zap_labels(D09_a1)) == 2, pf(D09_a), NA),
    b_saypol = p01(A03_a3), b_fairlaw = p01(A03_c2), b_womensay = p01(A03_b5),
    b_womenlead = pf(C06_a), b_rulelaw = pf(B02_a, rev = TRUE), b_menjobs = pf(C05_a, rev = TRUE),
    b_stateown = pf(B03_a), b_compet = pf(B03_b), b_welfare = pf(C04_c),
    b_equalinc = p01(D01_a3), b_taxrich = pf(C04_d),
    b_luck = pf(B03_c), b_immig = pf(C01_d), b_nationals = pf(C05_b))

wmean <- function(x, w) { ok <- !is.na(x) & !is.na(w); sum(x[ok] * w[ok]) / sum(w[ok]) }
wvar  <- function(x, w) { ok <- !is.na(x) & !is.na(w); m <- wmean(x, w); sum(w[ok] * (x[ok] - m)^2) / sum(w[ok]) }

dist_stats <- function(d, survey) {
  map_dfr(bridges$var, function(v) {
    x <- d |> select(country_name, w, val = all_of(v)) |> filter(!is.na(val))
    cm <- x |> group_by(country_name) |> summarise(m = wmean(val, w), .groups = "drop")
    if (!"India" %in% cm$country_name) return(NULL)
    oth <- cm |> filter(country_name != "India")
    ind <- cm$m[cm$country_name == "India"]
    # individual level: India vs the other countries, each country counting equally
    xi <- x |> filter(country_name == "India")
    xo <- x |> filter(country_name != "India") |> group_by(country_name) |> mutate(w = w / sum(w)) |> ungroup()
    dd <- (wmean(xi$val, xi$w) - wmean(xo$val, xo$w)) / sqrt((wvar(xi$val, xi$w) + wvar(xo$val, xo$w)) / 2)
    tibble(var = v, survey = survey,
           rank = rank(-cm$m, ties.method = "min")[cm$country_name == "India"], N = nrow(cm),
           z = (ind - mean(oth$m)) / sd(oth$m), d = dd)
  })
}
country_means <- function(d) {
  d |> pivot_longer(-c(country_name, w), names_to = "var", values_to = "val") |>
    filter(!is.na(val)) |> group_by(var, country_name) |>
    summarise(m = wmean(val, w), .groups = "drop")
}
cm_wvs  <- country_means(wvs_full)
cm_pals <- country_means(pals_full)
dist <- bind_rows(dist_stats(wvs_full, "WVS"), dist_stats(pals_full, "PALS"))
rho <- inner_join(cm_wvs, cm_pals, by = c("var", "country_name"), suffix = c("_w", "_p")) |>
  group_by(var) |>
  summarise(rho = cor(m_w, m_p, method = "spearman"), n = n(), .groups = "drop")
short <- c(b_prices = "Fighting rising prices (aim)", b_say = "More say in government (aim)",
           b_speech = "Free speech (aim)", b_vote = "Voting", b_bigint = "Rich buy elections / big interests run government",
           b_offnot = "Little confidence in government / officials don't help", b_satis = "Satisfied with the political system",
           b_order = "Maintaining order (aim)", b_strong = "Strong leader", b_experts = "Experts", b_army = "Army / military",
           b_religious = "Religious authority", b_authority = "Respect for authority / discipline",
           b_video = "Video / camera surveillance", b_internet = "Internet / phone monitoring",
           b_saypol = "Free elections / say in politics", b_fairlaw = "Civil rights / fair legal system",
           b_womensay = "Women's equal rights / more say for women", b_womenlead = "Women as leaders",
           b_rulelaw = "Civil rights / government bound by courts", b_menjobs = "Rejects men first for jobs",
           b_stateown = "State ownership", b_compet = "Competition is harmful", b_welfare = "Government responsibility / welfare",
           b_equalinc = "Equal incomes / rich-poor gap a threat", b_taxrich = "Tax the rich / support the disadvantaged",
           b_luck = "Luck and connections / ancestry", b_immig = "Restrict / reject immigrants", b_nationals = "Nationals first for jobs")
bridge_strength <- function(r) case_when(r >= 0.6 ~ "Strong", r >= 0.4 ~ "Moderate", TRUE ~ "—")

V.1 The 15 countries

wvs7 |>
  group_by(country_name) |>
  summarise(`WVS year` = paste(sort(unique(survey_year)), collapse = "/"), `WVS respondents` = n(), .groups = "drop") |>
  left_join(pals5 |> count(country_name, name = "PALS respondents"), by = "country_name") |>
  mutate(`PALS mode` = ifelse(country_name %in% pals_capi, "face to face", "online"),
         Region = unname(pals_region_of[recode(country_name, "Turkey" = "Türkiye", "Russia" = "Russian Federation",
                                                "United Kingdom" = "United Kingdom of Great Britain and Northern Ireland",
                                                "United States" = "United States of America")])) |>
  arrange(factor(Region, wb_regions), country_name) |>
  select(Country = country_name, Region, `WVS year`, `WVS respondents`, `PALS respondents`, `PALS mode`) |>
  kable(caption = "Countries in both surveys (adults)", format.args = list(big.mark = ",")) |>
  styled()
Countries in both surveys (adults)
Country Region WVS year WVS respondents PALS respondents PALS mode
India India 2023 1,371 2,822 face to face
Indonesia South-eastern Asia 2018 3,200 2,001 online
Singapore South-eastern Asia 2020 2,012 2,010 online
Tunisia Western Asia & Northern Africa 2019 1,208 2,012 face to face
Turkey Western Asia & Northern Africa 2018 2,415 2,016 online
Nigeria Sub-Saharan Africa 2018 1,237 2,000 face to face
Brazil Latin America & Caribbean 2018 1,698 2,110 online
Chile Latin America & Caribbean 2018 1,000 2,005 online
Mexico Latin America & Caribbean 2018 1,741 2,160 online
Peru Latin America & Caribbean 2018 1,400 2,018 face to face
Russia Eastern Europe 2017 1,810 2,143 online
Australia Western Europe & Offshoots 2018 1,811 2,032 online
Germany Western Europe & Offshoots 2018 1,528 2,020 online
United Kingdom Western Europe & Offshoots 2022 2,609 2,007 online
United States Western Europe & Offshoots 2017 2,596 2,033 online

V.2 Bridge questions: India’s rank in each survey

What is shown. For each pair of questions: the share of Indians giving the answer described, and India’s rank among the 15 countries (1 = highest share), in WVS 2023 and in PALS 2022. Where the ranks are close, the two surveys agree about where India stands.

india_b <- b_all |> filter(country_name == "India") |>
  mutate(cell_pct = sprintf("%.0f", est), cell_rank = sprintf("%d of %d", rank, N)) |>
  select(var, survey, cell_pct, cell_rank) |>
  pivot_wider(names_from = survey, values_from = c(cell_pct, cell_rank))
bt <- bridges |>
  left_join(india_b, by = "var") |>
  left_join(rho, by = "var") |>
  mutate(strength = bridge_strength(rho)) |>
  select(measure, `WVS 2023 question` = wvs_q, `India %` = cell_pct_WVS, `India's rank` = cell_rank_WVS,
         `PALS 2022 question` = pals_q, `India % ` = cell_pct_PALS, `India's rank ` = cell_rank_PALS,
         `Bridge strength` = strength)
bt |>
  select(-measure) |>
  kable(caption = "Bridge questions: India's share and rank among the 15 countries", align = c("l", "c", "c", "l", "c", "c", "c")) |>
  styled() |>
  add_header_above(c("WVS Wave 7 (India 2023)" = 3, "PALS (2022)" = 3, " " = 1)) |>
  pack_rows(index = table(factor(bt$measure, unique(bt$measure)))) |>
  column_spec(c(1, 4), width = "19em") |>
  footnote(general = c("Rank 1 = highest share among the 15 countries in both surveys. Percentages are not comparable across the two surveys (different scales); ranks are.",
                       "Bridge strength: how similarly the two questions order the 15 countries (Spearman ρ, Part VI). Strong: 0.6 or more; Moderate: 0.4 to 0.6; —: below 0.4, not established as measuring the same thing."),
           general_title = "")
Bridge questions: India’s share and rank among the 15 countries
WVS Wave 7 (India 2023)
PALS (2022)
WVS 2023 question India % India’s rank PALS 2022 question India % India’s rank Bridge strength
Governance (delivery)
Fighting rising prices among the top two aims (Q154–155) 65 5 of 15 Same question (D06_c) 67 3 of 15 Strong
Accountability
More say in important government decisions among the top two aims (Q154–155) 41 13 of 15 Same question (D06_b) 37 12 of 15 —
Protecting freedom of speech among the top two aims (Q154–155) 18 13 of 15 Same question (D06_d) 30 12 of 15 Moderate
Votes in national elections always or usually (Q222) 94 6 of 15 Voted in the last national election (E01; those eligible) 88 7 of 15 Strong
Accountability: perceived capture
Rich people buy elections, very or fairly often (Q230) 76 3 of 15 The government is run by a few big interests looking out for themselves (D03_d, agree 4–6) 76 7 of 15 —
Not very much or no confidence in the government (Q71) 35 12 of 15 Disagrees that government officials use their power to improve people’s lives (D03_e, 1–3) 29 15 of 15 Moderate
Satisfaction with the political system
Satisfied with how the political system is functioning (Q252, 6–10) 66 3 of 15 Satisfied with the political system (D02_a, 4–6) 72 1 of 15 Strong
Authoritarian side
Maintaining order among the top two aims (Q154–155) 60 7 of 15 Same question (D06_a) 46 6 of 15 Moderate
A strong leader who does not bother with parliament and elections is good (Q235) 69 3 of 15 Strong political leaders, not citizens, should decide (B01_a, 4–6) 35 6 of 15 —
Experts, not government, making decisions is good (Q236) 73 3 of 15 Established experts, not citizens, should decide (B01_c, 4–6) 40 12 of 15 —
Army rule is good (Q237) 39 5 of 14 The military, not citizens, should decide (B01_e, 4–6) 39 3 of 15 —
Religious authorities interpreting the laws is essential to democracy (Q242, 7–10) 33 2 of 15 Religious leaders, not citizens, should decide (B01_d, 4–6) 35 3 of 15 —
Greater respect for authority would be good (Q45) 50 12 of 15 Discipline, everyone following our leaders in unity (D07_b, agree 4–6) 73 2 of 15 —
Security over freedom
Government should have the right to keep people under video surveillance in public areas (Q196, should 1–2) 84 1 of 15 Accepts more camera monitoring of public places against terrorism (D09_a, half the sample, 4–6) 82 2 of 15 —
Government should have the right to monitor e-mails and information on the internet (Q197, should 1–2) 60 2 of 15 Accepts monitoring of everyone’s phone calls and internet activity without a warrant against terrorism (D09_a, other half, 4–6) 72 1 of 15 Strong
Liberal side
Free elections are essential to democracy (Q243, 7–10) 79 5 of 15 Having a say in politics is necessary to live freely (A03_a3, picked) 40 13 of 15 —
Civil rights protecting people from the state are essential to democracy (Q246, 7–10) 73 4 of 15 A fair legal system is necessary to live freely (A03_c2, picked; part of the sample) 45 14 of 15 —
Women having the same rights as men is essential to democracy (Q249, 7–10) 77 8 of 15 More say for women is necessary to live freely (A03_b5, picked; part of the sample) 47 4 of 15 —
Disagrees: men make better political leaders than women (Q29) 45 11 of 15 Women should be preferred for leadership positions until equal representation (C06_a, agree 4–6) 74 1 of 15 —
Civil rights protecting people from the state are essential to democracy (Q246, 7–10) 73 4 of 15 Government should obey the laws and courts (B02_a, 1–3) 66 15 of 15 —
Disagrees: when jobs are scarce, men have more right to a job than women (Q33) 30 11 of 15 Disagrees: when jobs are scarce, men should be preferred (C05_a, 1–3) 33 15 of 15 Strong
State support
State ownership of business should be increased (Q107, 6–10) 63 4 of 15 Same question (B03_a, 4–6) 47 7 of 15 Moderate
Competition is harmful (Q109, 6–10) 45 1 of 15 Same question (B03_b, 4–6) 47 1 of 15 Moderate
Government should take more responsibility to provide for everyone (Q108, 1–4) 39 12 of 15 Society should provide welfare benefits for everyone in need (C04_c, agree 4–6) 79 13 of 15 Strong
Inequality: redistribution
Incomes should be made more equal (Q106, 1–4) 21 12 of 15 The gap between the rich and the poor is a major threat (D01_a3, picked) 64 6 of 15 —
Governments taxing the rich and subsidising the poor is essential to democracy (Q241, 7–10) 69 5 of 15 Society should support disadvantaged groups, like minorities or the poor (C04_d, agree 4–6) 75 15 of 15 —
Inequality: exclusion
Success is more a matter of luck and connections than hard work (Q110, 6–10) 42 3 of 15 Wealth and status should be based on ancestry and contacts (B03_c, 4–6) 32 1 of 15 —
Immigration policy: strict limits or prohibit people coming to work (Q130) 48 8 of 15 The country should have the right to reject immigrants (C01_d, agree 4–6) 76 4 of 15 —
When jobs are scarce, employers should prefer nationals over immigrants (Q34, agree) 74 7 of 15 When jobs are scarce, citizens should be preferred over migrants (C05_b, agree 4–6) 69 5 of 15 Strong
Rank 1 = highest share among the 15 countries in both surveys. Percentages are not comparable across the two surveys (different scales); ranks are.
Bridge strength: how similarly the two questions order the 15 countries (Spearman ρ, Part VI). Strong: 0.6 or more; Moderate: 0.4 to 0.6; —: below 0.4, not established as measuring the same thing.

V.3 Summary by measure

What is shown. For each measure, India’s average rank across its bridge questions, in each survey (1 = highest among the 15 countries; 8 = middle; 15 = lowest).

b_all |>
  filter(country_name == "India") |>
  left_join(select(bridges, var, measure), by = "var") |>
  group_by(measure, survey) |>
  summarise(r = mean(rank), k = n(), .groups = "drop") |>
  mutate(r = sprintf("%.1f", r)) |>
  pivot_wider(names_from = survey, values_from = r) |>
  mutate(measure = factor(measure, unique(bridges$measure))) |>
  arrange(measure) |>
  select(Measure = measure, `Bridge questions` = k, `India's average rank, WVS 2023` = WVS,
         `India's average rank, PALS 2022` = PALS) |>
  kable(caption = "India's average rank among the 15 countries, by measure", align = c("l", "c", "c", "c")) |>
  styled()
India’s average rank among the 15 countries, by measure
Measure Bridge questions India’s average rank, WVS 2023 India’s average rank, PALS 2022
Governance (delivery) 1 5.0 3.0
Accountability 3 10.7 10.3
Accountability: perceived capture 2 7.5 11.0
Satisfaction with the political system 1 3.0 1.0
Authoritarian side 6 5.3 5.3
Security over freedom 2 1.5 1.5
Liberal side 6 7.2 10.3
State support 3 5.7 7.0
Inequality: redistribution 2 8.5 10.5
Inequality: exclusion 3 6.0 3.3

V.4 India’s nearest countries

What is shown. For each measure, the three countries whose answers are closest to India’s across all of that measure’s bridge questions together (the smallest average gap in percentage points), in each survey.

nearest <- b_all |>
  left_join(select(bridges, var, measure), by = "var") |>
  group_by(survey, measure, var) |>
  mutate(india = est[country_name == "India"]) |>
  ungroup() |>
  filter(country_name != "India") |>
  group_by(survey, measure, country_name) |>
  summarise(gap = mean(abs(est - india)), .groups = "drop") |>
  group_by(survey, measure) |>
  slice_min(gap, n = 3, with_ties = FALSE) |>
  summarise(cell = paste0(country_name, " (", sprintf("%.0f", gap), ")", collapse = ", "), .groups = "drop") |>
  pivot_wider(names_from = survey, values_from = cell) |>
  mutate(measure = factor(measure, unique(bridges$measure))) |>
  arrange(measure)
nearest |>
  select(Measure = measure, `Nearest in WVS 2023` = WVS, `Nearest in PALS 2022` = PALS) |>
  kable(caption = "India's three nearest countries by measure (average gap in percentage points)") |>
  styled() |>
  footnote(general = "Gap: average absolute difference from India across the measure's bridge questions, within each survey.",
           general_title = "")
India’s three nearest countries by measure (average gap in percentage points)
Measure Nearest in WVS 2023 Nearest in PALS 2022
Governance (delivery) Turkey (0), United Kingdom (2), Brazil (6) Nigeria (2), Singapore (2), Peru (4)
Accountability Singapore (6), Russia (7), Peru (7) Peru (4), Chile (5), Singapore (5)
Accountability: perceived capture Nigeria (16), Indonesia (19), Russia (21) Indonesia (2), Australia (7), Singapore (7)
Satisfaction with the political system Germany (3), Turkey (5), Indonesia (6) Singapore (8), Germany (17), Indonesia (17)
Authoritarian side Mexico (7), Peru (9), Brazil (10) Nigeria (5), United States (6), Singapore (7)
Security over freedom Indonesia (8), Nigeria (11), Australia (16) Indonesia (6), Nigeria (7), United Kingdom (8)
Liberal side Russia (2), Indonesia (8), Turkey (8) Nigeria (13), Indonesia (14), United Kingdom (19)
State support Turkey (4), Indonesia (7), Mexico (9) Indonesia (9), Mexico (10), Chile (10)
Inequality: redistribution Russia (1), Indonesia (3), Tunisia (6) Mexico (6), Germany (6), Singapore (8)
Inequality: exclusion Nigeria (4), Brazil (5), Russia (9) Singapore (6), Indonesia (7), United Kingdom (8)
Gap: average absolute difference from India across the measure’s bridge questions, within each survey.

What this part shows.

  • On most measures the two surveys place India in the same position.
    • Accountability: near the bottom in both: 13th (WVS) and 12th (PALS) of 15 on choosing more say in government or free speech as a top aim.
    • Authoritarian side: in the top third in both (average rank 5.3 in each). India is 3rd and 6th on the strong leader, 5th and 3rd on the army, 2nd and 3rd on religious authority.
    • Governance (delivery): fighting rising prices is a top aim more often than in most countries (5th and 3rd).
    • Inequality, exclusion: India ranks high in both: success through luck and connections (3rd) or ancestry and contacts (1st), and jobs for nationals first (7th and 5th).
    • Inequality, redistribution: India sits in the middle to lower half in both (average rank 8.5 and 10.5). Few Indians want incomes made more equal (12th in WVS, after the 2023 fall), though many call taxing the rich essential (5th); in PALS the rich-poor gap is often seen as a major threat (6th), but India is last on society supporting disadvantaged groups (15th).
  • Security over freedom: India is at the very top in both surveys. It is 1st on giving the government the right to video surveillance (84%) and 2nd on monitoring e-mails and the internet (60%) in the WVS; in PALS it is 2nd on more cameras in public places (82%) and 1st on monitoring everyone’s phone calls and internet activity without a warrant (72%).
  • Satisfaction with the political system is among the highest: 3rd in the WVS and 1st in PALS.
  • The identical competition question gives the same answer: India is 1st in both on “competition is harmful” (45% and 47%).
  • Immigration: 8th in the WVS on wanting strict limits or a ban (48%), 4th in PALS on the country’s right to reject immigrants (76%). Voting: high turnout but mid-table (6th and 7th), since most of the 15 countries also report high turnout.
  • Accountability, perceived capture: Indians see elections as bought but trust the government. India is 3rd on “rich people buy elections” (76%) and 7th in PALS on “government run by a few big interests” (76%). Yet few Indians lack confidence in the government (12th) or deny that officials try to improve people’s lives (15th, last).
  • Liberal side, what democracy needs vs what freedom needs: in the WVS India ranks high on free elections (5th) and civil rights (4th) as essentials of democracy, but in PALS few Indians name a say in politics (13th) or a fair legal system (14th) as necessary for their own freedom. On women the pattern reverses: India is mid-table on women’s equal rights (8th) and rejecting “men are better leaders” (11th) in the WVS, but 4th on more say for women and 1st on preferring women for leadership in PALS.
  • The liberal side is where the surveys differ. In the WVS India is 4th on rating civil rights as essential to democracy; in PALS it is last (15th) on whether government must obey the laws and courts. Rejecting “men first for scarce jobs” puts India 11th (WVS) and 15th (PALS). The WVS asks about democracy in the abstract; PALS asks about concrete trade-offs, where India ranks least liberal of all 15 countries.
  • Two pairs diverge because the questions differ: experts (3rd in WVS on “experts deciding is good”, 12th in PALS on “experts, not citizens, should decide”) and authority (12th on “more respect for authority”, 2nd on “discipline, following our leaders”).
  • India’s nearest countries are mostly Nigeria, Turkey, Peru, Singapore, Indonesia and Russia, depending on the measure; Western countries appear only on single measures. There is no fixed peer group.
  • How strong each pair is, and how far India is from the others, is measured in Part VI.
  • Caution: most WVS surveys here date from 2017–2020, India’s from 2023 and PALS from 2022, and PALS interviewed most countries online. Ranks are robust to the different scales, but not to these differences.

Part VI. How far is India from the others?

Part V places India by rank on each bridge question. A rank says where India stands, but not how far it is from the others. This part measures that distance, using each question’s full scale (for example the whole 1–10 or 1–6 scale) rather than the share above a cut-off. Each question is turned round where needed so that a higher value always means the same thing as in Part V (for example, more support for a strong leader, or more acceptance of surveillance).

  • Rank: India’s position among the 15 countries on the full-scale mean (1 = highest).
  • z-score: how far India’s mean is from the average of the other 14 countries, in units of their spread (standard deviation). About 0 = typical; +1 or −1 = clearly above or below; beyond ±2 = an outlier among these countries.
  • Effect size (d): the difference between Indian respondents and the respondents of the other 14 countries (each country counting equally), divided by the spread among individuals. Conventional reading: 0.2 small, 0.5 medium, 0.8 large.
  • Bridge correlation (ρ): the rank correlation between the WVS and PALS country means across the 15 countries. Each survey’s questions are ordered separately, so different wording and scales do not matter: the test is whether the two questions put the countries in the same order. Strong: 0.6 or more; Moderate: 0.4 to 0.6; —: below 0.4, not established (with 15 countries, values below about 0.5 cannot be told apart from zero). A weak pair can reflect different attitudes, real change between the survey dates, or differences in mode.
  • All figures are within each survey, weighted with each survey’s own weight. Questions asked as a pick from a list (the aims, “necessary to live freely”, the rich-poor gap, voting) have no longer scale, so their full scale is the yes/no answer itself.

How to use them together. Rank shows where India stands; z shows how far it stands from the other countries; d shows how much Indians differ as people. z is usually larger than d, because country averages bunch together while individuals differ a lot within every country.

Pattern Meaning
High z, high d India is genuinely distinctive, as a country and in its people
High z, modest d India stands out among countries, but individuals overlap a lot
Low z, low d India is typical; its rank may rest on small gaps

VI.1 India’s distance on each bridge question

What is shown. For each pair: India’s rank, z-score and effect size (d) in each survey, and the correlation (ρ) between the two surveys’ country means. Positive z and d mean India is above the other countries, in the direction described in Part V.

dt <- dist |>
  mutate(cell_r = sprintf("%d of %d", rank, N), cell_z = sprintf("%+.1f", z), cell_d = sprintf("%+.2f", d)) |>
  select(var, survey, cell_r, cell_z, cell_d) |>
  pivot_wider(names_from = survey, values_from = c(cell_r, cell_z, cell_d)) |>
  left_join(rho, by = "var") |>
  right_join(select(bridges, measure, var), by = "var") |>
  mutate(Question = short[var], strength = bridge_strength(rho), rho = sprintf("%.2f", rho)) |>
  select(measure, Question, cell_r_WVS, cell_z_WVS, cell_d_WVS, cell_r_PALS, cell_z_PALS, cell_d_PALS, rho, strength)
dt |>
  select(-measure) |>
  kable(col.names = c("Question pair", "Rank", "z", "d", "Rank", "z", "d", "ρ", "Strength"),
        caption = "India on each bridge question: rank, z-score and effect size (d), and bridge correlation (ρ)",
        align = c("l", rep("c", 8))) |>
  styled() |>
  add_header_above(c(" " = 1, "WVS Wave 7 (India 2023)" = 3, "PALS (2022)" = 3, "Bridge" = 2)) |>
  pack_rows(index = table(factor(dt$measure, unique(dt$measure)))) |>
  column_spec(1, width = "18em") |>
  footnote(general = c("z: India vs the other 14 countries, in standard deviations of their country means. d: Indian respondents vs respondents of the other 14 countries (each country weighted equally), in individual standard deviations.",
                       "ρ: Spearman rank correlation between WVS and PALS country means across the 15 countries."),
           general_title = "")
India on each bridge question: rank, z-score and effect size (d), and bridge correlation (ρ)
WVS Wave 7 (India 2023)
PALS (2022)
Bridge
Question pair Rank z d Rank z d ρ Strength
Governance (delivery)
Fighting rising prices (aim) 5 of 15 +0.7 +0.24 3 of 15 +0.7 +0.18 0.64 Strong
Accountability
More say in government (aim) 13 of 15 -1.1 -0.20 12 of 15 -0.5 -0.06 0.20 —
Free speech (aim) 13 of 15 -1.0 -0.36 12 of 15 -1.1 -0.22 0.50 Moderate
Voting 8 of 15 +0.4 +0.16 7 of 15 +0.5 +0.18 0.81 Strong
Accountability: perceived capture
Rich buy elections / big interests run government 3 of 15 +1.0 +0.60 9 of 15 -0.1 -0.03 0.32 —
Little confidence in government / officials don’t help 12 of 15 -1.1 -0.56 14 of 15 -1.7 -0.65 0.57 Moderate
Satisfaction with the political system
Satisfied with the political system 3 of 15 +1.0 +0.46 1 of 15 +2.3 +0.89 0.79 Strong
Authoritarian side
Maintaining order (aim) 7 of 15 +0.1 +0.02 6 of 15 +0.3 +0.05 0.46 Moderate
Strong leader 1 of 15 +1.6 +0.56 7 of 15 +0.3 +0.06 -0.42 —
Experts 3 of 15 +1.4 +0.37 12 of 15 -0.9 -0.13 -0.15 —
Army / military 5 of 14 +0.6 +0.25 4 of 15 +1.1 +0.17 -0.04 —
Religious authority 3 of 15 +0.8 +0.32 4 of 15 +0.7 +0.18 0.37 —
Respect for authority / discipline 12 of 15 -0.8 -0.21 3 of 15 +1.0 +0.29 -0.34 —
Security over freedom
Video / camera surveillance 1 of 15 +2.3 +0.71 2 of 15 +1.6 +0.19 0.09 —
Internet / phone monitoring 2 of 15 +2.1 +0.65 1 of 15 +2.0 +0.59 0.74 Strong
Liberal side
Free elections / say in politics 8 of 15 +0.1 +0.02 13 of 15 -0.9 -0.19 -0.11 —
Civil rights / fair legal system 9 of 15 +0.2 +0.05 14 of 15 -2.0 -0.49 0.05 —
Women’s equal rights / more say for women 7 of 15 +0.3 +0.09 4 of 15 +0.7 +0.18 0.01 —
Women as leaders 11 of 15 -0.7 -0.34 1 of 15 +3.0 +0.69 -0.31 —
Civil rights / government bound by courts 9 of 15 +0.2 +0.05 14 of 15 -1.9 -0.33 0.24 —
Rejects men first for jobs 12 of 15 -1.0 -0.52 15 of 15 -2.4 -0.89 0.63 Strong
State support
State ownership 5 of 15 +0.9 +0.27 7 of 15 -0.0 -0.00 0.57 Moderate
Competition is harmful 1 of 15 +2.3 +0.45 1 of 15 +3.6 +0.58 0.45 Moderate
Government responsibility / welfare 14 of 15 -1.0 -0.23 14 of 15 -1.3 -0.28 0.72 Strong
Inequality: redistribution
Equal incomes / rich-poor gap a threat 14 of 15 -1.3 -0.40 6 of 15 +0.1 +0.04 0.07 —
Tax the rich / support the disadvantaged 5 of 15 +1.0 +0.36 15 of 15 -2.4 -0.37 0.04 —
Inequality: exclusion
Luck and connections / ancestry 5 of 15 +0.4 +0.07 1 of 15 +1.7 +0.35 -0.12 —
Restrict / reject immigrants 7 of 15 -0.2 -0.06 7 of 15 +0.5 +0.21 0.35 —
Nationals first for jobs 7 of 15 +0.5 +0.21 5 of 15 +0.3 +0.10 0.66 Strong
z: India vs the other 14 countries, in standard deviations of their country means. d: Indian respondents vs respondents of the other 14 countries (each country weighted equally), in individual standard deviations.
ρ: Spearman rank correlation between WVS and PALS country means across the 15 countries.

Examples from the report.

Question z d What it means
Video surveillance (WVS) +2.3 +0.71 Outlier as a country and a medium-to-large difference between people: about 76% of Indians are more accepting than the average person elsewhere
Satisfaction with the political system (PALS) +2.3 +0.89 Outlier as a country and a large difference between people: about 81% of Indians are more satisfied than the average person elsewhere
Competition is harmful (PALS) +3.6 +0.58 An extreme outlier among countries (they bunch tightly), but only a medium difference between people: many Indians and non-Indians think alike
Strong leader is good (WVS) +1.6 +0.56 Clearly above other countries, a medium difference between people
Fighting rising prices as an aim (WVS) +0.7 +0.24 Somewhat above average, a small difference
Free speech as an aim (WVS) −1.0 −0.36 Clearly below the other countries, a small-to-medium difference

VI.2 Summary by measure

What is shown. For each measure: the average z-score and effect size across its bridge questions in each survey, and the average bridge correlation.

dist |>
  left_join(select(bridges, var, measure), by = "var") |>
  group_by(measure, survey) |>
  summarise(z = mean(z), d = mean(d), .groups = "drop") |>
  pivot_wider(names_from = survey, values_from = c(z, d)) |>
  left_join(rho |> left_join(select(bridges, var, measure), by = "var") |>
              group_by(measure) |> summarise(rho = mean(rho), k = n(), .groups = "drop"), by = "measure") |>
  mutate(measure = factor(measure, unique(bridges$measure))) |>
  arrange(measure) |>
  transmute(Measure = measure, `Bridge pairs` = k,
            `z, WVS` = sprintf("%+.1f", z_WVS), `z, PALS` = sprintf("%+.1f", z_PALS),
            `d, WVS` = sprintf("%+.2f", d_WVS), `d, PALS` = sprintf("%+.2f", d_PALS),
            `Average ρ` = sprintf("%.2f", rho)) |>
  kable(caption = "India's average distance from the other 14 countries, by measure", align = c("l", rep("c", 6))) |>
  styled()
India’s average distance from the other 14 countries, by measure
Measure Bridge pairs z, WVS z, PALS d, WVS d, PALS Average ρ
Governance (delivery) 1 +0.7 +0.7 +0.24 +0.18 0.64
Accountability 3 -0.6 -0.3 -0.13 -0.03 0.50
Accountability: perceived capture 2 -0.0 -0.9 +0.02 -0.34 0.44
Satisfaction with the political system 1 +1.0 +2.3 +0.46 +0.89 0.79
Authoritarian side 6 +0.6 +0.4 +0.22 +0.10 -0.02
Security over freedom 2 +2.2 +1.8 +0.68 +0.39 0.41
Liberal side 6 -0.2 -0.6 -0.11 -0.17 0.09
State support 3 +0.7 +0.8 +0.16 +0.10 0.58
Inequality: redistribution 2 -0.1 -1.2 -0.02 -0.17 0.06
Inequality: exclusion 3 +0.2 +0.8 +0.07 +0.22 0.30

VI.3 India’s nearest countries (statistical distance)

What is shown. For each measure, the three countries closest to India once every bridge question is put on the same footing (each question standardised across the 15 countries), using the average squared difference (Euclidean distance) over the measure’s questions.

z_near <- function(cm, survey) {
  cm |>
    group_by(var) |> mutate(zm = (m - mean(m)) / sd(m)) |> ungroup() |>
    left_join(select(bridges, var, measure), by = "var") |>
    group_by(measure, var) |> mutate(india = zm[country_name == "India"][1]) |> ungroup() |>
    filter(country_name != "India", !is.na(india)) |>
    group_by(measure, country_name) |>
    summarise(dist = sqrt(mean((zm - india)^2)), .groups = "drop") |>
    group_by(measure) |> slice_min(dist, n = 3, with_ties = FALSE) |>
    summarise(cell = paste0(country_name, " (", sprintf("%.1f", dist), ")", collapse = ", "), .groups = "drop") |>
    mutate(survey = survey)
}
bind_rows(z_near(cm_wvs, "WVS"), z_near(cm_pals, "PALS")) |>
  pivot_wider(names_from = survey, values_from = cell) |>
  mutate(measure = factor(measure, unique(bridges$measure))) |>
  arrange(measure) |>
  select(Measure = measure, `Nearest in WVS 2023` = WVS, `Nearest in PALS 2022` = PALS) |>
  kable(caption = "India's three nearest countries by measure (distance in standard deviations)") |>
  styled()
India’s three nearest countries by measure (distance in standard deviations)
Measure Nearest in WVS 2023 Nearest in PALS 2022
Governance (delivery) Turkey (0.0), United Kingdom (0.1), Brazil (0.3) Nigeria (0.1), Singapore (0.2), Peru (0.3)
Accountability Brazil (0.8), Turkey (0.8), Peru (0.8) Peru (0.5), Singapore (0.6), United Kingdom (0.7)
Accountability: perceived capture Nigeria (0.7), Indonesia (0.8), United States (1.0) Indonesia (0.2), Australia (0.7), United Kingdom (0.9)
Satisfaction with the political system Germany (0.1), Indonesia (0.1), Turkey (0.2) Singapore (0.7), Indonesia (0.9), Germany (1.1)
Authoritarian side Mexico (0.6), Turkey (0.8), Brazil (0.9) Nigeria (0.8), United States (0.8), Singapore (1.1)
Security over freedom Indonesia (0.9), Nigeria (1.0), Australia (1.5) Indonesia (0.7), United Kingdom (1.0), Tunisia (1.1)
Liberal side Turkey (0.5), Russia (0.5), Singapore (0.6) Indonesia (1.3), Nigeria (1.4), Peru (1.6)
State support Turkey (0.6), Indonesia (0.7), Mexico (0.8) United Kingdom (1.3), Indonesia (1.4), Singapore (1.5)
Inequality: redistribution Indonesia (0.3), Russia (0.4), Singapore (0.4) United States (1.0), Singapore (1.0), Mexico (1.3)
Inequality: exclusion Nigeria (0.4), Brazil (0.4), Chile (0.4) Singapore (0.5), United States (0.5), Nigeria (0.6)

What this part shows.

  • Where India is a true outlier. On a few questions India is far from the other 14 countries in both surveys:
    • Security over freedom: z about +2 in both (video or camera surveillance +2.3 and +1.6; internet or phone monitoring +2.1 and +2.0), with medium-to-large effect sizes (d up to 0.7).
    • Competition is harmful (the identical question): z +2.3 and +3.6.
    • Satisfaction with the political system: z +1.0 and +2.3 (d 0.46 and 0.89).
    • In PALS only, India is far below the others on the concrete liberal items: a fair legal system (z −2.0), government bound by courts (−1.9) and rejecting men first for jobs (−2.4).
  • Elsewhere India is closer to the pack than its rank suggests. Most z-scores lie between −1 and +1 and most effect sizes are small (below 0.3): a high or low rank often rests on modest differences between countries.
  • How good are the bridges? The pairs that sort countries the same way in both surveys (ρ 0.6 or more) are voting (0.81), satisfaction with the political system (0.79), internet monitoring (0.74), government responsibility / welfare (0.72), nationals first for jobs (0.66), fighting rising prices (0.64) and rejecting men first for jobs (0.63). On these, comparing India across the two surveys is well founded.
  • Weak bridges. The authoritarian-side pairs barely agree (average ρ about 0: strong leader −0.42, respect for authority −0.34, experts −0.15, army −0.04). “Is X a good way to govern?” (WVS) and “should X decide rather than citizens?” (PALS) sort countries differently. The same holds for the “necessary to live freely” pairs, the redistribution pairs and luck vs ancestry (ρ close to 0). On these, a different picture of India in the two surveys may reflect the questions rather than India, and the Part V comparison should be read with care.