PALS Survey Structure and Methods

Total questions: ~115-120 items shown per respondent (varies by randomization/filtering), organized into 6 modules (A-F) across ~90 distinct variables

A (Core: Individual Self-Determination): 3 items (A01 single scale, A02 6-group battery, A03 multi-select “live freely” list ~20 options randomized)

B (Political/Economic/Socio-Cultural Elements): 9 items (B01 5 scales, B02 3 scales, B03 3 scales, B04 1 scale, B05 4 scales, B06 1 scale, B07-B09 conjoint tasks)

C (Liberal Script Applications/Contestations): 20+ items (C01 9 scales borders, C02 multi-select levels, C03 4 scales interventions, C04 5 scales public goods, C05 7 scales scarce jobs, C06 3 scales leadership, C07 2 scales generations, C08 6 scales temporality)

D (Political Values/Attitudes): 20+ items (D01 multi-select threats ~15 randomized, D02 2 scales satisfaction, D03 5 scales evaluations, D04 3 scales deprivation, D05 3 scales identity, D06 multi-select postmaterialism, D07 6 scales RWA, D08 3 scales globalization, D09 3 vignette experiments security trade-offs)

E (Voting Behavior): 3 items (E01 participation, E02/E03 vote choice/intention country-specific parties)

F (Sociodemographics): 26+ items (F01-F27: gender, birth year, education ISCED, employment, migration, religion ~30 country-specific, income, etc.)

library(tidyverse)
library(haven)
library(labelled)
library(survey)
library(forcats)
library(openxlsx)
library(Hmisc)
library(ggplot2)
library(kableExtra)
library(dplyr)
library(tidyr)
library(stringr)
library(knitr)
library(cregg)
library(scales)

PALS_extended_dataset <- read_dta("PALS extended dataset.dta")
pals <- PALS_extended_dataset

Mapping the countries with the country codes

country_lookup <- tribble(
  ~country, ~country_name,
  11, "Australia", 12, "Brazil", 13, "Chile", 14, "France",
  15, "Germany", 16, "Ghana", 17, "India", 18, "Indonesia",
  19, "Italy", 20, "Japan", 21, "Latvia", 22, "Mexico",
  23, "Nigeria", 24, "Peru", 25, "Poland",
  26, "Republic of Korea", 27, "Russian Federation",
  28, "Senegal", 29, "Singapore", 30, "South Africa",
  31, "Spain", 32, "Sweden", 33, "Tunisia",
  34, "Türkiye", 35, "United Kingdom", 36, "United States"
)

country_codes <- country_lookup

Demographic profile

1. Gender

Gender distribution shows near parity everywhere (typically 45-55% Male/Female), with minimal “Other” responses.

gender_country_table <- pals %>%
  left_join(country_lookup, by = "country") %>%
  mutate(gender = case_when(
    F01 == 1 ~ "Male",
    F01 == 2 ~ "Female",
    F01 == 3 ~ "Other",
    TRUE ~ "Missing"
  )) %>%
  group_by(country_name, gender) %>%
  summarise(count = n(), .groups = "drop") %>%
  group_by(country_name) %>%
  mutate(pct = round(100 * count / sum(count), 1))



ggplot(gender_country_table,
       aes(x = reorder(country_name, count, sum),
           y = pct, fill = gender)) +
  geom_col() +
  coord_flip() +
  theme_minimal() +
  labs(title = "Gender Distribution by Country (%)",
       x = "Country", y = "Percentage")

2. Age Cohorts

Age cohorts (Minor <18, Young 18-34, Middle-aged 35-54, Elderly 55+) mirror expected national demographics across countries.

age_country_table <- pals %>%
  left_join(country_lookup, by = "country") %>%
  mutate(
    age = 2022 - F02,   # updated survey year
    age_cohort = case_when(
      age >= 18 & age <= 34 ~ "Young (18–34)",
      age >= 35 & age <= 54 ~ "Middle-aged (35–54)",
      age >= 55            ~ "Older (55+)",
      TRUE                 ~ NA_character_
    ),
    age_cohort = factor(
      age_cohort,
      levels = c(
        "Young (18–34)",
        "Middle-aged (35–54)",
        "Older (55+)"
      )
    )
  ) %>%
  filter(!is.na(age_cohort)) %>%
  group_by(country_name, age_cohort) %>%
  summarise(count = n(), .groups = "drop") %>%
  group_by(country_name) %>%
  mutate(pct = round(100 * count / sum(count), 1))

view(age_country_table)

age_country_table %>%
  ggplot(
    aes(
      x = reorder(country_name, pct, sum),
      y = pct,
      fill = age_cohort
    )
  ) +
  geom_col(position = position_stack(reverse = TRUE)) +
  coord_flip() +
  scale_fill_brewer(
    type = "qual",
    palette = "Set2",
    limits = c(
      "Young (18–34)",
      "Middle-aged (35–54)",
      "Older (55+)"
    )
  ) +
  theme_minimal() +
  labs(
    title = "Age Cohorts by Country (%)",
    x = "Country",
    y = "Percentage",
    fill = "Age Cohort"
  )

3. Religion distribution

Collapse denomination into meaningful groups to avoid over fragmentation - codes from PALS codebook (F18 variable).

Religion reveals an interesting pattern: despite detailed Christian denomination options, many Western and Latin American respondents selected “No religion/Other”. India predictably shows Hindu dominance, African nations show Christian/Muslim splits.

religion_codes <- tribble(
  ~F18, ~religion_collapsed,

  # No religion
  0,   "No religion",

  # Hindu
  10,  "Hindu",

  # Muslim
  15,  "Muslim",

  # Christian – all denominations
  1,   "Christian",
  3,   "Christian",
  5,   "Christian",
  6,   "Christian",
  7,   "Christian",
  8,   "Christian",
  11,  "Christian",
  13,  "Christian",
  14,  "Christian",
  16,  "Christian",
  17,  "Christian",
  18,  "Christian",
  19,  "Christian",
  20,  "Christian",
  21,  "Christian",
  22,  "Christian",
  23,  "Christian",
  24,  "Christian",
  25,  "Christian",
  26,  "Christian",
  27,  "Christian",
  28,  "Christian",

  # Everything else → Other
  2,   "Other",
  4,   "Other",   # Buddhist
  9,   "Other",
  12,  "Other",   # Jewish
  29,  "Other",
  30,  "Other",   # Sikh
  31,  "Other",
  32,  "Other",
  33,  "Other",
  997, "Other"
)

# Country-wise religion table
religion_country_table <- pals %>%
  left_join(country_lookup, by = "country") %>%
  left_join(religion_codes, by = "F18") %>%
  mutate(
    religion = if_else(
      is.na(religion_collapsed),
      "Other",
      religion_collapsed
    ),
    religion = factor(
      religion,
      levels = c(
        "Hindu",
        "Muslim",
        "Christian",
        "No religion",
        "Other"
      )
    )
  ) %>%
  group_by(country_name, religion) %>%
  summarise(total = n(), .groups = "drop") %>%
  group_by(country_name) %>%
  mutate(
    pct = round(100 * total / sum(total), 1)
  ) %>%
  ungroup()
view(religion_country_table)
religion_country_table %>%
  ggplot(
    aes(
      x = reorder(country_name, pct, sum),
      y = pct,
      fill = religion
    )
  ) +
  geom_col(position = position_stack(reverse = TRUE)) +
  coord_flip() +
  scale_fill_brewer(
    type = "qual",
    palette = "Set3"
  ) +
  theme_minimal() +
  labs(
    title = "Religion by Country (%)",
    x = "Country",
    y = "Percentage",
    fill = "Religion"
  )

4. Education

Education levels vary predictably by development level—higher tertiary strong in EU/West, lower secondary dominant in developing nations.

pals <- pals %>%
  mutate(
    education_collapsed = case_when(
      F03 %in% c(1, 2)           ~ "Primary",
      F03 %in% c(3, 4)           ~ "Secondary",
      F03 %in% c(5, 6)           ~ "Tertiary",
      F03 %in% c(7, 97, 98, 99)  ~ "Others",
      TRUE                       ~ "Others"
    ),
    education_collapsed = factor(
      education_collapsed,
      levels = c(
        "Primary",
        "Secondary",
        "Tertiary",
        "Others"
      )
    )
  )
  education_country_table <- pals %>%
  left_join(country_lookup, by = "country") %>%
  group_by(country_name, education_collapsed) %>%
  summarise(count = n(), .groups = "drop") %>%
  group_by(country_name) %>%
  mutate(
    pct = round(100 * count / sum(count), 1)
  ) %>%
  ungroup()

education_country_table %>%
  ggplot(
    aes(
      x = reorder(country_name, pct, sum),
      y = pct,
      fill = education_collapsed
    )
  ) +
  geom_col(position = position_stack(reverse = TRUE)) +
  coord_flip() +
  scale_fill_brewer(type = "qual", palette = "Set2") +
  theme_minimal() +
  labs(
    title = "Education Levels by Country (%)",
    x = "Country",
    y = "Percentage",
    fill = "Education level"
  )

The interesting part!

India “extremes” analysis

India - CAPI method (responses – 2822). 20 states, 2011 census sampling frame - 1 major district/state. 149 Primary sampling unit urban and rural. 20 sample/PSU.

Random probability sample, stratified by degree of urbanity.

Random sampling point within each stratum, followed by random walk - “next birthday rule” for 18+ interviewee. ……………………………… Examining 6-point Likert scale questions (1=fully disagree/liberal to 6=fully agree/conservative). I calculated extreme concentration (% choosing 1 + % choosing 6) for all such items, then filtered to ≥35% threshold to focus on truly polarized questions. Used post-stratification weights (w1a) for within-India comparisons to ensure representativeness.

Some of the key findings: • 42% on “Society should accept everyone equally” - strong equality preference.

• 47% fully accept government health data collection.

• Market economy control: Remarkably balanced at 22% (private) vs 20% (state) extremes.

• Collective self-determination questions heavily favor citizen opinions over religious leaders, elected politicians, or experts (35-42% extremes). This basically tells that Indians still favour the citizenry over others.

• 35% prefer “societal openness to change” vs tradition.

india_data <- pals %>%
  filter(country == 17) %>%
  mutate(weight = ifelse(w1a > 0 & !is.na(w1a), w1a, NA))


six_point_vars <- c(
  # Module A
  "A01", 
  paste0("A02_", letters[1:6]),
  
  # Module B
  paste0("B01_", letters[1:5]),
  paste0("B02_", letters[1:3]),
  paste0("B03_", letters[1:3]),
  "B04",
  paste0("B05_", letters[1:4]),
  "B06",
  
  # Module C
  paste0("C01_", letters[1:8]),
  paste0("C03_", c("a1", "a2", "b1", "b2")),
  paste0("C04_", letters[1:5]),
  paste0("C05_", letters[1:7]),
  paste0("C06_", letters[1:3]),
  paste0("C07_", letters[1:2]),
  paste0("C08_", letters[1:6]),
  
  # Module D
  paste0("D02_", letters[1:2]),
  paste0("D03_", letters[1:5]),
  paste0("D04_", letters[1:3]),
  paste0("D05_", letters[1:3]),
  paste0("D07_", letters[1:6]),
  paste0("D08_", letters[1:3]),
  paste0("D09_", letters[1:3])
)

# weighted extremes
weighted_extreme_6pt <- function(x, w) {
  valid <- !is.na(x) & !is.na(w) & x %in% 1:6
  
  if (sum(valid) == 0) {
    return(c(pct_1 = NA, pct_6 = NA, extreme = NA))
  }
  
  total_w <- sum(w[valid])
  pct_1 <- sum(w[valid & x == 1]) / total_w * 100
  pct_6 <- sum(w[valid & x == 6]) / total_w * 100
  
  c(pct_1 = pct_1, pct_6 = pct_6, extreme = pct_1 + pct_6)
}

# weighted extremes for all variables
india_extremes_weighted <- map_df(
  six_point_vars,
  ~{
    res <- weighted_extreme_6pt(india_data[[.x]], india_data$weight)
    tibble(
      variable = .x,
      pct_1 = res["pct_1"],
      pct_6 = res["pct_6"],
      extreme = res["extreme"]
    )
  }
) %>%
  arrange(desc(extreme))

# Filter for extremes > 35%
india_extremes_35 <- india_extremes_weighted %>%
  filter(extreme > 35)

# extract labels from PALS dataset
get_labels <- function(var) {
  lbls <- attr(PALS_extended_dataset[[var]], "labels")
  
  tibble(
    question = attr(PALS_extended_dataset[[var]], "label"),
    meaning_1 = names(lbls[lbls == 1])[1],  # Get first match
    meaning_6 = names(lbls[lbls == 6])[1]   # Get first match
  )
}

# final table with labels
india_extremes_final <- india_extremes_35 %>%
  rowwise() %>%
  mutate(labels = list(get_labels(variable))) %>%
  unnest(labels) %>%
  ungroup() %>%
  mutate(
    dominant_direction = case_when(
      pct_1 > pct_6 ~ "Scale 1",
      pct_6 > pct_1 ~ "Scale 6",
      TRUE ~ "Balanced"
    ),
    dominant_meaning = if_else(pct_1 > pct_6, meaning_1, meaning_6)
  ) %>%
  select(
    variable,
    question,
    pct_1,
    meaning_1,
    pct_6,
    meaning_6,
    dominant_direction,
    dominant_meaning,
    total_extreme = extreme
  ) %>%
  arrange(desc(total_extreme))

knitr::kable(india_extremes_final, 
             col.names = c("Variable", "Question", "opt_1 %", "Meaning 1", 
                          "opt_6 %", "Meaning 6", "Dominant", "Dominant Meaning", "% Extreme"),
             digits = 1,
             caption = "India: Polarization Extremes (≥35% at scale endpoints)")
India: Polarization Extremes (≥35% at scale endpoints)
Variable Question opt_1 % Meaning 1 opt_6 % Meaning 6 Dominant Dominant Meaning % Extreme
B06 Tolerance: Equal acceptance 42.7 1 Society should accept all people equally. 9.0 6 Society should decide on whom to accept. Scale 1 1 Society should accept all people equally. 51.8
B02_a Rule of law: Judicial control of government 36.9 1 The government should always obey the laws and the court decisions, even if it hinders its work. 14.4 6 The government should not be bound at all by laws or court decisions in all instances to be able to work unhindered. Scale 1 1 The government should always obey the laws and the court decisions, even if it hinders its work. 51.3
A01 Self-determination 31.9 1 Everyone should be allowed to live as they want to, to foster individual freedom. 19.2 6 Everyone should live in line with the values of the society to foster social cohesion. Scale 1 1 Everyone should be allowed to live as they want to, to foster individual freedom. 51.2
B02_b Rule of law: Equal enforcement of laws 39.2 1 Laws should be enforced equally for everyone in society. 11.8 6 Under certain circumstances, laws can be enforced differently for different people. Scale 1 1 Laws should be enforced equally for everyone in society. 50.9
D09_b Health data collection: Acceptance (outcome) 3.3 1 Not acceptable at all 47.3 6 Fully acceptable Scale 6 6 Fully acceptable 50.6
B02_c Rule of law: Basic rights across countries 34.3 1 Every human should have the same basic rights in all countries. 14.5 6 A country’s society should decide which rights people have in its country. Scale 1 1 Every human should have the same basic rights in all countries. 48.9
D09_a Anti-terror measure: Acceptance (outcome) 6.7 1 Not acceptable at all 41.9 6 Fully acceptable Scale 6 6 Fully acceptable 48.6
D09_c Tax fraud/corruption prevention: Acceptance (outcome) 5.7 1 Not acceptable at all 42.2 6 Fully acceptable Scale 6 6 Fully acceptable 47.9
B01_e Collective self-determination: The military 32.9 1 Citizens’ opinion should be most decisive for policy-making. 15.0 6 The military’s opinion should be most decisive for policy-making. Scale 1 1 Citizens’ opinion should be most decisive for policy-making. 47.9
B03_c Market economy: Source of wealth and status 37.4 1 A person’s wealth and status should always be based on talents and efforts. 8.8 6 A person’s wealth and status should always be based on ancestry and contacts. Scale 1 1 A person’s wealth and status should always be based on talents and efforts. 46.2
B01_b Collective self-determination: Elected politicians 36.8 1 Citizens’ opinion should be most decisive for policy-making. 9.3 6 Elected politicians’ opinion should be most decisive for policy-making. Scale 1 1 Citizens’ opinion should be most decisive for policy-making. 46.1
B01_d Collective self-determination: Religious leaders 36.8 1 Citizens’ opinion should be most decisive for policy-making. 8.2 6 Religious leaders’ opinion should be most decisive for policy-making. Scale 1 1 Citizens’ opinion should be most decisive for policy-making. 45.0
B01_a Collective self-determination: Political leaders 36.4 1 Citizens’ opinion should be most decisive for policy-making. 8.3 6 Strong political leaders’ opinion should be most decisive for policy-making. Scale 1 1 Citizens’ opinion should be most decisive for policy-making. 44.7
B01_c Collective self-determination: Established experts 32.2 1 Citizens’ opinion should be most decisive for policy-making. 12.2 6 Established experts’ opinion should be most decisive for policy-making. Scale 1 1 Citizens’ opinion should be most decisive for policy-making. 44.3
B04 Progress: Change vs. tradition 35.8 1 Society should be open for change trying to ensure a bright future. 8.4 6 Society should preserve well-established traditions trying to protect what works well nowadays. Scale 1 1 Society should be open for change trying to ensure a bright future. 44.2
B05_d Rationality: Individual vs. public determination of facts 29.1 1 Everyone should figure out for themselves what is correct by looking for facts. 14.8 6 What is correct should result from public discussions of facts. Scale 1 1 Everyone should figure out for themselves what is correct by looking for facts. 43.8
B03_a Market economy: Private vs. state control 22.9 1 Private ownership of businesses and industry should be increased. 20.3 6 State ownership of businesses and industry should be increased. Scale 1 1 Private ownership of businesses and industry should be increased. 43.2
B03_b Market economy: Competition good/bad for society 20.9 1 Competition between businesses is good for a society. 21.7 6 Competition between businesses is harmful for a society. Scale 6 6 Competition between businesses is harmful for a society. 42.6
D05_a Subjective identity: Local 3.3 1 Not close at all 38.8 6 Very close Scale 6 6 Very close 42.1
D07_d RWA: Premarital sexual intercourse 27.7 1 Fully disagree 11.9 6 Fully agree Scale 1 1 Fully disagree 39.6
B05_a Rationality: Science vs. experiences, traditions, and common sense 20.9 1 Societal decisions should be primarily based on scientific research. 17.5 6 Societal decisions should be primarily based on personal experiences, traditions, and common sense. Scale 1 1 Societal decisions should be primarily based on scientific research. 38.5
B05_b Rationality: Political influence of established scientists 21.5 1 Established scientists should have more influence when politicians make important decisions. 15.9 6 Established scientists should have less influence when politicians make important decisions. Scale 1 1 Established scientists should have more influence when politicians make important decisions. 37.4
B05_c Rationality: Limits of scientific explanations 27.4 1 In a society, it is important to accept that all things can be explained by scientific research. 9.8 6 In a society, it is important to accept that not all things can be explained by scientific research. Scale 1 1 In a society, it is important to accept that all things can be explained by scientific research. 37.2
# B03_a: N choosing 1 vs 6 by education (India)
b03a_edu_extremes <- pals %>%
  filter(country == 17, !is.na(education_collapsed), !is.na(B03_a)) %>%
  count(education_collapsed, response = B03_a) %>%
  filter(response %in% c(1, 6)) %>%
  pivot_wider(names_from = response, values_from = n, values_fill = 0) %>%
  rename(`N=1 (Private)` = `1`, `N=6 (State)` = `6`) %>%
  mutate(Total = `N=1 (Private)` + `N=6 (State)`) %>%
  select(education_collapsed, `N=1 (Private)`, `N=6 (State)`, Total)

knitr::kable(b03a_edu_extremes,
             col.names = c("Education", "N=1 (Private Ownership)", "N=6 (State Ownership)", "Total Extremes"),
             digits = 0,
             caption = "India B03_a: Extremes by Education (Raw Counts)")
India B03_a: Extremes by Education (Raw Counts)
Education N=1 (Private Ownership) N=6 (State Ownership) Total Extremes
Primary 297 175 472
Secondary 132 149 281
Tertiary 116 180 296
Others 8 8 16

Nothing much insightful.

India - state level analysis

  1. North - Delhi, Haryana, Himachal Pradesh, Punjab, Uttar Pradesh, Uttarakhand, Rajasthan,
  2. Central - Madhya Pradesh, Maharashtra, Gujarat, Chhattisgarh
  3. East - Jharkhand, Odisha, Assam, West Bengal, Bihar,
  4. South - Tamil Nadu, Karnataka, Kerala, Andhra Pradesh
India state
India state
india_data <- pals %>% filter(country == 17)

# State labels (full lookup)
state_labels <- tibble(
  F21 = c(1701:1720),
  state = c("Andhra Pradesh", "Assam", "Bihar", "Chhattisgarh", 
            "Delhi", "Gujarat", "Haryana", "Himachal Pradesh", 
            "Jharkhand", "Karnataka", "Kerala", "Madhya Pradesh", 
            "Maharashtra", "Odisha", "Punjab", "Rajasthan", 
            "Tamil Nadu", "Uttar Pradesh", "Uttarakhand", "West Bengal")
)

# Create table
state_table <- india_data %>%
  count(F21, F20, name = "N_resp") %>%
  complete(F21, F20 = c(1,2,3), fill = list(N_resp = 0)) %>%
  group_by(F21) %>%
  summarise(
    N_total = sum(N_resp),
    pct_rural = scales::percent(sum(N_resp[F20 == 1]) / N_total, accuracy = 0.1),
    pct_smalltown = scales::percent(sum(N_resp[F20 == 2]) / N_total, accuracy = 0.1),
    pct_city = scales::percent(sum(N_resp[F20 == 3]) / N_total, accuracy = 0.1),
    .groups = "drop"
  ) %>%
  left_join(state_labels, by = "F21") %>%  # ← Fixed paren
  select(F21, state, N_total, pct_rural, pct_smalltown, pct_city) %>%
  arrange(desc(N_total)) %>%
  filter(!is.na(state))

knitr::kable(state_table, caption = "India: States, total response, and urban/rural (%)")
India: States, total response, and urban/rural (%)
F21 state N_total pct_rural pct_smalltown pct_city
1718 Uttar Pradesh 330 87.9% 4.2% 7.9%
1713 Maharashtra 191 52.9% 14.7% 32.5%
1703 Bihar 170 88.2% 1.2% 10.6%
1720 West Bengal 152 59.2% 15.1% 25.7%
1701 Andhra Pradesh 140 57.1% 0.0% 42.9%
1705 Delhi 133 0.0% 34.6% 65.4%
1712 Madhya Pradesh 130 69.2% 6.2% 24.6%
1704 Chhattisgarh 128 77.3% 7.0% 15.6%
1714 Odisha 124 80.6% 6.5% 12.9%
1709 Jharkhand 121 75.2% 5.8% 19.0%
1711 Kerala 121 49.6% 24.8% 25.6%
1717 Tamil Nadu 121 50.4% 25.6% 24.0%
1719 Uttarakhand 121 66.1% 26.4% 7.4%
1702 Assam 120 83.3% 16.7% 0.0%
1706 Gujarat 120 66.7% 0.0% 33.3%
1707 Haryana 120 66.7% 5.0% 28.3%
1708 Himachal Pradesh 120 91.7% 3.3% 5.0%
1710 Karnataka 120 50.0% 1.7% 48.3%
1715 Punjab 120 66.7% 0.8% 32.5%
1716 Rajasthan 120 75.0% 5.0% 20.0%
# Extract labels once

get_labels <- function(v, data = pals, trunc = 60) {
  x <- data[[v]]

  question <- attr(x, "label")
  if (is.null(question)) question <- NA_character_

  lbls <- attr(x, "labels")

  meaning_1 <- NA_character_
  meaning_6 <- NA_character_

  if (!is.null(lbls)) {
    if (any(lbls == 1)) meaning_1 <- names(lbls)[which(lbls == 1)][1]
    if (any(lbls == 6)) meaning_6 <- names(lbls)[which(lbls == 6)][1]
  }

  tibble(
    variable = v,
    question = stringr::str_trunc(as.character(question), trunc),
    meaning_1 = meaning_1,
    meaning_6 = meaning_6
  )
}

labels_lookup <- bind_rows(lapply(six_point_vars, get_labels, data = pals))

# ============================================================
# SEGMENT 1: Create India macro-regions + unweighted summary
# ============================================================

pals_india <- pals %>%
  filter(country == 17) %>%
  mutate(
    F21_num = as.numeric(as.character(F21)),
    india_macro = case_when(
      F21_num %in% c(1705, 1707, 1708, 1715, 1718, 1716, 1719) ~ "North",
      F21_num %in% c(1712, 1713, 1706, 1704)             ~ "Central",
      F21_num %in% c(1709, 1714, 1702, 1703, 1720)                   ~ "East",
      F21_num %in% c(1717, 1710, 1711, 1701)                   ~ "South",
      TRUE ~ NA_character_
    ),
    india_macro = factor(india_macro, levels = c("North", "Central", "East", "South")),
    F20_num = as.numeric(as.character(F20)),
    residence = case_when(
      F20_num == 1 ~ "Rural/Village",
      F20_num == 2 ~ "Small/Mid town",
      F20_num == 3 ~ "Large city",
      TRUE ~ NA_character_
    )
  )

# Unweighted N by macro-region
knitr::kable(
  pals_india %>% count(india_macro, name = "N_unweighted"),
  caption = "India macro-regions: unweighted N"
)
India macro-regions: unweighted N
india_macro N_unweighted
North 1064
Central 569
East 687
South 502
# Unweighted composition by residence (F20)
india_region_summary_unw <- pals_india %>%
  filter(!is.na(india_macro), !is.na(residence)) %>%
  count(india_macro, residence, name = "N") %>%
  group_by(india_macro) %>%
  mutate(pct_within_macro = round(100 * N / sum(N), 1)) %>%
  ungroup() %>%
  arrange(india_macro, residence)

knitr::kable(
  india_region_summary_unw,
  caption = "India macro-regions: unweighted composition by residential environment (F20)"
)
India macro-regions: unweighted composition by residential environment (F20)
india_macro residence N pct_within_macro
North Large city 225 21.1
North Rural/Village 730 68.6
North Small/Mid town 109 10.2
Central Large city 154 27.1
Central Rural/Village 370 65.0
Central Small/Mid town 45 7.9
East Large city 96 14.0
East Rural/Village 531 77.3
East Small/Mid town 60 8.7
South Large city 178 35.5
South Rural/Village 261 52.0
South Small/Mid town 63 12.5
# ============================================================
# SEGMENT 2: Within-India weighted means + final table
# ============================================================

pals_india_long <- pals_india %>%
  select(india_macro, w2, w4, all_of(six_point_vars)) %>%
  mutate(across(all_of(six_point_vars), \(x) as.numeric(as.character(x)))) %>%
  pivot_longer(
    cols = all_of(six_point_vars),
    names_to = "variable",
    values_to = "response"
  ) %>%
  filter(!is.na(india_macro), !is.na(response), response %in% 1:6, w2 > 0)

# Macro-region weighted means
india_macro_means <- pals_india_long %>%
  group_by(india_macro, variable) %>%
  summarise(
    macro_mean = weighted.mean(response, w2 * w4, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  pivot_wider(names_from = india_macro, values_from = macro_mean)

# India overall weighted mean
india_overall_means <- pals_india_long %>%
  group_by(variable) %>%
  summarise(
    India = weighted.mean(response, w2 * w4, na.rm = TRUE),
    .groups = "drop"
  )

# Final table with labels + meanings
india_macro_table <- india_overall_means %>%
  left_join(india_macro_means, by = "variable") %>%
  left_join(labels_lookup, by = "variable") %>%
  select(variable, question, meaning_1, meaning_6, India, North, Central, East, South)

india_macro_table %>%
  kableExtra::kbl(
    format = "html",
    digits = 2,
    caption = "India vs India Macro-Region Averages (1–6 scale), weighted"
  ) %>%
  kableExtra::kable_styling(full_width = FALSE) %>%
  kableExtra::scroll_box(width = "100%", height = "600px")
India vs India Macro-Region Averages (1–6 scale), weighted
variable question meaning_1 meaning_6 India North Central East South
A01 Self-determination 1 Everyone should be allowed to live as they want to, to foster individual freedom. 6 Everyone should live in line with the values of the society to foster social cohesion. 3.24 2.78 3.61 3.07 3.63
A02_a Restrictions of freedom: Religious groups/leaders 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.67 3.78 4.47 3.02 3.40
A02_b Restrictions of freedom: State/government 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.94 3.73 4.46 3.90 3.71
A02_c Restrictions of freedom: Family 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 4.12 3.83 4.66 3.97 4.12
A02_d Restrictions of freedom: Police 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.92 3.86 4.54 3.71 3.61
A02_e Restrictions of freedom: Businesses/companies 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.63 3.88 4.27 2.94 3.41
A02_f Restrictions of freedom: Societal majority 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.98 3.86 4.50 3.93 3.65
B01_a Collective self-determination: Political leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Strong political leaders’ opinion should be most decisive for policy-making. 2.78 2.83 3.58 2.30 2.42
B01_b Collective self-determination: Elected politicians 1 Citizens’ opinion should be most decisive for policy-making. 6 Elected politicians’ opinion should be most decisive for policy-making. 2.82 2.86 3.73 2.28 2.43
B01_c Collective self-determination: Established experts 1 Citizens’ opinion should be most decisive for policy-making. 6 Established experts’ opinion should be most decisive for policy-making. 3.01 2.89 3.69 2.83 2.67
B01_d Collective self-determination: Religious leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Religious leaders’ opinion should be most decisive for policy-making. 2.75 2.65 3.61 2.28 2.48
B01_e Collective self-determination: The military 1 Citizens’ opinion should be most decisive for policy-making. 6 The military’s opinion should be most decisive for policy-making. 3.01 2.94 3.95 2.56 2.62
B02_a Rule of law: Judicial control of government 1 The government should always obey the laws and the court decisions, even if it hinders its work. 6 The government should not be bound at all by laws or court decisions in all instances to be able to work unhindered. 2.81 2.79 3.78 2.45 2.25
B02_b Rule of law: Equal enforcement of laws 1 Laws should be enforced equally for everyone in society. 6 Under certain circumstances, laws can be enforced differently for different people. 2.84 2.62 3.72 2.40 2.70
B02_c Rule of law: Basic rights across countries 1 Every human should have the same basic rights in all countries. 6 A country’s society should decide which rights people have in its country. 3.05 2.99 3.63 2.46 3.21
B03_a Market economy: Private vs. state control 1 Private ownership of businesses and industry should be increased. 6 State ownership of businesses and industry should be increased. 3.41 2.98 3.96 3.46 3.32
B03_b Market economy: Competition good/bad for society 1 Competition between businesses is good for a society. 6 Competition between businesses is harmful for a society. 3.46 2.89 3.83 3.18 4.15
B03_c Market economy: Source of wealth and status 1 A person’s wealth and status should always be based on talents and efforts. 6 A person’s wealth and status should always be based on ancestry and contacts. 2.68 2.73 3.51 2.15 2.36
B04 Progress: Change vs. tradition 1 Society should be open for change trying to ensure a bright future. 6 Society should preserve well-established traditions trying to protect what works well nowadays. 2.71 2.37 3.10 2.95 2.43
B05_a Rationality: Science vs. experiences, traditions, and com… 1 Societal decisions should be primarily based on scientific research. 6 Societal decisions should be primarily based on personal experiences, traditions, and common sense. 3.40 2.97 3.97 3.05 3.78
B05_b Rationality: Political influence of established scientists 1 Established scientists should have more influence when politicians make important decisions. 6 Established scientists should have less influence when politicians make important decisions. 3.38 2.99 4.05 2.80 3.91
B05_c Rationality: Limits of scientific explanations 1 In a society, it is important to accept that all things can be explained by scientific research. 6 In a society, it is important to accept that not all things can be explained by scientific research. 3.03 2.56 3.77 3.11 2.73
B05_d Rationality: Individual vs. public determination of facts 1 Everyone should figure out for themselves what is correct by looking for facts. 6 What is correct should result from public discussions of facts. 3.13 3.10 3.72 3.09 2.60
B06 Tolerance: Equal acceptance 1 Society should accept all people equally. 6 Society should decide on whom to accept. 2.55 2.56 3.13 2.15 2.40
C01_a Borders: Ban access to foreign information 1 Fully disagree 6 Fully agree 4.29 4.11 4.43 4.22 4.47
C01_b Borders: Hinder citizens from leaving 1 Fully disagree 6 Fully agree 4.25 4.01 4.41 4.27 4.38
C01_c Borders: Reject refugees 1 Fully disagree 6 Fully agree 4.17 4.01 4.33 4.18 4.23
C01_d Borders: Reject immigrants 1 Fully disagree 6 Fully agree 4.19 4.04 4.33 4.16 4.28
C01_e Borders: Restrict investment of foreign companies 1 Fully disagree 6 Fully agree 4.40 4.18 4.51 4.46 4.49
C01_f Borders: Shooting at persons crossing illegally 1 Fully disagree 6 Fully agree 4.22 4.04 4.40 4.07 4.43
C01_g Borders: Taking fingerprints 1 Fully disagree 6 Fully agree 4.53 4.15 4.78 4.66 4.64
C01_h Borders: Preventing secessions 1 Fully disagree 6 Fully agree 4.29 4.09 4.43 4.36 4.32
C03_a1 Human rights violations: Economic intervention 1 Fully disagree 6 Fully agree 4.13 3.97 4.25 4.11 4.25
C03_a2 Human rights violations: Military intervention 1 Fully disagree 6 Fully agree 4.17 4.03 4.20 4.21 4.31
C03_b1 Dictatorship: Economic intervention 1 Fully disagree 6 Fully agree 4.17 3.97 4.25 4.27 4.23
C03_b2 Dictatorship: Military intervention 1 Fully disagree 6 Fully agree 4.17 4.04 4.12 4.20 4.37
C04_a Public good provision: Free education 1 Fully disagree 6 Fully agree 4.53 4.12 4.77 4.89 4.42
C04_b Public good provision: Free healthcare 1 Fully disagree 6 Fully agree 4.56 4.04 4.82 4.99 4.49
C04_c Public good provision: Welfare benefits 1 Fully disagree 6 Fully agree 4.57 4.12 4.87 4.89 4.49
C04_d Public good provision: Support for disadvantaged groups 1 Fully disagree 6 Fully agree 4.44 4.04 4.78 4.81 4.17
C04_e Public good provision: Support for women 1 Fully disagree 6 Fully agree 4.41 4.09 4.71 4.67 4.20
C05_a Scarce jobs: Preference for men 1 Fully disagree 6 Fully agree 4.03 3.96 4.27 3.85 4.05
C05_b Scarce jobs: Preference for nationals 1 Fully disagree 6 Fully agree 4.09 4.02 4.30 3.96 4.09
C05_c Scarce jobs: Preference for heterosexuals 1 Fully disagree 6 Fully agree 3.90 3.99 4.22 3.48 3.90
C05_d Scarce jobs: Preference for people in need 1 Fully disagree 6 Fully agree 4.33 4.10 4.43 4.53 4.27
C05_e Scarce jobs: Preference for family members 1 Fully disagree 6 Fully agree 3.87 3.93 4.14 3.42 4.04
C05_f Scarce jobs: Preference for own religion 1 Fully disagree 6 Fully agree 3.85 3.90 4.22 3.36 3.95
C05_g Scarce jobs: Preference for own ethnic group 1 Fully disagree 6 Fully agree 3.84 3.92 4.12 3.38 3.97
C06_a Leadership positions: Gender representation 1 Fully disagree 6 Fully agree 4.29 4.01 4.70 4.30 4.21
C06_b Leadership positions: Ethnic representation 1 Fully disagree 6 Fully agree 4.18 4.01 4.67 3.95 4.15
C06_c Leadership positions: Economic status representation 1 Fully disagree 6 Fully agree 4.43 3.99 4.68 4.73 4.40
C07_a Generational conflict: Prosperity vs. environment 1 Fully disagree 6 Fully agree 4.23 4.02 4.55 4.24 4.16
C07_b Generational conflict: Public debt 1 Fully disagree 6 Fully agree 4.11 3.95 4.44 3.86 4.23
C08_a Temporality: Punctuality 1 Fully disagree 6 Fully agree 4.47 4.13 4.86 4.57 4.37
C08_b Temporality: Efficiency 1 Fully disagree 6 Fully agree 4.17 4.07 4.80 3.80 4.08
C08_c Temporality: Free time 1 Fully disagree 6 Fully agree 3.76 3.96 4.32 2.94 3.85
C08_d Temporality: Enjoying the present 1 Fully disagree 6 Fully agree 4.19 4.01 4.86 3.77 4.23
C08_e Temporality: Control of future 1 Fully disagree 6 Fully agree 4.50 4.18 4.87 4.64 4.37
C08_f Temporality: Better life compared to parents 1 Fully disagree 6 Fully agree 4.56 4.04 4.83 4.93 4.55
D02_a Satisfaction: Political system 1 Fully dissatisfied 6 Fully satisfied 4.24 4.00 4.69 4.07 4.27
D02_b Satisfaction: Economic system 1 Fully dissatisfied 6 Fully satisfied 4.23 4.03 4.50 4.13 4.32
D03_a Interpersonal trust 1 Fully disagree 6 Fully agree 3.97 4.00 4.33 3.66 3.88
D03_b Citizens’ rights during pandemic 1 Fully disagree 6 Fully agree 4.53 4.08 4.82 4.71 4.63
D03_c Losers of globalization 1 Fully disagree 6 Fully agree 4.12 3.96 4.46 4.03 4.08
D03_d Anti-elitism: Big interests 1 Fully disagree 6 Fully agree 4.35 4.30 4.70 4.43 3.96
D03_e Anti-elitism: Responsible officials 1 Fully disagree 6 Fully agree 4.21 3.90 4.74 4.19 4.10
D04_a Deprivation: Political influence 1 Fully disagree 6 Fully agree 4.23 4.07 4.44 4.26 4.19
D04_b Deprivation: Economic situation 1 Fully disagree 6 Fully agree 4.17 4.04 4.37 4.26 4.04
D04_c Deprivation: Traditions and customs 1 Fully disagree 6 Fully agree 4.12 3.95 4.53 4.02 4.05
D05_a Subjective identity: Local 1 Not close at all 6 Very close 4.57 4.01 4.89 4.74 4.77
D05_b Subjective identity: National 1 Not close at all 6 Very close 4.43 4.36 4.69 4.48 4.22
D05_c Subjective identity: Regional 1 Not close at all 6 Very close 3.90 3.93 4.67 3.00 4.04
D07_a RWA: Defy authority 1 Fully disagree 6 Fully agree 4.05 4.04 4.16 4.15 3.86
D07_b RWA: Discipline and unity 1 Fully disagree 6 Fully agree 4.23 3.97 4.36 4.43 4.23
D07_c RWA: Old-fashioned ways and values 1 Fully disagree 6 Fully agree 4.14 3.95 4.31 4.20 4.17
D07_d RWA: Premarital sexual intercourse 1 Fully disagree 6 Fully agree 3.11 3.64 3.60 2.33 2.82
D07_e RWA: Tougher government and stricter laws 1 Fully disagree 6 Fully agree 3.84 4.12 3.85 3.38 4.01
D07_f RWA: Crack down on troublemakers 1 Fully disagree 6 Fully agree 4.40 4.09 4.43 4.60 4.54
D08_a Globalization: Limiting International trade 1 Fully disagree 6 Fully agree 4.38 4.04 4.76 4.53 4.25
D08_b Globalization: International organizations take away power 1 Fully disagree 6 Fully agree 4.20 3.90 4.79 3.98 4.20
D08_c Globalization: Immigrants endanger society 1 Fully disagree 6 Fully agree 4.20 4.02 4.62 3.97 4.23
D09_a Anti-terror measure: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.63 4.36 4.49 4.84 4.90
D09_b Health data collection: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.85 4.54 4.53 5.22 5.15
D09_c Tax fraud/corruption prevention: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.67 4.45 4.54 4.81 4.91
# Weighted with w2 (India-only)
india_macro_means_w <- pals_india_long %>%
  group_by(india_macro, variable) %>%
  summarise(macro_mean_w2 = weighted.mean(response, w2, na.rm = TRUE),
            .groups = "drop") %>%
  pivot_wider(names_from = india_macro, values_from = macro_mean_w2)

india_overall_means_w <- pals_india_long %>%
  group_by(variable) %>%
  summarise(India_w2 = weighted.mean(response, w2, na.rm = TRUE),
            .groups = "drop")

# Unweighted
india_macro_means_unw <- pals_india_long %>%
  group_by(india_macro, variable) %>%
  summarise(macro_mean_unw = mean(response, na.rm = TRUE),
            .groups = "drop") %>%
  pivot_wider(names_from = india_macro, values_from = macro_mean_unw)

india_overall_means_unw <- pals_india_long %>%
  group_by(variable) %>%
  summarise(India_unw = mean(response, na.rm = TRUE),
            .groups = "drop")

# Combine for comparison
india_macro_compare <- india_overall_means_w %>%
  left_join(india_overall_means_unw, by = "variable") %>%
  left_join(india_macro_means_w, by = "variable") %>%
  left_join(india_macro_means_unw, by = "variable", suffix = c("_w2", "_unw")) %>%
  left_join(labels_lookup, by = "variable")

india_macro_compare_fmt <- india_macro_compare %>%
  transmute(
    variable,
    question,
    meaning_1,
    meaning_6,

    `India (w2)` = India_w2,
    `India (unw)` = India_unw,

    `North (w2)` = North_w2,
    `North (unw)` = North_unw,

    `Central (w2)` = Central_w2,
    `Central (unw)` = Central_unw,

    `East (w2)` = East_w2,
    `East (unw)` = East_unw,

    `South (w2)` = South_w2,
    `South (unw)` = South_unw
  )

india_macro_compare_fmt %>%
  kbl(
    format = "html",
    digits = 2,
    caption = "India macro-regions vs India average (1–6 scale): weighted (w2) and unweighted"
  ) %>%
  kable_styling(full_width = FALSE,
                bootstrap_options = c("striped", "condensed", "hover")) %>%
  scroll_box(width = "100%", height = "600px")
India macro-regions vs India average (1–6 scale): weighted (w2) and unweighted
variable question meaning_1 meaning_6 India (w2) India (unw) North (w2) North (unw) Central (w2) Central (unw) East (w2) East (unw) South (w2) South (unw)
A01 Self-determination 1 Everyone should be allowed to live as they want to, to foster individual freedom. 6 Everyone should live in line with the values of the society to foster social cohesion. 3.24 3.07 2.78 2.71 3.61 3.36 3.07 2.99 3.63 3.60
A02_a Restrictions of freedom: Religious groups/leaders 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.67 3.63 3.78 3.60 4.47 4.43 3.02 3.06 3.40 3.58
A02_b Restrictions of freedom: State/government 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.94 3.94 3.73 3.63 4.46 4.53 3.90 4.04 3.71 3.77
A02_c Restrictions of freedom: Family 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 4.12 3.96 3.83 3.57 4.66 4.61 3.97 3.97 4.12 4.06
A02_d Restrictions of freedom: Police 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.92 3.91 3.86 3.67 4.54 4.53 3.71 3.90 3.61 3.71
A02_e Restrictions of freedom: Businesses/companies 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.63 3.63 3.88 3.68 4.27 4.28 2.94 3.08 3.41 3.53
A02_f Restrictions of freedom: Societal majority 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.98 3.94 3.86 3.66 4.50 4.66 3.93 3.87 3.65 3.77
B01_a Collective self-determination: Political leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Strong political leaders’ opinion should be most decisive for policy-making. 2.78 2.80 2.83 2.76 3.58 3.38 2.30 2.39 2.42 2.81
B01_b Collective self-determination: Elected politicians 1 Citizens’ opinion should be most decisive for policy-making. 6 Elected politicians’ opinion should be most decisive for policy-making. 2.82 2.79 2.86 2.74 3.73 3.49 2.28 2.35 2.43 2.70
B01_c Collective self-determination: Established experts 1 Citizens’ opinion should be most decisive for policy-making. 6 Established experts’ opinion should be most decisive for policy-making. 3.01 2.97 2.89 2.79 3.69 3.39 2.83 2.89 2.67 2.95
B01_d Collective self-determination: Religious leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Religious leaders’ opinion should be most decisive for policy-making. 2.75 2.73 2.65 2.62 3.61 3.39 2.28 2.27 2.48 2.81
B01_e Collective self-determination: The military 1 Citizens’ opinion should be most decisive for policy-making. 6 The military’s opinion should be most decisive for policy-making. 3.01 3.03 2.94 2.96 3.95 3.70 2.56 2.63 2.62 2.98
B02_a Rule of law: Judicial control of government 1 The government should always obey the laws and the court decisions, even if it hinders its work. 6 The government should not be bound at all by laws or court decisions in all instances to be able to work unhindered. 2.81 2.74 2.79 2.59 3.78 3.54 2.45 2.46 2.25 2.52
B02_b Rule of law: Equal enforcement of laws 1 Laws should be enforced equally for everyone in society. 6 Under certain circumstances, laws can be enforced differently for different people. 2.84 2.77 2.62 2.58 3.72 3.53 2.40 2.28 2.70 3.01
B02_c Rule of law: Basic rights across countries 1 Every human should have the same basic rights in all countries. 6 A country’s society should decide which rights people have in its country. 3.05 3.02 2.99 2.93 3.63 3.41 2.46 2.55 3.21 3.42
B03_a Market economy: Private vs. state control 1 Private ownership of businesses and industry should be increased. 6 State ownership of businesses and industry should be increased. 3.41 3.37 2.98 3.06 3.96 3.83 3.46 3.49 3.32 3.35
B03_b Market economy: Competition good/bad for society 1 Competition between businesses is good for a society. 6 Competition between businesses is harmful for a society. 3.46 3.36 2.89 2.93 3.83 3.76 3.18 3.14 4.15 4.12
B03_c Market economy: Source of wealth and status 1 A person’s wealth and status should always be based on talents and efforts. 6 A person’s wealth and status should always be based on ancestry and contacts. 2.68 2.72 2.73 2.78 3.51 3.31 2.15 2.21 2.36 2.63
B04 Progress: Change vs. tradition 1 Society should be open for change trying to ensure a bright future. 6 Society should preserve well-established traditions trying to protect what works well nowadays. 2.71 2.62 2.37 2.31 3.10 2.99 2.95 2.82 2.43 2.58
B05_a Rationality: Science vs. experiences, traditions, and com… 1 Societal decisions should be primarily based on scientific research. 6 Societal decisions should be primarily based on personal experiences, traditions, and common sense. 3.40 3.21 2.97 2.83 3.97 3.86 3.05 2.94 3.78 3.67
B05_b Rationality: Political influence of established scientists 1 Established scientists should have more influence when politicians make important decisions. 6 Established scientists should have less influence when politicians make important decisions. 3.38 3.24 2.99 3.02 4.05 3.89 2.80 2.63 3.91 3.83
B05_c Rationality: Limits of scientific explanations 1 In a society, it is important to accept that all things can be explained by scientific research. 6 In a society, it is important to accept that not all things can be explained by scientific research. 3.03 2.94 2.56 2.53 3.77 3.57 3.11 3.04 2.73 2.94
B05_d Rationality: Individual vs. public determination of facts 1 Everyone should figure out for themselves what is correct by looking for facts. 6 What is correct should result from public discussions of facts. 3.13 3.10 3.10 2.99 3.72 3.53 3.09 3.05 2.60 2.93
B06 Tolerance: Equal acceptance 1 Society should accept all people equally. 6 Society should decide on whom to accept. 2.55 2.56 2.56 2.52 3.13 2.97 2.15 2.21 2.40 2.65
C01_a Borders: Ban access to foreign information 1 Fully disagree 6 Fully agree 4.29 4.22 4.11 4.04 4.43 4.43 4.22 4.15 4.47 4.46
C01_b Borders: Hinder citizens from leaving 1 Fully disagree 6 Fully agree 4.25 4.22 4.01 4.00 4.41 4.36 4.27 4.28 4.38 4.41
C01_c Borders: Reject refugees 1 Fully disagree 6 Fully agree 4.17 4.12 4.01 3.94 4.33 4.20 4.18 4.26 4.23 4.21
C01_d Borders: Reject immigrants 1 Fully disagree 6 Fully agree 4.19 4.19 4.04 4.02 4.33 4.24 4.16 4.24 4.28 4.42
C01_e Borders: Restrict investment of foreign companies 1 Fully disagree 6 Fully agree 4.40 4.37 4.18 4.11 4.51 4.55 4.46 4.51 4.49 4.49
C01_f Borders: Shooting at persons crossing illegally 1 Fully disagree 6 Fully agree 4.22 4.21 4.04 4.07 4.40 4.33 4.07 4.10 4.43 4.51
C01_g Borders: Taking fingerprints 1 Fully disagree 6 Fully agree 4.53 4.50 4.15 4.09 4.78 4.80 4.66 4.76 4.64 4.64
C01_h Borders: Preventing secessions 1 Fully disagree 6 Fully agree 4.29 4.26 4.09 4.06 4.43 4.34 4.36 4.38 4.32 4.44
C03_a1 Human rights violations: Economic intervention 1 Fully disagree 6 Fully agree 4.13 4.10 3.97 3.99 4.25 4.05 4.11 4.13 4.25 4.35
C03_a2 Human rights violations: Military intervention 1 Fully disagree 6 Fully agree 4.17 4.15 4.03 4.06 4.20 4.03 4.21 4.21 4.31 4.42
C03_b1 Dictatorship: Economic intervention 1 Fully disagree 6 Fully agree 4.17 4.14 3.97 4.00 4.25 4.13 4.27 4.22 4.23 4.37
C03_b2 Dictatorship: Military intervention 1 Fully disagree 6 Fully agree 4.17 4.15 4.04 4.08 4.12 3.95 4.20 4.24 4.37 4.41
C04_a Public good provision: Free education 1 Fully disagree 6 Fully agree 4.53 4.53 4.12 4.11 4.77 4.81 4.89 4.94 4.42 4.50
C04_b Public good provision: Free healthcare 1 Fully disagree 6 Fully agree 4.56 4.56 4.04 4.10 4.82 4.85 4.99 5.01 4.49 4.59
C04_c Public good provision: Welfare benefits 1 Fully disagree 6 Fully agree 4.57 4.58 4.12 4.12 4.87 5.01 4.89 4.91 4.49 4.58
C04_d Public good provision: Support for disadvantaged groups 1 Fully disagree 6 Fully agree 4.44 4.48 4.04 4.04 4.78 4.92 4.81 4.85 4.17 4.34
C04_e Public good provision: Support for women 1 Fully disagree 6 Fully agree 4.41 4.43 4.09 4.11 4.71 4.83 4.67 4.65 4.20 4.32
C05_a Scarce jobs: Preference for men 1 Fully disagree 6 Fully agree 4.03 3.96 3.96 3.94 4.27 4.10 3.85 3.71 4.05 4.18
C05_b Scarce jobs: Preference for nationals 1 Fully disagree 6 Fully agree 4.09 4.13 4.02 4.07 4.30 4.19 3.96 4.03 4.09 4.30
C05_c Scarce jobs: Preference for heterosexuals 1 Fully disagree 6 Fully agree 3.90 3.90 3.99 3.94 4.22 4.08 3.48 3.50 3.90 4.15
C05_d Scarce jobs: Preference for people in need 1 Fully disagree 6 Fully agree 4.33 4.30 4.10 3.99 4.43 4.54 4.53 4.46 4.27 4.48
C05_e Scarce jobs: Preference for family members 1 Fully disagree 6 Fully agree 3.87 3.83 3.93 3.94 4.14 3.97 3.42 3.29 4.04 4.19
C05_f Scarce jobs: Preference for own religion 1 Fully disagree 6 Fully agree 3.85 3.83 3.90 3.92 4.22 4.09 3.36 3.28 3.95 4.11
C05_g Scarce jobs: Preference for own ethnic group 1 Fully disagree 6 Fully agree 3.84 3.79 3.92 3.86 4.12 3.95 3.38 3.30 3.97 4.14
C06_a Leadership positions: Gender representation 1 Fully disagree 6 Fully agree 4.29 4.30 4.01 4.05 4.70 4.76 4.30 4.29 4.21 4.32
C06_b Leadership positions: Ethnic representation 1 Fully disagree 6 Fully agree 4.18 4.19 4.01 4.04 4.67 4.69 3.95 3.94 4.15 4.27
C06_c Leadership positions: Economic status representation 1 Fully disagree 6 Fully agree 4.43 4.41 3.99 4.04 4.68 4.74 4.73 4.65 4.40 4.50
C07_a Generational conflict: Prosperity vs. environment 1 Fully disagree 6 Fully agree 4.23 4.26 4.02 4.11 4.55 4.60 4.24 4.17 4.16 4.32
C07_b Generational conflict: Public debt 1 Fully disagree 6 Fully agree 4.11 4.09 3.95 3.98 4.44 4.39 3.86 3.90 4.23 4.26
C08_a Temporality: Punctuality 1 Fully disagree 6 Fully agree 4.47 4.49 4.13 4.14 4.86 5.04 4.57 4.64 4.37 4.41
C08_b Temporality: Efficiency 1 Fully disagree 6 Fully agree 4.17 4.21 4.07 4.07 4.80 4.84 3.80 3.94 4.08 4.19
C08_c Temporality: Free time 1 Fully disagree 6 Fully agree 3.76 3.80 3.96 3.94 4.32 4.18 2.94 3.07 3.85 4.10
C08_d Temporality: Enjoying the present 1 Fully disagree 6 Fully agree 4.19 4.24 4.01 4.06 4.86 4.95 3.77 3.82 4.23 4.38
C08_e Temporality: Control of future 1 Fully disagree 6 Fully agree 4.50 4.46 4.18 4.15 4.87 4.88 4.64 4.60 4.37 4.44
C08_f Temporality: Better life compared to parents 1 Fully disagree 6 Fully agree 4.56 4.50 4.04 4.06 4.83 4.92 4.93 4.78 4.55 4.57
D02_a Satisfaction: Political system 1 Fully dissatisfied 6 Fully satisfied 4.24 4.22 4.00 4.05 4.69 4.50 4.07 4.12 4.27 4.39
D02_b Satisfaction: Economic system 1 Fully dissatisfied 6 Fully satisfied 4.23 4.20 4.03 4.05 4.50 4.40 4.13 4.11 4.32 4.42
D03_a Interpersonal trust 1 Fully disagree 6 Fully agree 3.97 3.94 4.00 3.99 4.33 4.24 3.66 3.55 3.88 4.03
D03_b Citizens’ rights during pandemic 1 Fully disagree 6 Fully agree 4.53 4.50 4.08 4.09 4.82 4.93 4.71 4.66 4.63 4.67
D03_c Losers of globalization 1 Fully disagree 6 Fully agree 4.12 4.07 3.96 3.96 4.46 4.37 4.03 3.93 4.08 4.17
D03_d Anti-elitism: Big interests 1 Fully disagree 6 Fully agree 4.35 4.40 4.30 4.28 4.70 4.71 4.43 4.45 3.96 4.21
D03_e Anti-elitism: Responsible officials 1 Fully disagree 6 Fully agree 4.21 4.18 3.90 3.99 4.74 4.62 4.19 4.04 4.10 4.25
D04_a Deprivation: Political influence 1 Fully disagree 6 Fully agree 4.23 4.17 4.07 4.03 4.44 4.35 4.26 4.16 4.19 4.27
D04_b Deprivation: Economic situation 1 Fully disagree 6 Fully agree 4.17 4.19 4.04 4.08 4.37 4.29 4.26 4.25 4.04 4.22
D04_c Deprivation: Traditions and customs 1 Fully disagree 6 Fully agree 4.12 4.10 3.95 4.00 4.53 4.45 4.02 3.92 4.05 4.18
D05_a Subjective identity: Local 1 Not close at all 6 Very close 4.57 4.50 4.01 3.95 4.89 4.97 4.74 4.70 4.77 4.84
D05_b Subjective identity: National 1 Not close at all 6 Very close 4.43 4.49 4.36 4.33 4.69 4.74 4.48 4.62 4.22 4.38
D05_c Subjective identity: Regional 1 Not close at all 6 Very close 3.90 3.97 3.93 3.98 4.67 4.69 3.00 3.23 4.04 4.13
D07_a RWA: Defy authority 1 Fully disagree 6 Fully agree 4.05 4.06 4.04 4.05 4.16 4.15 4.15 4.04 3.86 4.01
D07_b RWA: Discipline and unity 1 Fully disagree 6 Fully agree 4.23 4.18 3.97 3.89 4.36 4.35 4.43 4.42 4.23 4.28
D07_c RWA: Old-fashioned ways and values 1 Fully disagree 6 Fully agree 4.14 4.09 3.95 3.86 4.31 4.31 4.20 4.17 4.17 4.25
D07_d RWA: Premarital sexual intercourse 1 Fully disagree 6 Fully agree 3.11 3.23 3.64 3.65 3.60 3.42 2.33 2.44 2.82 3.26
D07_e RWA: Tougher government and stricter laws 1 Fully disagree 6 Fully agree 3.84 3.78 4.12 3.94 3.85 3.80 3.38 3.32 4.01 4.06
D07_f RWA: Crack down on troublemakers 1 Fully disagree 6 Fully agree 4.40 4.37 4.09 4.00 4.43 4.39 4.60 4.70 4.54 4.67
D08_a Globalization: Limiting International trade 1 Fully disagree 6 Fully agree 4.38 4.36 4.04 4.07 4.76 4.83 4.53 4.46 4.25 4.32
D08_b Globalization: International organizations take away power 1 Fully disagree 6 Fully agree 4.20 4.20 3.90 4.01 4.79 4.82 3.98 3.88 4.20 4.31
D08_c Globalization: Immigrants endanger society 1 Fully disagree 6 Fully agree 4.20 4.16 4.02 3.99 4.62 4.62 3.97 3.93 4.23 4.33
D09_a Anti-terror measure: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.63 4.51 4.36 4.24 4.49 4.35 4.84 4.87 4.90 4.77
D09_b Health data collection: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.85 4.64 4.54 4.35 4.53 4.33 5.22 5.07 5.15 5.01
D09_c Tax fraud/corruption prevention: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.67 4.49 4.45 4.31 4.54 4.25 4.81 4.81 4.91 4.72
pals_india <- pals_india %>%
  mutate(gender = case_when(
    F01 == 1 ~ "Male",
    F01 == 2 ~ "Female",
    F01 == 3 ~ "Other",
    TRUE ~ "Missing"
  ))

# UNWEIGHTED: region x gender
gender_india_region_unw <- pals_india %>%
  filter(!is.na(india_macro), gender != "Missing") %>%
  count(india_macro, gender, name = "n_unw") %>%
  group_by(india_macro) %>%
  mutate(pct_unw = round(100 * n_unw / sum(n_unw), 1)) %>%
  ungroup()

# WEIGHTED (w2)
gender_india_region_wt <- pals_india %>%
  filter(!is.na(india_macro), gender != "Missing", !is.na(w2), w2 > 0) %>%
  count(india_macro, gender, wt = w2, name = "n_wt") %>%
  group_by(india_macro) %>%
  mutate(pct_wt = round(100 * n_wt / sum(n_wt), 1)) %>%
  ungroup()

# Combined table
gender_india_region <- full_join(
  gender_india_region_unw,
  gender_india_region_wt,
  by = c("india_macro", "gender")
) %>%
  arrange(india_macro, gender)

gender_india_region %>%
  mutate(
    pct_unw = paste0(pct_unw, "%"),
    pct_wt  = paste0(pct_wt, "%")
  ) %>%
  select(india_macro, gender, n_unw, pct_unw, n_wt, pct_wt) %>%
  knitr::kable(
    format = "html",
    caption = "India: Gender distribution by macro-region (unweighted vs weighted)"
  ) %>%
  kableExtra::kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE
  )
India: Gender distribution by macro-region (unweighted vs weighted)
india_macro gender n_unw pct_unw n_wt pct_wt
North Female 549 51.6% 419.5326 51.3%
North Male 515 48.4% 398.7048 48.7%
Central Female 238 41.8% 278.5330 42.9%
Central Male 331 58.2% 370.6204 57.1%
East Female 322 46.9% 336.9800 47.8%
East Male 365 53.1% 368.6057 52.2%
South Female 235 46.8% 305.0804 47%
South Male 267 53.2% 343.9431 53%

India - political party preferences and attitudes

var <- "E02_b"   # India party list (country-specific) 

# Extract value labels (code -> party name)
lkp <- enframe(attr(pals[[var]], "labels"), name = "party", value = "code")

tab_e02 <- pals %>%
  filter(country == 17) %>%
  mutate(code = as.numeric(as.character(.data[[var]]))) %>%
  count(code, name = "N") %>%
  left_join(lkp, by = "code") %>%
  mutate(pct = round(100 * N / sum(N), 1)) %>%
  arrange(desc(N))

tab_e02 %>%
  select(code, party, N, pct) %>%
  knitr::kable(format = "html", caption = "India (country==17): E02 vote choice distribution") %>%
  kableExtra::kable_styling(
    bootstrap_options = c("striped", "condensed", "hover"),
    full_width = FALSE
  )
India (country==17): E02 vote choice distribution
code party N pct
1719 IND: Indian People s Party 970 34.4
99998 I prefer not to say. 448 15.9
99996 Not applicable 419 14.8
1717 IND: Indian National Congress 281 10.0
99 Other 98 3.5
1709 IND: Biju Janata Dal 73 2.6
99999 Don’t know 71 2.5
1712 IND: Common Man s Party 68 2.4
1740 IND: Socialist Party 55 1.9
1703 IND: All India Trinamool Congress 43 1.5
1714 IND: Communist Party of India (Marxist) 42 1.5
1738 IND: Shirmani Akali Dal 41 1.5
1743 IND: We Tamils Party 30 1.1
1716 IND: Dravidian Progress Federation 25 0.9
98 I voted blank/null 23 0.8
1708 IND: Bahujan Samaj Party 20 0.7
1701 IND: All India Anna Dravidian Progress Federation 17 0.6
1741 IND: Telugu Desam Party 17 0.6
1711 IND: Centre for People s Justice 15 0.5
1723 IND: Jannayak Janta Party 8 0.3
1732 IND: People s Army Party 7 0.2
1736 IND: Rashtriya Loktantrik Party 7 0.2
1744 IND: Working people s party 6 0.2
1713 IND: Communist Party of India 5 0.2
1722 IND: Janata Dal (United) 5 0.2
1731 IND: Nationalist Congress Party 5 0.2
1739 IND: Shiv Sena 5 0.2
1721 IND: Janata Dal (Secular) 4 0.1
1725 IND: Jharkhand Liberation Front 4 0.1
1728 IND: Lok Insaaf Party 4 0.1
1735 IND: Rashtriya Janata Dal 3 0.1
1705 IND: All Jharkhand Students Union 1 0.0
1724 IND: Jharkhand Development Front (Democratic) 1 0.0
1730 IND: National Progressive Dravidian Federation 1 0.0

It is extremely difficult to categorize Indian political parties as conservative, liberal, leftist (except for the ones explicit in their inclination). Most of them heterogeneous in their policies across regions (consider BJP in UP and Goa) but also have aligned with their counterparts in other side of the political spectrum. Anyway, I have tried to put them in three brackets.

  1. BJP+ – Indian People s Party (BJP), Shiv Sena.

  2. Congress and fragments – Indian National Congress, All India Trinamool Congress, Nationalist Congress Party.

  3. Regional Parties – Socialist Party, Communist Party of India (Marxist), Dravidian Progress Federation, Biju Janata Dal, Centre for Peoples Justice, Common Mans Party (AAP), Bahujan Samaj Party, Communist Party of India, Janata Dal (Secular), Lok Insaaf Party, People s Army Party, Rashtriya Loktantrik Party, Janata Dal (United), Jharkhand Liberation Front, Rashtriya Janata Dal, All Jharkhand Students Union, Jharkhand Development Front (Democratic), National Progressive Dravidian Federation, Shirmani Akali Dal, We Tamils Party, All India Anna Dravidian Progress Federation, Telugu Desam Party, Jannayak Janta Party, Working people s party.

  4. No reported party –I prefer not to say, Not applicable, Other, Don’t know, I voted blank/null

pals_ind <- pals %>%
  filter(country == 17) %>%   # India
  mutate(
    E02_code = as.numeric(as.character(E02_b)),   
    party_cat = case_when(
      # BJP+
      E02_code %in% c(1719, 1739) ~ "BJP+",

      # Congress and fragments
      E02_code %in% c(1717, 1731, 1703) ~ "Congress and Fragments",

      # Regional Parties
      E02_code %in% c(1740, 1738, 1744, 1743, 1709, 1712, 1711, 1701, 1741, 1723, 1714, 1716, 1708, 1713, 1722, 1725, 1735, 1705, 1724, 1730,1721, 1728, 1732, 1736) ~ "Regional Parties",

      # No reported party (PALS special codes)
      E02_code %in% c(98, 99, 99996, 99998, 99999) ~ "No reported party",

      # Anything else not in your mapping (safety net)
      TRUE ~ "No reported party"
    )
  )

pals_ind %>%
  count(party_cat, name = "N") %>%
  mutate(pct = round(100 * N / sum(N), 1)) %>%
  arrange(desc(N))
## # A tibble: 4 × 3
##   party_cat                  N   pct
##   <chr>                  <int> <dbl>
## 1 No reported party       1059  37.5
## 2 BJP+                     975  34.5
## 3 Regional Parties         459  16.3
## 4 Congress and Fragments   329  11.7
pals_party_long <- pals_ind %>%
  select(party_cat, w2, all_of(six_point_vars)) %>%
  mutate(across(all_of(six_point_vars), \(x) as.numeric(as.character(x)))) %>%
  pivot_longer(
    cols = all_of(six_point_vars),
    names_to = "variable",
    values_to = "response"
  ) %>%
  filter(!is.na(party_cat),
         !is.na(response),
         response %in% 1:6,
         w2 > 0)

# 2) Party-category weighted means
party_means <- pals_party_long %>%
  group_by(party_cat, variable) %>%
  summarise(
    party_mean = weighted.mean(response, w2, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  pivot_wider(names_from = party_cat, values_from = party_mean)

# 3) India overall weighted mean
india_overall_means <- pals_party_long %>%
  group_by(variable) %>%
  summarise(
    India = weighted.mean(response, w2, na.rm = TRUE),
    .groups = "drop"
  )

# 4) Final table with labels (same style as earlier)
india_party_table <- india_overall_means %>%
  left_join(party_means, by = "variable") %>%
  left_join(labels_lookup, by = "variable") %>%
  select(
    variable, question, meaning_1, meaning_6,
    India,
    `BJP+`, `Congress and Fragments`, `Regional Parties`, `No reported party`
  )

india_party_table %>%
  kableExtra::kbl(
    format = "html",
    digits = 2,
    caption = "India vs Party-Category Averages (1–6 scale), weighted"
  ) %>%
  kableExtra::kable_styling(full_width = FALSE) %>%
  kableExtra::scroll_box(width = "100%", height = "600px")
India vs Party-Category Averages (1–6 scale), weighted
variable question meaning_1 meaning_6 India BJP+ Congress and Fragments Regional Parties No reported party
A01 Self-determination 1 Everyone should be allowed to live as they want to, to foster individual freedom. 6 Everyone should live in line with the values of the society to foster social cohesion. 3.24 3.12 2.78 2.72 3.61
A02_a Restrictions of freedom: Religious groups/leaders 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.67 3.98 3.43 3.24 3.64
A02_b Restrictions of freedom: State/government 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.94 4.26 4.22 3.24 3.87
A02_c Restrictions of freedom: Family 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 4.12 4.30 4.45 3.54 4.11
A02_d Restrictions of freedom: Police 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.92 4.17 4.24 3.39 3.84
A02_e Restrictions of freedom: Businesses/companies 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.63 4.00 3.34 3.13 3.60
A02_f Restrictions of freedom: Societal majority 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.98 4.22 4.13 3.27 4.02
B01_a Collective self-determination: Political leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Strong political leaders’ opinion should be most decisive for policy-making. 2.78 3.05 2.26 2.53 2.79
B01_b Collective self-determination: Elected politicians 1 Citizens’ opinion should be most decisive for policy-making. 6 Elected politicians’ opinion should be most decisive for policy-making. 2.82 3.13 2.33 2.55 2.81
B01_c Collective self-determination: Established experts 1 Citizens’ opinion should be most decisive for policy-making. 6 Established experts’ opinion should be most decisive for policy-making. 3.01 3.35 2.72 2.61 2.97
B01_d Collective self-determination: Religious leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Religious leaders’ opinion should be most decisive for policy-making. 2.75 2.89 2.31 2.53 2.82
B01_e Collective self-determination: The military 1 Citizens’ opinion should be most decisive for policy-making. 6 The military’s opinion should be most decisive for policy-making. 3.01 3.40 2.84 2.69 2.87
B02_a Rule of law: Judicial control of government 1 The government should always obey the laws and the court decisions, even if it hinders its work. 6 The government should not be bound at all by laws or court decisions in all instances to be able to work unhindered. 2.81 3.23 2.26 2.52 2.74
B02_b Rule of law: Equal enforcement of laws 1 Laws should be enforced equally for everyone in society. 6 Under certain circumstances, laws can be enforced differently for different people. 2.84 2.96 2.17 2.59 3.00
B02_c Rule of law: Basic rights across countries 1 Every human should have the same basic rights in all countries. 6 A country’s society should decide which rights people have in its country. 3.05 3.11 2.53 2.79 3.23
B03_a Market economy: Private vs. state control 1 Private ownership of businesses and industry should be increased. 6 State ownership of businesses and industry should be increased. 3.41 3.31 3.83 3.07 3.48
B03_b Market economy: Competition good/bad for society 1 Competition between businesses is good for a society. 6 Competition between businesses is harmful for a society. 3.46 3.25 2.97 3.39 3.77
B03_c Market economy: Source of wealth and status 1 A person’s wealth and status should always be based on talents and efforts. 6 A person’s wealth and status should always be based on ancestry and contacts. 2.68 2.89 2.40 2.54 2.65
B04 Progress: Change vs. tradition 1 Society should be open for change trying to ensure a bright future. 6 Society should preserve well-established traditions trying to protect what works well nowadays. 2.71 2.73 2.66 2.32 2.83
B05_a Rationality: Science vs. experiences, traditions, and com… 1 Societal decisions should be primarily based on scientific research. 6 Societal decisions should be primarily based on personal experiences, traditions, and common sense. 3.40 3.31 2.96 2.98 3.71
B05_b Rationality: Political influence of established scientists 1 Established scientists should have more influence when politicians make important decisions. 6 Established scientists should have less influence when politicians make important decisions. 3.38 3.13 2.95 2.83 3.86
B05_c Rationality: Limits of scientific explanations 1 In a society, it is important to accept that all things can be explained by scientific research. 6 In a society, it is important to accept that not all things can be explained by scientific research. 3.03 3.18 2.86 2.63 3.08
B05_d Rationality: Individual vs. public determination of facts 1 Everyone should figure out for themselves what is correct by looking for facts. 6 What is correct should result from public discussions of facts. 3.13 3.32 2.77 3.05 3.10
B06 Tolerance: Equal acceptance 1 Society should accept all people equally. 6 Society should decide on whom to accept. 2.55 2.83 2.05 2.44 2.52
C01_a Borders: Ban access to foreign information 1 Fully disagree 6 Fully agree 4.29 4.51 4.33 4.34 4.11
C01_b Borders: Hinder citizens from leaving 1 Fully disagree 6 Fully agree 4.25 4.43 4.41 4.29 4.07
C01_c Borders: Reject refugees 1 Fully disagree 6 Fully agree 4.17 4.33 4.26 4.19 4.04
C01_d Borders: Reject immigrants 1 Fully disagree 6 Fully agree 4.19 4.33 4.14 4.20 4.10
C01_e Borders: Restrict investment of foreign companies 1 Fully disagree 6 Fully agree 4.40 4.49 4.62 4.52 4.23
C01_f Borders: Shooting at persons crossing illegally 1 Fully disagree 6 Fully agree 4.22 4.45 4.31 4.31 4.00
C01_g Borders: Taking fingerprints 1 Fully disagree 6 Fully agree 4.53 4.69 4.92 4.45 4.35
C01_h Borders: Preventing secessions 1 Fully disagree 6 Fully agree 4.29 4.38 4.47 4.45 4.12
C03_a1 Human rights violations: Economic intervention 1 Fully disagree 6 Fully agree 4.13 4.20 4.34 4.15 4.03
C03_a2 Human rights violations: Military intervention 1 Fully disagree 6 Fully agree 4.17 4.30 4.36 4.28 4.00
C03_b1 Dictatorship: Economic intervention 1 Fully disagree 6 Fully agree 4.17 4.24 4.46 4.10 4.06
C03_b2 Dictatorship: Military intervention 1 Fully disagree 6 Fully agree 4.17 4.26 4.46 4.38 3.96
C04_a Public good provision: Free education 1 Fully disagree 6 Fully agree 4.53 4.62 5.06 4.47 4.35
C04_b Public good provision: Free healthcare 1 Fully disagree 6 Fully agree 4.56 4.67 5.02 4.51 4.38
C04_c Public good provision: Welfare benefits 1 Fully disagree 6 Fully agree 4.57 4.62 4.86 4.58 4.45
C04_d Public good provision: Support for disadvantaged groups 1 Fully disagree 6 Fully agree 4.44 4.48 4.60 4.56 4.32
C04_e Public good provision: Support for women 1 Fully disagree 6 Fully agree 4.41 4.49 4.48 4.50 4.30
C05_a Scarce jobs: Preference for men 1 Fully disagree 6 Fully agree 4.03 4.26 3.98 4.29 3.78
C05_b Scarce jobs: Preference for nationals 1 Fully disagree 6 Fully agree 4.09 4.32 4.16 4.27 3.84
C05_c Scarce jobs: Preference for heterosexuals 1 Fully disagree 6 Fully agree 3.90 4.20 3.57 4.23 3.64
C05_d Scarce jobs: Preference for people in need 1 Fully disagree 6 Fully agree 4.33 4.41 4.57 4.38 4.18
C05_e Scarce jobs: Preference for family members 1 Fully disagree 6 Fully agree 3.87 4.17 3.69 4.17 3.59
C05_f Scarce jobs: Preference for own religion 1 Fully disagree 6 Fully agree 3.85 4.11 3.74 4.02 3.62
C05_g Scarce jobs: Preference for own ethnic group 1 Fully disagree 6 Fully agree 3.84 4.15 3.77 4.10 3.55
C06_a Leadership positions: Gender representation 1 Fully disagree 6 Fully agree 4.29 4.36 4.60 4.36 4.13
C06_b Leadership positions: Ethnic representation 1 Fully disagree 6 Fully agree 4.18 4.31 4.37 4.31 3.99
C06_c Leadership positions: Economic status representation 1 Fully disagree 6 Fully agree 4.43 4.54 4.70 4.51 4.26
C07_a Generational conflict: Prosperity vs. environment 1 Fully disagree 6 Fully agree 4.23 4.41 4.28 4.22 4.09
C07_b Generational conflict: Public debt 1 Fully disagree 6 Fully agree 4.11 4.29 3.92 4.34 3.94
C08_a Temporality: Punctuality 1 Fully disagree 6 Fully agree 4.47 4.58 4.76 4.32 4.36
C08_b Temporality: Efficiency 1 Fully disagree 6 Fully agree 4.17 4.37 4.08 4.14 4.06
C08_c Temporality: Free time 1 Fully disagree 6 Fully agree 3.76 4.14 3.56 3.64 3.58
C08_d Temporality: Enjoying the present 1 Fully disagree 6 Fully agree 4.19 4.42 3.98 4.21 4.09
C08_e Temporality: Control of future 1 Fully disagree 6 Fully agree 4.50 4.62 4.92 4.39 4.34
C08_f Temporality: Better life compared to parents 1 Fully disagree 6 Fully agree 4.56 4.56 4.99 4.54 4.46
D02_a Satisfaction: Political system 1 Fully dissatisfied 6 Fully satisfied 4.24 4.43 4.31 4.20 4.08
D02_b Satisfaction: Economic system 1 Fully dissatisfied 6 Fully satisfied 4.23 4.44 4.32 4.12 4.09
D03_a Interpersonal trust 1 Fully disagree 6 Fully agree 3.97 4.21 3.73 4.09 3.81
D03_b Citizens’ rights during pandemic 1 Fully disagree 6 Fully agree 4.53 4.60 4.67 4.66 4.41
D03_c Losers of globalization 1 Fully disagree 6 Fully agree 4.12 4.34 4.22 4.12 3.93
D03_d Anti-elitism: Big interests 1 Fully disagree 6 Fully agree 4.35 4.48 4.64 4.32 4.19
D03_e Anti-elitism: Responsible officials 1 Fully disagree 6 Fully agree 4.21 4.44 4.22 4.29 4.03
D04_a Deprivation: Political influence 1 Fully disagree 6 Fully agree 4.23 4.38 4.57 4.20 4.05
D04_b Deprivation: Economic situation 1 Fully disagree 6 Fully agree 4.17 4.36 4.44 4.14 3.98
D04_c Deprivation: Traditions and customs 1 Fully disagree 6 Fully agree 4.12 4.27 4.24 4.17 3.97
D05_a Subjective identity: Local 1 Not close at all 6 Very close 4.57 4.52 4.77 4.52 4.58
D05_b Subjective identity: National 1 Not close at all 6 Very close 4.43 4.57 4.74 4.35 4.29
D05_c Subjective identity: Regional 1 Not close at all 6 Very close 3.90 4.36 3.79 3.61 3.67
D07_a RWA: Defy authority 1 Fully disagree 6 Fully agree 4.05 4.05 4.29 4.08 3.98
D07_b RWA: Discipline and unity 1 Fully disagree 6 Fully agree 4.23 4.21 4.54 4.22 4.18
D07_c RWA: Old-fashioned ways and values 1 Fully disagree 6 Fully agree 4.14 4.21 4.22 4.21 4.06
D07_d RWA: Premarital sexual intercourse 1 Fully disagree 6 Fully agree 3.11 3.25 2.60 3.41 3.03
D07_e RWA: Tougher government and stricter laws 1 Fully disagree 6 Fully agree 3.84 3.66 3.98 3.77 3.96
D07_f RWA: Crack down on troublemakers 1 Fully disagree 6 Fully agree 4.40 4.53 4.75 4.54 4.18
D08_a Globalization: Limiting International trade 1 Fully disagree 6 Fully agree 4.38 4.58 4.52 4.40 4.19
D08_b Globalization: International organizations take away power 1 Fully disagree 6 Fully agree 4.20 4.28 4.00 4.31 4.14
D08_c Globalization: Immigrants endanger society 1 Fully disagree 6 Fully agree 4.20 4.48 4.08 4.26 4.00
D09_a Anti-terror measure: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.63 4.89 4.66 4.42 4.52
D09_b Health data collection: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.85 4.92 4.91 4.77 4.81
D09_c Tax fraud/corruption prevention: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.67 4.91 4.70 4.42 4.56

Now coming to the market segmentation and positionality part:

Market segmentation is a method for dividing consumers (voters) into subsets that share common needs, wants, characteristics, ideals, and/or behaviors and then targeting these segments by creating offerings that are specifically tailored to the segments. Positioning is a marketing strategy that is designed to differentiate an offering from its competition (political parties/substitute) and communicate this difference in a way that provides a competitive advantage.

Now for US where two party system operates this segmentation and positionality reduces to 2 parallel substitutes, with zero overlapping market share. But for India this would mean multiple substitutes, with overlapping market share. Clustering voters in terms of preferences, issues, needs can be done but the conundrum will be the positionality.

India v/s the World

Next, I compared India’s weighted means against global averages (across all countries). Set threshold at ≥1.0 point deviation on 1-6 scale.

Striking result: Zero questions where India scores below global average by 1+ point (closest is 0.97). On 12 questions, India is 1.0+ points higher than the global average. In other words, when India diverges strongly from the world, it does so in one direction only.

Now if we look at these question we would see these are those questions where self interest comes in conflict with the liberal values, hence a conservative shift.

For example:

C07 | Generational conflict: (b) Current generations should be allowed to take on public debt to maintain their prosperity regardless of the fact that this constitutes a burden for future generations.

C01 | Borders: (f) My country should have the right to shoot at a person who crosses the country’s border illegally.

C01 | Borders: (b) My country should have the right to hinder citizens from leaving their country.

pals_long_w2 <- pals %>%
  left_join(country_lookup, by = "country") %>%
  mutate(across(all_of(six_point_vars), haven::zap_labels)) %>%  # <-- add this
  select(country_name, w2, all_of(six_point_vars)) %>%
  pivot_longer(
    cols = all_of(six_point_vars),
    names_to = "variable",
    values_to = "response"
  ) %>%
  filter(response %in% 1:6, w2 > 0)

country_means_w2 <- pals_long_w2 %>%
  group_by(country_name, variable) %>%
  summarise(
    country_mean = weighted.mean(response, w2, na.rm = TRUE),
    .groups = "drop"
  )

global_means_w2 <- pals_long_w2 %>%
  group_by(variable) %>%
  summarise(
    global_mean = weighted.mean(response, w2, na.rm = TRUE),
    .groups = "drop"
  )

india_vs_global_w2 <- country_means_w2 %>%
  filter(country_name == "India") %>%
  left_join(global_means_w2, by = "variable") %>%
  mutate(
    gap = country_mean - global_mean,
    abs_gap = abs(gap)
  ) %>%
  arrange(desc(abs_gap))

#Filter of 1.0 point
india_far_from_world_w2 <- india_vs_global_w2 %>%
  filter(abs_gap >= 1.0) %>%
  mutate(
    question = sapply(variable, function(v) attr(pals[[v]], "label"))
  )

india_far_from_world_w2 <- india_far_from_world_w2 %>%
  select(
    variable,
    question,
    india_mean = country_mean,
    global_mean,
    gap,
    abs_gap
  ) %>%
  arrange(desc(abs_gap))

view(india_far_from_world_w2)

#plotting 
india_plot_data <- india_far_from_world_w2 %>%
  pivot_longer(
    cols = c(india_mean, global_mean),
    names_to = "group",
    values_to = "mean_value"
  )

ggplot(
  india_plot_data,
  aes(
    x = reorder(question, mean_value),
    y = mean_value,
    fill = group
  )
) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_fill_manual(
    values = c("india_mean" = "firebrick", "global_mean" = "grey60"),
    labels = c("Global average", "India")
  ) +
  labs(
    title = "India vs Global Average on Selected Questions (w2-weighted)",
    subtitle = "Only questions where |India − Global| ≥ 1.0",
    x = NULL,
    y = "Weighted mean response (1–6 scale)",
    fill = NULL
  ) +
  theme_minimal()

summary(india_far_from_world_w2$abs_gap)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.023   1.110   1.217   1.271   1.430   1.541

Moving to region-level breakdowns.

Categorizing countries into regions

India: country code 17

EU/West (12 countries): 11(Australia), 14(France), 15(Germany), 19(Italy), 21(Latvia), 25(Poland), 27(Russia), 31(Spain), 32(Sweden), 34(Turkey), 35(UK), 36(USA)

East Asia (4 countries): 18(Indonesia), 20(Japan), 26(South Korea), 29(Singapore)

Latin America (4 countries): 12(Brazil), 13(Chile), 22(Mexico), 24(Peru)

Africa (5 countries): 16(Ghana), 23(Nigeria), 28(Senegal), 30(South Africa), 33(Tunisia)

pals <- pals %>%
  mutate(
    region = case_when(
      country %in% c(14, 15, 19, 21, 25, 27, 31, 32, 35, 36, 34, 11) ~ "EU/West",
      
      country == 17 ~ "India",
      
      country %in% c(12, 13, 22, 24) ~ "Latin America",
      
      country %in% c(18, 20, 29, 26) ~ "East Asia",
      
      country %in% c(16, 23, 28, 30, 33) ~ "Africa",
      
      TRUE ~ NA_character_
    )
  )

pals$region <- factor(
  pals$region,
  levels = c(
    "India",
    "EU/West",
    "East Asia",
    "Latin America",
    "Africa"
    
  )
)

table(pals$region, pals$country)
##                
##                   11   12   13   14   15   16   17   18   19   20   21   22
##   India            0    0    0    0    0    0 2822    0    0    0    0    0
##   EU/West       2032    0    0 2001 2020    0    0    0 2119    0 2100    0
##   East Asia        0    0    0    0    0    0    0 2001    0 2000    0    0
##   Latin America    0 2110 2005    0    0    0    0    0    0    0    0 2160
##   Africa           0    0    0    0    0 2000    0    0    0    0    0    0
##                
##                   23   24   25   26   27   28   29   30   31   32   33   34
##   India            0    0    0    0    0    0    0    0    0    0    0    0
##   EU/West          0    0 2037    0 2143    0    0    0 2114 2090    0 2016
##   East Asia        0    0    0 2084    0    0 2010    0    0    0    0    0
##   Latin America    0 2018    0    0    0    0    0    0    0    0    0    0
##   Africa        2000    0    0    0    0 1996    0 2030    0    0 2012    0
##                
##                   35   36
##   India            0    0
##   EU/West       2007 2033
##   East Asia        0    0
##   Latin America    0    0
##   Africa           0    0
#India v/s Regional averages

# 1. Extend pals_long_w2 to include region:
pals_long_w2 <- suppressWarnings({
  pals %>%
    left_join(country_lookup, by = "country") %>%
    select(country_name, region, w2, w4, all_of(six_point_vars)) %>%
    pivot_longer(
      cols = all_of(six_point_vars),     
      names_to = "variable",             
      values_to = "response"             
    ) %>%
    filter(!is.na(response), response %in% 1:6, w2 > 0)
})

# 2. Compute region-level means (equal country weight):
region_means_w24 <- pals_long_w2 %>%
  group_by(region, variable) %>%
  summarise(
    region_mean = weighted.mean(response, w2 * w4, na.rm = TRUE),
    .groups = "drop"
  )

# 3. India vs region:
india_vs_region_w24 <- country_means_w2 %>%  
  filter(country_name == "India") %>%
  left_join(region_means_w24, by = "variable") %>%
  mutate(
    gap = country_mean - region_mean, 
    abs_gap = abs(gap)
  ) %>%
  filter(abs_gap >= 1.0)
region_comparison_table <- pals_long_w2%>%
  filter(region != "India") %>%
  group_by(region, variable) %>%
  summarise(region_mean = weighted.mean(response, w2 * w4, na.rm = TRUE), .groups = "drop") %>%
  pivot_wider(names_from = region, values_from = region_mean, values_fill = NA) %>%
  
  # India column
  left_join(
    country_means_w2%>% 
      filter(country_name == "India") %>% 
      transmute(variable, India = country_mean),
    by = "variable"
  ) %>%
  
  
  select(variable, India, `EU/West`, `East Asia`, `Latin America`, `Africa`, everything()) %>%
  
  # Add labels 
  mutate(
    question = str_trunc(sapply(variable, function(v) attr(pals[[v]], "label")), 60),
    meaning_1 = sapply(variable, function(v) {
      lbls <- attr(pals[[v]], "labels")
      if(is.null(lbls) || !1%in% lbls) return(NA_character_)
      names(lbls)[lbls == 1]
    }),
    meaning_6 = sapply(variable, function(v) {
      lbls <- attr(pals[[v]], "labels")
      if(is.null(lbls) || !6%in% lbls) return(NA_character_)
      names(lbls)[lbls == 6]
    })
  ) %>%
  
  # Final column order 
  select(variable, question, meaning_1, meaning_6, India, `EU/West`, `East Asia`, `Latin America`, `Africa`)

region_comparison_table %>%
  kableExtra::kable(digits = 2, booktabs = TRUE, caption = "India vs Regional Averages (1-6 Scale)") %>%
  kableExtra::kable_styling(full_width = FALSE) %>%
  kableExtra::scroll_box(width = "100%", height = "600px")
India vs Regional Averages (1-6 Scale)
variable question meaning_1 meaning_6 India EU/West East Asia Latin America Africa
A01 Self-determination 1 Everyone should be allowed to live as they want to, to foster individual freedom. 6 Everyone should live in line with the values of the society to foster social cohesion. 3.24 3.57 3.63 3.53 3.54
A02_a Restrictions of freedom: Religious groups/leaders 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.67 2.41 3.10 2.44 3.62
A02_b Restrictions of freedom: State/government 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.94 3.23 3.48 3.11 3.60
A02_c Restrictions of freedom: Family 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 4.12 2.90 3.45 3.12 3.89
A02_d Restrictions of freedom: Police 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.92 3.55 3.56 3.42 3.54
A02_e Restrictions of freedom: Businesses/companies 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.63 2.52 3.12 2.57 3.09
A02_f Restrictions of freedom: Societal majority 1 Not at all allowed to restrict freedom 6 Fully allowed to restrict freedom 3.98 3.11 3.53 3.12 3.67
B01_a Collective self-determination: Political leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Strong political leaders’ opinion should be most decisive for policy-making. 2.78 2.68 2.79 2.35 2.38
B01_b Collective self-determination: Elected politicians 1 Citizens’ opinion should be most decisive for policy-making. 6 Elected politicians’ opinion should be most decisive for policy-making. 2.82 2.70 2.77 2.37 2.29
B01_c Collective self-determination: Established experts 1 Citizens’ opinion should be most decisive for policy-making. 6 Established experts’ opinion should be most decisive for policy-making. 3.01 3.25 3.14 3.19 2.96
B01_d Collective self-determination: Religious leaders 1 Citizens’ opinion should be most decisive for policy-making. 6 Religious leaders’ opinion should be most decisive for policy-making. 2.75 2.14 2.59 2.12 3.01
B01_e Collective self-determination: The military 1 Citizens’ opinion should be most decisive for policy-making. 6 The military’s opinion should be most decisive for policy-making. 3.01 2.61 2.58 2.47 2.67
B02_a Rule of law: Judicial control of government 1 The government should always obey the laws and the court decisions, even if it hinders its work. 6 The government should not be bound at all by laws or court decisions in all instances to be able to work unhindered. 2.81 2.11 2.51 2.30 2.10
B02_b Rule of law: Equal enforcement of laws 1 Laws should be enforced equally for everyone in society. 6 Under certain circumstances, laws can be enforced differently for different people. 2.84 2.08 2.29 2.14 2.05
B02_c Rule of law: Basic rights across countries 1 Every human should have the same basic rights in all countries. 6 A country’s society should decide which rights people have in its country. 3.05 2.51 2.54 2.09 2.87
B03_a Market economy: Private vs. state control 1 Private ownership of businesses and industry should be increased. 6 State ownership of businesses and industry should be increased. 3.41 3.39 3.23 3.28 3.64
B03_b Market economy: Competition good/bad for society 1 Competition between businesses is good for a society. 6 Competition between businesses is harmful for a society. 3.46 2.43 2.60 2.31 2.38
B03_c Market economy: Source of wealth and status 1 A person’s wealth and status should always be based on talents and efforts. 6 A person’s wealth and status should always be based on ancestry and contacts. 2.68 2.11 2.23 1.86 2.06
B04 Progress: Change vs. tradition 1 Society should be open for change trying to ensure a bright future. 6 Society should preserve well-established traditions trying to protect what works well nowadays. 2.71 2.66 2.56 2.36 2.50
B05_a Rationality: Science vs. experiences, traditions, and com… 1 Societal decisions should be primarily based on scientific research. 6 Societal decisions should be primarily based on personal experiences, traditions, and common sense. 3.40 3.31 3.31 3.30 3.30
B05_b Rationality: Political influence of established scientists 1 Established scientists should have more influence when politicians make important decisions. 6 Established scientists should have less influence when politicians make important decisions. 3.38 2.63 2.98 2.57 2.66
B05_c Rationality: Limits of scientific explanations 1 In a society, it is important to accept that all things can be explained by scientific research. 6 In a society, it is important to accept that not all things can be explained by scientific research. 3.03 3.44 3.56 3.61 3.50
B05_d Rationality: Individual vs. public determination of facts 1 Everyone should figure out for themselves what is correct by looking for facts. 6 What is correct should result from public discussions of facts. 3.13 3.31 3.25 3.32 3.28
B06 Tolerance: Equal acceptance 1 Society should accept all people equally. 6 Society should decide on whom to accept. 2.55 2.37 2.44 1.91 2.54
C01_a Borders: Ban access to foreign information 1 Fully disagree 6 Fully agree 4.29 2.53 3.00 2.47 2.98
C01_b Borders: Hinder citizens from leaving 1 Fully disagree 6 Fully agree 4.25 2.49 3.08 2.36 2.83
C01_c Borders: Reject refugees 1 Fully disagree 6 Fully agree 4.17 3.70 3.87 3.31 3.32
C01_d Borders: Reject immigrants 1 Fully disagree 6 Fully agree 4.19 4.02 4.18 3.28 3.30
C01_e Borders: Restrict investment of foreign companies 1 Fully disagree 6 Fully agree 4.40 4.37 4.32 3.85 4.29
C01_f Borders: Shooting at persons crossing illegally 1 Fully disagree 6 Fully agree 4.22 2.89 3.63 2.56 2.93
C01_g Borders: Taking fingerprints 1 Fully disagree 6 Fully agree 4.53 4.55 4.48 4.77 4.92
C01_h Borders: Preventing secessions 1 Fully disagree 6 Fully agree 4.29 3.66 3.99 3.30 3.95
C03_a1 Human rights violations: Economic intervention 1 Fully disagree 6 Fully agree 4.13 4.33 4.26 3.67 3.34
C03_a2 Human rights violations: Military intervention 1 Fully disagree 6 Fully agree 4.17 3.75 3.70 3.60 3.47
C03_b1 Dictatorship: Economic intervention 1 Fully disagree 6 Fully agree 4.17 4.23 4.12 3.61 3.35
C03_b2 Dictatorship: Military intervention 1 Fully disagree 6 Fully agree 4.17 3.65 3.62 3.68 3.51
C04_a Public good provision: Free education 1 Fully disagree 6 Fully agree 4.53 5.25 4.57 5.09 4.97
C04_b Public good provision: Free healthcare 1 Fully disagree 6 Fully agree 4.56 5.19 4.58 5.15 5.13
C04_c Public good provision: Welfare benefits 1 Fully disagree 6 Fully agree 4.57 4.83 4.69 4.95 5.14
C04_d Public good provision: Support for disadvantaged groups 1 Fully disagree 6 Fully agree 4.44 4.82 4.78 4.97 5.11
C04_e Public good provision: Support for women 1 Fully disagree 6 Fully agree 4.41 4.74 4.40 4.91 4.62
C05_a Scarce jobs: Preference for men 1 Fully disagree 6 Fully agree 4.03 2.22 2.97 2.06 2.96
C05_b Scarce jobs: Preference for nationals 1 Fully disagree 6 Fully agree 4.09 3.71 4.31 3.54 3.95
C05_c Scarce jobs: Preference for heterosexuals 1 Fully disagree 6 Fully agree 3.90 2.35 3.15 2.13 3.45
C05_d Scarce jobs: Preference for people in need 1 Fully disagree 6 Fully agree 4.33 3.97 4.37 3.99 4.11
C05_e Scarce jobs: Preference for family members 1 Fully disagree 6 Fully agree 3.87 2.50 3.22 2.59 2.85
C05_f Scarce jobs: Preference for own religion 1 Fully disagree 6 Fully agree 3.85 2.30 2.68 2.12 2.73
C05_g Scarce jobs: Preference for own ethnic group 1 Fully disagree 6 Fully agree 3.84 2.60 3.25 2.40 2.67
C06_a Leadership positions: Gender representation 1 Fully disagree 6 Fully agree 4.29 3.10 3.20 3.40 3.31
C06_b Leadership positions: Ethnic representation 1 Fully disagree 6 Fully agree 4.18 2.90 3.26 3.47 3.45
C06_c Leadership positions: Economic status representation 1 Fully disagree 6 Fully agree 4.43 3.33 3.53 3.69 4.05
C07_a Generational conflict: Prosperity vs. environment 1 Fully disagree 6 Fully agree 4.23 3.98 4.11 3.85 4.07
C07_b Generational conflict: Public debt 1 Fully disagree 6 Fully agree 4.11 2.82 3.24 2.91 3.14
C08_a Temporality: Punctuality 1 Fully disagree 6 Fully agree 4.47 5.06 4.63 5.19 5.16
C08_b Temporality: Efficiency 1 Fully disagree 6 Fully agree 4.17 4.52 4.47 4.11 4.00
C08_c Temporality: Free time 1 Fully disagree 6 Fully agree 3.76 4.01 3.83 3.67 2.66
C08_d Temporality: Enjoying the present 1 Fully disagree 6 Fully agree 4.19 3.92 3.61 3.81 2.84
C08_e Temporality: Control of future 1 Fully disagree 6 Fully agree 4.50 4.98 4.74 4.62 5.04
C08_f Temporality: Better life compared to parents 1 Fully disagree 6 Fully agree 4.56 4.34 4.37 4.27 4.57
D02_a Satisfaction: Political system 1 Fully dissatisfied 6 Fully satisfied 4.24 2.89 3.10 2.40 2.42
D02_b Satisfaction: Economic system 1 Fully dissatisfied 6 Fully satisfied 4.23 3.09 3.44 2.61 2.35
D03_a Interpersonal trust 1 Fully disagree 6 Fully agree 3.97 3.42 3.56 2.88 2.72
D03_b Citizens’ rights during pandemic 1 Fully disagree 6 Fully agree 4.53 4.29 4.40 4.19 4.44
D03_c Losers of globalization 1 Fully disagree 6 Fully agree 4.12 3.68 3.51 3.52 3.75
D03_d Anti-elitism: Big interests 1 Fully disagree 6 Fully agree 4.35 4.43 4.09 4.40 4.68
D03_e Anti-elitism: Responsible officials 1 Fully disagree 6 Fully agree 4.21 3.15 3.72 2.81 3.21
D04_a Deprivation: Political influence 1 Fully disagree 6 Fully agree 4.23 4.13 3.99 4.13 4.55
D04_b Deprivation: Economic situation 1 Fully disagree 6 Fully agree 4.17 4.17 4.09 4.26 4.83
D04_c Deprivation: Traditions and customs 1 Fully disagree 6 Fully agree 4.12 3.62 3.62 3.71 4.41
D05_a Subjective identity: Local 1 Not close at all 6 Very close 4.57 4.30 4.09 4.09 4.66
D05_b Subjective identity: National 1 Not close at all 6 Very close 4.43 4.52 4.64 4.52 4.40
D05_c Subjective identity: Regional 1 Not close at all 6 Very close 3.90 3.64 3.68 3.60 3.58
D07_a RWA: Defy authority 1 Fully disagree 6 Fully agree 4.05 3.64 3.92 3.61 3.72
D07_b RWA: Discipline and unity 1 Fully disagree 6 Fully agree 4.23 3.48 3.78 3.60 4.53
D07_c RWA: Old-fashioned ways and values 1 Fully disagree 6 Fully agree 4.14 3.78 3.48 3.68 4.21
D07_d RWA: Premarital sexual intercourse 1 Fully disagree 6 Fully agree 3.11 4.81 3.67 4.48 2.46
D07_e RWA: Tougher government and stricter laws 1 Fully disagree 6 Fully agree 3.84 3.83 3.50 3.43 3.65
D07_f RWA: Crack down on troublemakers 1 Fully disagree 6 Fully agree 4.40 4.36 4.63 4.45 4.77
D08_a Globalization: Limiting International trade 1 Fully disagree 6 Fully agree 4.38 3.87 3.67 3.63 4.60
D08_b Globalization: International organizations take away power 1 Fully disagree 6 Fully agree 4.20 3.86 3.68 3.75 4.25
D08_c Globalization: Immigrants endanger society 1 Fully disagree 6 Fully agree 4.20 3.53 3.69 3.05 3.75
D09_a Anti-terror measure: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.63 3.89 3.80 3.73 4.50
D09_b Health data collection: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.85 4.13 4.24 4.45 4.74
D09_c Tax fraud/corruption prevention: Acceptance (outcome) 1 Not acceptable at all 6 Fully acceptable 4.67 3.83 3.92 3.85 4.46

The results are amazing! (even across regions). So when we look at the Module A and B which is basically “Acceptance of the liberal script: individual self-determination, political, economic, and socio-cultural elements”, the averages lies on the more liberal side of the spectrum for both regional and India, but as soon as we move towards module C and D on “The liberal script in practice: applications and contestations,Political values and attitudes” the averages starts moving upwards for India (and to some extent regional). This basically shows that in theory Indians are inclining towards more liberal tendencies but as soon as its applications or the consequences of accepting that liberal theory comes up (in case of border question etc), India becomes overtly conservative (so does other regions).

India and its kinds - Closest 3

# India mean by question
india_means <- country_means_w2 %>%
  filter(country_name == "India") %>%
  select(variable, india_mean = country_mean)

# Country distances to India (exclude India)
country_dist <- country_means_w2 %>%
  filter(country_name != "India") %>%
  left_join(india_means, by = "variable") %>%
  mutate(
    gap = country_mean - india_mean,
    abs_gap = abs(gap)
  )

# Closest 3 per variable (ties handled deterministically by country_name)
closest3 <- country_dist %>%
  arrange(variable, abs_gap, country_name) %>%
  group_by(variable) %>%
  slice_head(n = 3) %>%
  mutate(rank = row_number()) %>%
  ungroup() %>%
  select(variable, rank, country_name, country_mean, abs_gap)

# Min and max per variable
minmax <- country_dist %>%
  group_by(variable) %>%
  summarise(
    lowest_country  = country_name[which.min(country_mean)],
    lowest_mean     = min(country_mean, na.rm = TRUE),
    highest_country = country_name[which.max(country_mean)],
    highest_mean    = max(country_mean, na.rm = TRUE),
    .groups = "drop"
  )

# Reshape closest3 to wide columns
closest_wide <- closest3 %>%
  mutate(rank = paste0("closest_", rank)) %>%
  select(variable, rank, country_name, country_mean) %>%
  pivot_wider(
    names_from = rank,
    values_from = c(country_name, country_mean),
    names_glue = "{rank}_{.value}"
  )

# Final table
india_closest_table <- india_means %>%
  left_join(closest_wide, by = "variable") %>%
  left_join(minmax, by = "variable") %>%
  mutate(
    question = str_trunc(sapply(variable, function(v) attr(pals[[v]], "label")), 60)
  ) %>%
  select(
    variable, question,
    india_mean,
    closest_1_country_name, closest_1_country_mean,
    closest_2_country_name, closest_2_country_mean,
    closest_3_country_name, closest_3_country_mean,
    lowest_country, lowest_mean,
    highest_country, highest_mean
  )

india_closest_table_short <- india_closest_table %>%
  transmute(
    variable,
    question,
    `India mean` = india_mean,

    `Closest`  = closest_1_country_name,
    `C mean`   = closest_1_country_mean,

    `2nd`      = closest_2_country_name,
    `2 mean`   = closest_2_country_mean,

    `3rd`      = closest_3_country_name,
    `3 mean`   = closest_3_country_mean,

    `L country` = lowest_country,
    `L mean`    = lowest_mean,

    `H country` = highest_country,
    `H mean`    = highest_mean
  )

india_closest_table_short %>%
  kableExtra::kbl(
    format = "html",
    digits = 2,
    caption = "Closest countries to India (top 3), and lowest/highest"
  ) %>%
  kableExtra::kable_styling(full_width = FALSE) %>%
  kableExtra::scroll_box(width = "100%", height = "600px")
Closest countries to India (top 3), and lowest/highest
variable question India mean Closest C mean 2nd 2 mean 3rd 3 mean L country L mean H country H mean
A01 Self-determination 3.24 Republic of Korea 3.23 Poland 3.20 Japan 3.29 Tunisia 2.79 Senegal 4.75
A02_a Restrictions of freedom: Religious groups/leaders 3.67 South Africa 3.48 Russian Federation 3.47 Nigeria 3.93 Poland 1.90 Senegal 4.62
A02_b Restrictions of freedom: State/government 3.94 Ghana 3.86 Nigeria 4.04 South Africa 3.82 Tunisia 2.01 Indonesia 4.31
A02_c Restrictions of freedom: Family 4.12 Indonesia 4.12 Ghana 4.08 Nigeria 3.86 Sweden 2.58 Senegal 4.68
A02_d Restrictions of freedom: Police 3.92 Ghana 3.90 United Kingdom 3.89 Australia 3.88 Tunisia 1.91 Senegal 4.52
A02_e Restrictions of freedom: Businesses/companies 3.63 Nigeria 3.66 Ghana 3.55 Indonesia 3.83 Tunisia 1.54 Indonesia 3.83
A02_f Restrictions of freedom: Societal majority 3.98 Ghana 3.97 Nigeria 3.72 Indonesia 4.31 Tunisia 2.55 Senegal 4.54
B01_a Collective self-determination: Political leaders 2.78 South Africa 2.79 Germany 2.79 Sweden 2.72 Senegal 2.04 Singapore 3.31
B01_b Collective self-determination: Elected politicians 2.82 Germany 2.83 Indonesia 2.84 France 2.75 Senegal 1.94 Singapore 3.25
B01_c Collective self-determination: Established experts 3.01 Republic of Korea 2.96 Tunisia 3.09 Türkiye 2.92 Japan 2.61 Australia 3.66
B01_d Collective self-determination: Religious leaders 2.75 United States 2.74 South Africa 2.66 Singapore 2.90 Sweden 1.77 Senegal 3.97
B01_e Collective self-determination: The military 3.01 United Kingdom 3.01 Singapore 3.06 Tunisia 3.12 Japan 2.12 United States 3.15
B02_a Rule of law: Judicial control of government 2.81 Peru 2.82 Republic of Korea 2.61 Singapore 2.59 Russian Federation 1.62 Peru 2.82
B02_b Rule of law: Equal enforcement of laws 2.84 Singapore 2.52 Peru 2.51 Indonesia 2.41 Tunisia 1.67 Singapore 2.52
B02_c Rule of law: Basic rights across countries 3.05 Latvia 2.98 Ghana 2.92 Japan 2.75 Mexico 1.86 Senegal 4.00
B03_a Market economy: Private vs. state control 3.41 Germany 3.40 Japan 3.43 Sweden 3.46 Republic of Korea 2.68 Senegal 4.61
B03_b Market economy: Competition good/bad for society 3.46 Indonesia 3.16 South Africa 2.75 United Kingdom 2.73 Latvia 2.01 Indonesia 3.16
B03_c Market economy: Source of wealth and status 2.68 United Kingdom 2.52 United States 2.52 Indonesia 2.49 Senegal 1.59 United Kingdom 2.52
B04 Progress: Change vs. tradition 2.71 Russian Federation 2.71 Australia 2.70 Singapore 2.69 Brazil 2.17 United Kingdom 2.92
B05_a Rationality: Science vs. experiences, traditions, and com… 3.40 Russian Federation 3.40 Singapore 3.40 Peru 3.39 Tunisia 2.49 Senegal 3.90
B05_b Rationality: Political influence of established scientists 3.38 Singapore 3.10 United States 3.02 South Africa 2.99 Tunisia 2.21 Singapore 3.10
B05_c Rationality: Limits of scientific explanations 3.03 Nigeria 3.06 Spain 3.26 Republic of Korea 3.27 Türkiye 2.62 Senegal 4.05
B05_d Rationality: Individual vs. public determination of facts 3.13 Germany 3.12 Italy 3.10 Sweden 3.10 Tunisia 2.64 Senegal 4.06
B06 Tolerance: Equal acceptance 2.55 United Kingdom 2.54 Indonesia 2.59 Russian Federation 2.62 Brazil 1.80 Senegal 3.26
C01_a Borders: Ban access to foreign information 4.29 Indonesia 3.89 South Africa 3.41 Nigeria 3.36 Latvia 1.80 Indonesia 3.89
C01_b Borders: Hinder citizens from leaving 4.25 Indonesia 3.96 Nigeria 3.45 South Africa 3.37 Poland 1.94 Indonesia 3.96
C01_c Borders: Reject refugees 4.17 Russian Federation 4.15 Nigeria 4.07 United Kingdom 4.04 Tunisia 2.37 Türkiye 4.40
C01_d Borders: Reject immigrants 4.19 Sweden 4.23 Germany 4.23 South Africa 4.15 Senegal 2.48 Türkiye 4.88
C01_e Borders: Restrict investment of foreign companies 4.40 Tunisia 4.41 Italy 4.38 United States 4.37 Brazil 3.67 Indonesia 4.99
C01_f Borders: Shooting at persons crossing illegally 4.22 Indonesia 4.20 Türkiye 4.05 Nigeria 3.70 Mexico 2.23 Indonesia 4.20
C01_g Borders: Taking fingerprints 4.53 France 4.55 Mexico 4.52 Singapore 4.58 Poland 3.88 Senegal 5.58
C01_h Borders: Preventing secessions 4.29 Senegal 4.31 Tunisia 4.24 Türkiye 4.54 Mexico 3.23 Indonesia 4.54
C03_a1 Human rights violations: Economic intervention 4.13 Italy 4.14 Nigeria 4.14 Singapore 4.12 Tunisia 2.28 Germany 4.74
C03_a2 Human rights violations: Military intervention 4.17 Spain 4.19 France 4.14 United Kingdom 4.12 Tunisia 2.03 Spain 4.19
C03_b1 Dictatorship: Economic intervention 4.17 Nigeria 4.15 Italy 4.13 Japan 4.11 Tunisia 2.27 Poland 4.60
C03_b2 Dictatorship: Military intervention 4.17 Spain 4.15 France 4.10 United Kingdom 4.06 Tunisia 1.98 Spain 4.15
C04_a Public good provision: Free education 4.53 Japan 4.55 United States 4.56 Singapore 4.49 Republic of Korea 4.38 Russian Federation 5.68
C04_b Public good provision: Free healthcare 4.56 United States 4.61 Singapore 4.72 Japan 4.35 Republic of Korea 4.29 Russian Federation 5.63
C04_c Public good provision: Welfare benefits 4.57 Japan 4.52 Singapore 4.64 France 4.49 United States 4.42 Senegal 5.58
C04_d Public good provision: Support for disadvantaged groups 4.44 Japan 4.49 United States 4.51 Latvia 4.55 Japan 4.49 Senegal 5.56
C04_e Public good provision: Support for women 4.41 United States 4.42 Latvia 4.39 Russian Federation 4.48 Republic of Korea 3.96 Italy 5.24
C05_a Scarce jobs: Preference for men 4.03 Indonesia 3.88 Nigeria 3.43 Türkiye 3.06 Chile 1.67 Indonesia 3.88
C05_b Scarce jobs: Preference for nationals 4.09 Nigeria 3.99 Latvia 3.97 Republic of Korea 4.21 Sweden 2.78 Indonesia 4.83
C05_c Scarce jobs: Preference for heterosexuals 3.90 Tunisia 3.72 Indonesia 4.13 Nigeria 3.51 Chile 1.76 Senegal 4.43
C05_d Scarce jobs: Preference for people in need 4.33 Brazil 4.40 Japan 4.45 Republic of Korea 4.15 Ghana 3.43 Türkiye 4.94
C05_e Scarce jobs: Preference for family members 3.87 Indonesia 3.69 Japan 3.38 Nigeria 3.27 Sweden 2.06 Indonesia 3.69
C05_f Scarce jobs: Preference for own religion 3.85 Indonesia 3.41 Türkiye 3.18 Tunisia 3.16 Chile 1.70 Indonesia 3.41
C05_g Scarce jobs: Preference for own ethnic group 3.84 Türkiye 3.48 Japan 3.46 Republic of Korea 3.40 Chile 2.05 Türkiye 3.48
C06_a Leadership positions: Gender representation 4.29 Indonesia 3.83 Brazil 3.71 Italy 3.68 Russian Federation 2.57 Indonesia 3.83
C06_b Leadership positions: Ethnic representation 4.18 Indonesia 3.93 Brazil 3.68 Nigeria 3.60 Russian Federation 2.32 Indonesia 3.93
C06_c Leadership positions: Economic status representation 4.43 Senegal 4.57 Brazil 4.22 Indonesia 4.20 Republic of Korea 2.80 Senegal 4.57
C07_a Generational conflict: Prosperity vs. environment 4.23 Italy 4.17 France 4.17 Japan 4.12 Tunisia 3.13 Senegal 5.16
C07_b Generational conflict: Public debt 4.11 Nigeria 3.71 Japan 3.60 United Kingdom 3.44 Latvia 2.07 Nigeria 3.71
C08_a Temporality: Punctuality 4.47 Türkiye 4.60 Republic of Korea 4.72 Tunisia 4.76 Japan 3.59 Senegal 5.70
C08_b Temporality: Efficiency 4.17 Republic of Korea 4.15 Nigeria 4.25 Chile 4.28 Tunisia 3.47 Indonesia 5.02
C08_c Temporality: Free time 3.76 Indonesia 3.78 Republic of Korea 3.74 Japan 3.73 Senegal 2.02 United Kingdom 4.31
C08_d Temporality: Enjoying the present 4.19 France 4.22 Spain 4.08 United Kingdom 4.08 Tunisia 2.48 Russian Federation 4.33
C08_e Temporality: Control of future 4.50 Republic of Korea 4.37 Tunisia 4.65 Singapore 4.65 Peru 4.19 Senegal 5.66
C08_f Temporality: Better life compared to parents 4.56 Peru 4.58 Italy 4.51 United Kingdom 4.45 Germany 3.80 Indonesia 5.05
D02_a Satisfaction: Political system 4.24 Singapore 3.79 Indonesia 3.66 Germany 3.49 Tunisia 1.95 Singapore 3.79
D02_b Satisfaction: Economic system 4.23 Singapore 3.99 Indonesia 3.92 Australia 3.74 Tunisia 1.60 Singapore 3.99
D03_a Interpersonal trust 3.97 United Kingdom 3.90 Australia 3.78 Indonesia 3.77 Senegal 2.33 United Kingdom 3.90
D03_b Citizens’ rights during pandemic 4.53 South Africa 4.51 Chile 4.56 Australia 4.48 Peru 3.85 Senegal 4.95
D03_c Losers of globalization 4.12 Russian Federation 4.11 Türkiye 4.16 Indonesia 4.04 Republic of Korea 2.94 Türkiye 4.16
D03_d Anti-elitism: Big interests 4.35 Ghana 4.37 Australia 4.38 Nigeria 4.40 Sweden 3.74 Senegal 5.08
D03_e Anti-elitism: Responsible officials 4.21 Indonesia 4.25 Singapore 3.97 Senegal 3.71 Russian Federation 2.36 Indonesia 4.25
D04_a Deprivation: Political influence 4.23 Chile 4.22 Italy 4.22 United States 4.25 Sweden 3.49 South Africa 4.79
D04_b Deprivation: Economic situation 4.17 Spain 4.21 United Kingdom 4.09 Singapore 4.06 Sweden 3.52 Tunisia 4.97
D04_c Deprivation: Traditions and customs 4.12 Indonesia 4.11 Ghana 4.19 France 4.03 Sweden 3.02 Senegal 4.79
D05_a Subjective identity: Local 4.57 Ghana 4.56 Indonesia 4.65 Russian Federation 4.67 Republic of Korea 3.58 Nigeria 4.90
D05_b Subjective identity: National 4.43 Peru 4.41 Spain 4.40 Nigeria 4.47 Tunisia 3.62 Indonesia 5.22
D05_c Subjective identity: Regional 3.90 Ghana 3.87 Poland 3.83 Germany 3.96 Tunisia 2.44 Indonesia 4.60
D07_a RWA: Defy authority 4.05 Türkiye 4.06 Japan 4.06 Nigeria 4.11 France 3.00 Poland 4.68
D07_b RWA: Discipline and unity 4.23 Nigeria 4.36 France 4.05 Ghana 4.51 Latvia 2.49 Senegal 5.63
D07_c RWA: Old-fashioned ways and values 4.14 Peru 4.15 Brazil 4.12 Italy 4.09 Republic of Korea 2.99 Senegal 4.66
D07_d RWA: Premarital sexual intercourse 3.11 Indonesia 3.01 Nigeria 2.99 South Africa 3.36 Tunisia 1.56 Germany 5.25
D07_e RWA: Tougher government and stricter laws 3.84 Germany 3.85 Italy 3.86 United Kingdom 3.87 Tunisia 2.94 Poland 4.52
D07_f RWA: Crack down on troublemakers 4.40 Chile 4.43 Nigeria 4.43 Australia 4.36 Poland 3.85 Senegal 5.17
D08_a Globalization: Limiting International trade 4.38 France 4.39 Türkiye 4.43 Ghana 4.49 Republic of Korea 3.06 Senegal 5.45
D08_b Globalization: International organizations take away power 4.20 Indonesia 4.18 France 4.15 Australia 4.14 Poland 3.22 South Africa 4.73
D08_c Globalization: Immigrants endanger society 4.20 South Africa 4.28 Indonesia 4.33 Ghana 4.05 Brazil 2.55 Türkiye 4.59
D09_a Anti-terror measure: Acceptance (outcome) 4.63 Indonesia 4.56 Ghana 4.78 Nigeria 4.34 Republic of Korea 3.29 Senegal 5.10
D09_b Health data collection: Acceptance (outcome) 4.85 Ghana 4.86 Indonesia 5.01 Peru 4.63 Poland 3.62 Senegal 5.47
D09_c Tax fraud/corruption prevention: Acceptance (outcome) 4.67 Indonesia 4.78 Tunisia 4.54 Ghana 4.43 Poland 3.26 Senegal 5.03

Well here we can’t say that India resembles like its counterparts in developing world or new democracies of global south. Rather it is a mix pot, which varies from question to question. In some questions the average is closest to EU and West and in some it is similar to African countries.

Why it is different from India v/s the region?

“India” is a single country, while “EU/West”, “Africa”, etc. are mixtures of several countries, each with different response distributions. When we average several countries together, the region mean will often be pulled toward the middle (or toward whichever countries have larger effective weight), so a single country like India can end up above the regional average even if it is not near the top relative to every individual country.

Straightliners

# =============================================================================
# METHOD 1: LONGEST RUN 
# =============================================================================
likert_vars_ordered <- names(pals)[grepl("^[A-D][0-9]", names(pals))]
likert_vars_ordered <- sort(likert_vars_ordered)  # Survey order

calculate_longest_run <- function(x) {
  if (all(is.na(x))) return(0)
  r <- rle(as.numeric(x))
  max(r$lengths, na.rm = TRUE)
}

straightline_run <- suppressWarnings({
  pals %>%
    select(id, country, w2, all_of(likert_vars_ordered)) %>%
    pivot_longer(cols = all_of(likert_vars_ordered), names_to = "item", values_to = "response") %>%
    filter(response %in% 1:6) %>%
    group_by(id) %>%
    summarise(
      country = first(country),
      w2 = first(w2),
      total_responses = n(),
      max_run = calculate_longest_run(response),
      run_value = {
        r <- rle(as.numeric(response))
        r$values[which.max(r$lengths)]
      },
      .groups = "drop"
    ) %>%
    mutate(
      straightliner_10 = max_run > 10,
      straightliner_15 = max_run > 15
    )
})

# Table 1: India runs
kable(
  straightline_run %>%
    filter(country == 17) %>%
    summarise(
      Total_Resp = n(),
      `Max Run >10` = sum(straightliner_10),
      `Pct >10` = round(100 * mean(straightliner_10), 1),
      `Max Run >15` = sum(straightliner_15),
      `Pct >15` = round(100 * mean(straightliner_15), 1),
      Avg_Max_Run = round(mean(max_run), 1),
      .groups = "drop"
    ),
  caption = "India: Straightlining (Longest Run)"
)
India: Straightlining (Longest Run)
Total_Resp Max Run >10 Pct >10 Max Run >15 Pct >15 Avg_Max_Run
2822 684 24.2 290 10.3 9.1
# Show extremes
kable(
  straightline_run %>%
    filter(country == 17, max_run > 10) %>%
    select(id, total_responses, max_run, run_value) %>%
    arrange(desc(max_run)) %>%
    head(10),
  caption = "India: Respondents with >10 identical answers"
)
India: Respondents with >10 identical answers
id total_responses max_run run_value
170016 126 64 1
171670 134 37 1
171093 145 28 1
171665 132 28 1
170402 139 27 6
170572 143 27 6
170579 145 27 6
170583 144 27 6
170585 144 27 6
170878 133 27 4

Insights from conjoint task - India

# ------------------------------
# PALS Conjoint (India only) - Task 1 (B07) AMCEs with cregg
# Uses your variable names: B07_a1..B07_a7 and B07_b1..B07_b7
# ------------------------------



# 1) India only + valid forced choice
ind <- pals %>%
  filter(country == 17, B07 %in% 1:4, !is.na(id), w2 > 0) %>%
  mutate(pickA = if_else(B07 %in% c(1, 2), 1L, 0L))   # chose A?

# 2) Long data: two rows per respondent (A and B profiles)
ind_long <- ind %>%
  transmute(
    id, w2, pickA,
    A_minority = B07_a1, A_democracy = B07_a2, A_econ_policy = B07_a3,
    A_tax_policy = B07_a4, A_homosexuality = B07_a5, A_immigration = B07_a6,
    A_econ_situation = B07_a7,
    B_minority = B07_b1, B_democracy = B07_b2, B_econ_policy = B07_b3,
    B_tax_policy = B07_b4, B_homosexuality = B07_b5, B_immigration = B07_b6,
    B_econ_situation = B07_b7
  ) %>%
  mutate(across(starts_with(c("A_", "B_")), haven::zap_labels)) %>%  
  pivot_longer(
    cols = starts_with(c("A_", "B_")),
    names_to = c("profile", "attr"),
    names_pattern = "^(A|B)_(.*)$",
    values_to = "level"
  ) %>%
  pivot_wider(names_from = attr, values_from = level) %>%
  mutate(
    profile = factor(profile, levels = c("A", "B")),
    chosen  = if_else(profile == "A", pickA, 1L - pickA)
  )

# 3) Label + set baselines (baselines are the first level listed)
# Attribute definitions from the India questionnaire/codebook [file:10][file:9]
ind_long <- ind_long %>%
  mutate(
    minority = factor(minority,
                      levels = c(2, 1),
                      labels = c("Govt free even if against minority rights",
                                 "Govt constrained by minority rights")),
    democracy = factor(democracy,
                       levels = c(2, 1),
                       labels = c("Policy controlled by experts",
                                  "Policy controlled by elected reps")),
    econ_policy = factor(econ_policy,
                         levels = c(2, 1),
                         labels = c("Actively controls major industries",
                                    "Few controls on major industries")),
    tax_policy = factor(tax_policy,
                        levels = c(2, 1),
                        labels = c("High taxes (more equality)",
                                   "Low taxes (individual choice)")),
    homosexuality = factor(homosexuality,
                           levels = c(2, 1),
                           labels = c("Homosexual relationships penalized",
                                      "Equal rights for homosexual couples")),
    immigration = factor(immigration,
                         levels = c(2, 1),
                         labels = c("Keeps immigration to a minimum",
                                    "Encourages talented foreigners")),
    econ_situation = factor(econ_situation,
                            levels = c(1, 2, 3, 4),
                            labels = c("Income/capita 3,500 USD",
                                       "Income/capita 23,000 USD",
                                       "Income/capita 43,000 USD",
                                       "Income/capita 63,000 USD"))
  )

# 4) AMCEs (cluster by respondent id; weighted by w2)
amce_india_b07 <- cj(
  ind_long,
  chosen ~ minority + democracy + econ_policy + tax_policy +
    homosexuality + immigration + econ_situation,
  id = ~ id,
  weights = ~ w2,
  estimate = "amce"
)
## Warning in logLik.svyglm(x): svyglm not fitted by maximum likelihood.
plot(amce_india_b07)
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the cregg package.
##   Please report the issue at <https://github.com/leeper/cregg/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the ggplot2 package.
##   Please report the issue at <https://github.com/tidyverse/ggplot2/issues>.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `height` was translated to `width`.

# 5) Rank which levels "matter most" by absolute AMCE size
amce_ranked <- amce_india_b07 %>%
  mutate(abs_est = abs(estimate)) %>%
  arrange(desc(abs_est))
amce_table <- amce_ranked %>%
  # drop the baseline levels (they have estimate==0 and NA SE)
  filter(!is.na(std.error)) %>%
  mutate(
    AMCE_pp = 100 * estimate,
    CI = sprintf("[%.1f, %.1f]", 100 * lower, 100 * upper),
    p = scales::pvalue(p, accuracy = 0.001),
    feature = str_replace_all(feature, "_", " ")
  ) %>%
  select(
    feature,
    level,
    `AMCE (pp)` = AMCE_pp,
    CI,
    p
  )

amce_table %>%
  kbl(
    format = "html",
    digits = 1,
    caption = "India (B07): Ranked AMCEs (percentage-point change in probability profile is chosen)"
  ) %>%
  kable_styling(full_width = FALSE) %>%
  scroll_box(width = "100%", height = "600px")
India (B07): Ranked AMCEs (percentage-point change in probability profile is chosen)
feature level AMCE (pp) CI p
econ situation Income/capita 63,000 USD 10.8 [5.0, 16.5] <0.001
econ situation Income/capita 43,000 USD 10.4 [4.5, 16.3] <0.001
minority Govt constrained by minority rights -3.6 [-7.6, 0.3] 0.071
econ situation Income/capita 23,000 USD 2.2 [-3.6, 8.0] 0.461
homosexuality Equal rights for homosexual couples -1.3 [-5.5, 2.8] 0.529
democracy Policy controlled by elected reps 1.0 [-3.0, 5.0] 0.627
econ policy Few controls on major industries -0.3 [-4.5, 3.9] 0.881
tax policy Low taxes (individual choice) 0.3 [-3.8, 4.4] 0.887
immigration Encourages talented foreigners -0.2 [-4.3, 3.9] 0.924