This RMarkdown tutorial replicates the core analyses in Xu and Zhao (2023): “The Power of History: How A Victimization Narrative Shapes National Identity and Public Opinion in China.” The replication, conducted by Jinwen Wu, a predoctoral fellow at Stanford University, is supervised by Professor Yiqing Xu. The replication summarizes the main data analyses from the original paper; please refer to the original paper for a comprehensive understanding of the ideas presented.

Click the Code button in the top right and select Show All Code to reveal all code used in this RMarkdown. Click Show in paragraphs to reveal the code used to generate a finding. The original replication files can be downloaded from here.


The authors examine how victimization narrative can shape national identity and public opinion in China through an online survey experiment of 1,890 urban Chinese citizens. The result suggests that emphasizing China’s humiliating past in the late Qing

  • strengthens respondents’ attachment with a victimized national identity
  • increases suspicion of foreign governments’ intentions in international disputes.
  • stimulates preference for more hawkish foreign policies, and
  • boosts support for China’s current political system (especially among those without a college degree)

These effects appear to be particularly pronounced among respondents without a college degree.

1 Conceptual Framework

Political psychologists have identified several critical components of national identity. Xu and Zhao’s analysis is built upon Kosterman and Feshbach (1989) framework dividing national identity into patriotic sentiment, attachment and affection for one’s country, and nationalistic sentiment, belief in the superiority of one’s country. In the paper, the authors refer to the latter as victim sentiment. Victim sentiment can lead to defensive and anti-foreign attitudes, while patriotic sentiment manifests as pride and love for China.

The two components of national identity can have different effects on political attitudes and policy preferences. Historical narratives that emphasize past accomplishments can enhance patriotic sentiment (Jager 2016), while an emphasis on victimization can foster resentment toward out-groups and a desire to restore national dignity (Fukuyama 2018).

The authors summarize the relationships of Official Narrative, Collective Memory, Patriotic Sentiment & Victim Sentiment, and Policy Preferences below:

Conceptual framework. Adapted from Figure 1 in Xu and Zhao (2023)
Conceptual framework. Adapted from Figure 1 in Xu and Zhao (2023)


Victimization narratives have been extensively studied in various authoritarian countries, for example:

  • In Russia, President Vladimir Putin blames the West for the country’s problems.
  • In Hungary, Holocaust museums portray Hungarians as victims of Nazi and Soviet occupations.
  • In Serbia, history textbooks depict the country as a victim, focusing on external aggressions while ignoring the suffering inflicted by Serbia on others.

These narratives create collective memory of historical victimization and legitimize autocratic rule. Potentially, autocratic governments can cultivate political support and shape policy preferences by strengthening national identity through victimization narratives. However, few have established a clear causal mechanism.

The authors focus on the “Century of Humiliation” narrative in China. Today, China’s national identity is heavily influenced by a sense of shame and victimhood stemming from its history of foreign invasion and domination, particularly during the “century of humiliation” (1840-1949). This period included military defeats and territorial concessions to foreign powers, such as the Boxer Rebellion (1899-1901), which the Chinese Communist Party (CCP) portrays as a patriotic movement despite violent suppressions and the punitive Boxer Protocol that followed. The CCP started to emphasize this narrative in the 1990s, possibly as a means to legitimize its rule after the 1989 Tiananmen Massacre.

Mentioning of the “Century of Humiliation” in the People’s Daily (1946–2015). Adapted from Figure 2 in Xu and Zhao (2023)
Mentioning of the “Century of Humiliation” in the People’s Daily (1946–2015). Adapted from Figure 2 in Xu and Zhao (2023)

2 Experimental Design

To evaluate the impact of the victimization narrative on national identity and policy preferences, Xu and Zhao (2023) use quota sampling strategy (based on gender, age, education, and region) to obtain a diverse sample of 1890 urban Chinese citizens for an online survey experiment. The experiment first records the respondents’ individual characteristics, such as education and income, as well as ideological predispositions using questions from Pan and Xu (2018).

Each participant is randomly assigned to read a vignette from one control or either of the three treatment conditions. They are:

  • Control Condition: An article on interior design, serving as a neutral benchmark.
  • Victimization Narrative Treatment: Excerpts from secondary school textbooks depicting the Boxer Rebellion as a heroic movement, avoiding mention of its violence and damage.
  • Balanced Historical Narrative Treatment: Excerpts from articles by Chinese historians presenting a balanced view of the Boxer Rebellion, including its negative impacts.
  • Patriotic Narrative Treatment: A news report on China’s national women’s volleyball team winning the 2016 Olympic gold medal, chosen for its non-historical context and embodiment of patriotic spirit.

After reading the assigned vignettes, the participant answers several questions about national identity and policy preferences.

3 Replicating the Main Findings

3.1 Installing Packages

Several R packages are required for subsequent data analysis and visualization. The code chunk below checks for all required messages and installs the missing ones.

Packages: “haven”, “estimatr”, “RColorBrewer”, “ggplot2”, “scales”, “patchwork”, “mediation”

install_all <- function(packages) {
  installed_pkgs <- installed.packages()[, "Package"]
  for (pkg in packages) {
    if (!pkg %in% installed_pkgs) {
      install.packages(pkg)
    }
  }
}

# packages to be installed
packages <- c( "haven", "estimatr", "RColorBrewer", "ggplot2", "scales", "patchwork",
              "mediation", "dplyr", "cobalt", "pander","tidyr", "broom")
install_all(packages)

After the installation, call to load the packages. Then, load the experiment data. The file is in the Replication folder titled as victimization.dta in the replication files.

# Clear the environment
rm(list = ls(all = TRUE))

# Load the packages
library(haven)
library(estimatr)
library(RColorBrewer)
library(ggplot2)
library(scales)
library(patchwork)
library(mediation)
library(dplyr)
library(cobalt)
library(tidyr)
library(pander)
library(broom)

# Load data
d0 <- read_dta("victimization.dta", encoding = "latin1")

3.2 Treatment Conditions and Covariate Balance

First, we tabulate treatment conditions in the experimental sample:

# Define variables

# Tabulate the treatment status
treatment_tab <- table(d0[['treat']])

# Create a data frame for better readability and labeling
treatment_df <- as.data.frame(treatment_tab)
colnames(treatment_df) <- c("Treatment Status", "Count")

# Add descriptive labels
treatment_df$`Treatment Status` <- factor(treatment_df$`Treatment Status`, levels = c(0, 1, 2, 3), 
      labels = c("Control", "Tr: Victim", "Tr: Liberal", "Tr: Olympic"))

pander(treatment_df, justify = c('left', 'center'))
Treatment Status Count
Control 467
Tr: Victim 470
Tr: Liberal 493
Tr: Olympic 460


We then check covariance balance using omnibus \(F\) tests:

# Subset the data
balance_check <- subset(d0, select = c("treat", "ideology_nati", "ideology_poli", "ideology_econ", "age",  "female", "hschool", "jcollege", "college", "income", "substatus", "knwl", "minority", "ccp"))

# Define the covariates
covars <- c("ideology_nati", "ideology_poli", "ideology_econ", "age", "female", "hschool", "jcollege", "college", "income", "substatus", "knwl", "minority", "ccp")

# Rename map
covariate_names <- c(
  ideology_nati = "Nationalistic Ideology",
  ideology_poli = "Liberal Ideology",
  ideology_econ = "Market Ideology",
  female = "Gender",
  age = "Age",
  hschool = "Completed High School",
  jcollege = "Completed Junior College",
  college = "Completed College",
  income = "Individual Monthly Income",
  substatus = "Subjective Financial Status",
  knwl = "Political Knowledge",
  minority = "Ethnic Minority",
  ccp = "Communist Party Membership"
)

# Ensure the treat variable has the correct levels and labels
balance_check$treat <- factor(balance_check$treat, 
                              levels = c(0, 1, 2, 3),
                              labels = c("Control",
                                         "Tr: Victim",
                                         "Tr: Liberal",
                                         "Tr: Olympic"))

# Initialize an empty dataframe to store the results
balance_table <- data.frame()

# Loop through each covariate
for (var in covars) {
  
  # Calculate means for each treatment group
  means <- balance_check %>%
    group_by(treat) %>%
    summarise(mean = mean(!!sym(var), na.rm = TRUE)) %>%
    pivot_wider(names_from = treat, values_from = mean) %>%
    mutate(Covariate = covariate_names[var])
  
  # Ensure column renaming does not exclude any group
  colnames(means) <- c(levels(balance_check$treat), "Covariate")
  
  # Perform the ANOVA F test
  anova_result <- aov(as.formula(paste(var, "~ treat")), data = balance_check)
  p_value <- summary(anova_result)[[1]][["Pr(>F)"]][1]
  
  # Round the means and add the p-value to the balance table
  means <- means %>%
    mutate(across(where(is.numeric), round, 2))
  
  balance_table <- rbind(balance_table, cbind(means, p_value = round(p_value, 2)))
}

# Rename the columns properly and reorder them
colnames(balance_table) <- c("Control", "Tr: Victim", "Tr: Liberal", "Tr: Olympic", "Covariate", "p-value")
balance_table <- balance_table %>% select(Covariate, `Control`, `Tr: Victim`, `Tr: Liberal`, `Tr: Olympic`, `p-value`)

panderOptions('table.split.table', Inf)
pander(balance_table, justify = c('left', rep('center',5)))
Covariate Control Tr: Victim Tr: Liberal Tr: Olympic p-value
Nationalistic Ideology 0.02 -0.05 0.06 -0.03 0.33
Liberal Ideology 0.05 0.04 -0.09 0 0.13
Market Ideology -0.02 -0.01 0 0.03 0.85
Age 31.79 32.17 31.08 31.9 0.26
Gender 0.44 0.48 0.41 0.45 0.14
Completed High School 0.19 0.19 0.22 0.21 0.61
Completed Junior College 0.21 0.2 0.2 0.2 0.89
Completed College 0.4 0.41 0.41 0.42 0.91
Individual Monthly Income 4.92 5.13 5 5.08 0.43
Subjective Financial Status 2.24 2.26 2.22 2.17 0.26
Political Knowledge 2.32 2.33 2.3 2.48 0.33
Ethnic Minority 0.03 0.04 0.04 0.04 0.75
Communist Party Membership 0.15 0.19 0.1 0.13 0

Almost all covariates are balanced across the treatment arms, with large p-values for the omnibus \(F\) test. Only one variable, Communist Party Membership, shows a significant difference with a small p-value. The authors control for these variables in the regression analyses.

3.3 Victim and Patriotic Sentiments

The authors define and label the five outcome variables. The variable names in the victimization.dta are listed for researchers to refer back to:
- nat: Victim Sentiments
- pat: Patriotic Sentiments
- system: Support for Current System
- perception: Perception of Intention
- hawk: Support for Hawkish Policies

The figure below shows regression estimates of treatment effects on Chinese national identity, adjusting for pretreatment covariates. It demonstrates that the victimization narrative shifts respondents’ attachment to the victim side of the Chinese national identity by about 0.13 standard deviations. The Olympic treatment also increases victim sentiments. Yet, the effect of the liberal or Olympic treatment is not statistically significant at the 5% level.

Patriotic sentiments remain unaffected. The victimization narrative strengthens the belief that foreign countries will continue to exploit China and that humiliation from foreign powers has marked China’s modern history. This finding supports that the victimization narrative increases people’s attachment to victim sentiments, which can be a force driving public opinion.

# Define the treatments, covariates, and outcomes
treat <- c("tr_victim", "tr_liberal", "tr_olympic")
covars <- c("ideology_nati", "ideology_poli", "ideology_econ", "age", "age_sq", "female", "hschool", "jcollege", "college", "factor(prov)", "income", "substatus", "knwl", "minority", "ccp")
outcomes <- c("nat", "pat")

# Prepare the array to store estimates
est <- array(NA, dim = c(length(treat), 5, 2))

# estimates of victim sentiments
formula <- as.formula(paste0(outcomes[1], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
out <- lm_robust(formula, data = d0, se_type = "HC1")
out2 <- lm_robust(formula, data = d0, se_type = "HC1", alpha = 0.1)
x0 <- c(1:length(treat)) + 1
est[, , 1] <- cbind(out$coefficients[x0], out$conf.low[x0], out$conf.high[x0], out2$conf.low[x0], out2$conf.high[x0])

# estimates of patriotic sentiments
formula2 <- as.formula(paste0(outcomes[2], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
out3 <- lm_robust(formula2, data = d0, se_type = "HC1")
out4 <- lm_robust(formula2, data = d0, se_type = "HC1", alpha = 0.1)
x0 <- c(1:length(treat)) + 1
est[, , 2] <- cbind(out3$coefficients[x0], out3$conf.low[x0], out3$conf.high[x0], out4$conf.low[x0], out4$conf.high[x0])

# Define the plotting parameters
adj <- c(-0.1, 0, 0.1) # Adjustments for plotting points
mypch <- c(15, 16, 17) # Symbols for points
tr.labs <- c("Victim Treatment", "Liberal Treatment", "Olympic Treatment") # Labels for legend

# Plotting
par(mar = c(3, 3, 3, 1))
plot(1, type = "n", xlim = c(0.5, 2.5), ylim = c(-0.4, 0.6), axes = FALSE)
box()
axis(2)
axis(1, at = 1:2, labels = c("Victim Sentiments", "Patriotic Sentiments"), line = -0.2, tick = FALSE)
abline(h = seq(-0.4, 0.6, 0.1), col = "#AAAAAA50") # treatment line color
abline(h = 0, lwd = 2, col = "#DDDDDD")
for (i in 1:2) {
  for (j in 1:length(treat)) {
    x0 <- i + adj[j]
    lines(c(x0, x0), c(est[j, 2, i], est[j, 3, i]), lwd = 1, col = "grey30")
    lines(c(x0, x0), c(est[j, 4, i], est[j, 5, i]), lwd = 3, col = "grey30")
    points(x0, est[j, 1, i], col = "grey30", pch = mypch[j], cex = 1.5)
  }
}
legend("top", legend = tr.labs, border = NA, bty = "n", ncol = 3, col = "grey30", lwd = 2, pch = mypch, cex = 1, seg.len = 2)

Replicating Figure 3 in the article

The authors examine pre-registered heterogeneous treatment effects to understand which subgroup is more susceptible to the “century of humiliation” narrative. They find that the victimization narrative has a stronger effect among respondents without a college degree.

The victimization narrative increases victim sentiment among individuals without a college degree by 0.2 standard deviations. In contrast, evoking memories of national humiliation does not significantly strengthen victim sentiments among college-educated respondents. This may be because more educated individuals have greater access to a wider range of information, exposing them to diverse opinions in addition to the official narrative. Education may also make individuals more critical and less susceptible to media influence. Similar patterns persist when examining other outcome variables.

par(mfrow = c(1,2))
# Subset data based on education
d.high <- d0[which(d0$eduyr >= 16),]
d.low <- d0[which(d0$eduyr < 16),]
d.list <- list(d.low, d.high)
sample.labs <- c("Below College", "College or Above")

# Initialize array to store estimates
est <- array(NA, dim = c(length(treat), 5, 4))

# Estimate and store results for both sentiment types and education levels
for (i in 1:2) {
  d0[,outcomes[i]] <- scale(d0[,outcomes[i]]) # Scaling within loop might not be ideal if outcomes[i] affects all d0
  formula.m <- list(
    as.formula(paste0(outcomes[1], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+"))),
    as.formula(paste0(outcomes[2], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
  )
  
  for (edu in 1:2) {
    s <- d.list[[edu]]
    out <- lm_robust(formula.m[[1]], data = s, se_type = "HC1")
    out2 <- lm_robust(formula.m[[1]], data = s, se_type = "HC1", alpha = 0.1)
    out3 <- lm_robust(formula.m[[2]], data = s, se_type = "HC1")
    out4 <- lm_robust(formula.m[[2]], data = s, se_type = "HC1", alpha = 0.1)
    x0 <- (1:length(treat)) + 1
    est[, , 2*edu-1] <- cbind(out$coefficients[x0], out$conf.low[x0], out$conf.high[x0], out2$conf.low[x0], out2$conf.high[x0])
    est[, , 2*edu] <- cbind(out3$coefficients[x0], out3$conf.low[x0], out3$conf.high[x0], out4$conf.low[x0], out4$conf.high[x0])
  }
}

# Function to plot sentiments by education level
plot_sentiments <- function(start_index, title) {
  par(mar = c(3,3,3,1))
  plot(1, type = "n", xlim = c(0.5, 2.5), ylim = c(-0.4, 0.6), axes = FALSE, xlab = "", ylab = "")
  box()
  axis(2)
  axis(1, at = 1:2, labels = sample.labs, line = -2.2, tick = FALSE)
  axis(1, at = 1.5, labels = title, line = -.2, tick = FALSE)
  abline(h = seq(-0.4, 0.6, 0.1), col = "#AAAAAA50")
  abline(h = 0, lwd = 2, col = "#DDDDDD")
  for (i in start_index:(start_index+1)) {
    for (j in 1:length(treat)) {
      x0 <- (i-start_index+1) + adj[j]
      lines(c(x0, x0), c(est[j,2,i], est[j,3,i]), lwd = 1, col = "grey30")
      lines(c(x0, x0), c(est[j,4,i], est[j,5,i]), lwd = 3, col = "grey30")
      points(x0, est[j,1,i], col = "grey30", pch = mypch[j], cex = 1.5)
    }
  }
  legend("top", legend=tr.labs, border=NA, bty="n", ncol=3, col="grey30", lwd=2, pch=mypch, cex=0.8, seg.len=1, text.width = 0.4)
}

# Plot Victim Sentiments by Education
plot_sentiments(1, "Victim Sentiments")

# Plot Patriotic Sentiments by Education
plot_sentiments(3, "Patriotic Sentiments")

Replicating Figure 4 in the article

3.4 Perception of Intention and Support for Hawkish Foreign Policy

Does activating memories of national humiliation increase anti-foreign sentiment? The figure below shows that the victimization narrative heightens individuals’ suspicion of foreign governments’ intentions in international disputes. Recipients of the victimization narrative are more likely to view foreign actions as attempts to slow China’s rise rather than legitimate moves to protect national interests. The victimization narrative raises suspicion of foreign intentions across four issue areas and increases support for more hawkish foreign policies (particularly regarding the US-China trade dispute and U.S. sanctions against Huawei).

Evoking memories of national humiliation strengthens public preference for retaliation, thus, discouraging cooperation or negotiation. The Olympic treatment has smaller and marginally significant effects.

debug_formula1 <- paste0(outcomes[1], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+"))
debug_formula2 <- paste0(outcomes[2], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+"))

formula1 <- as.formula(paste0(outcomes[1], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
out1 <- lm_robust(formula1, data = d0, se_type = "HC1")
out2 <- lm_robust(formula1, data = d0, se_type = "HC1", alpha = 0.1)
x0 <- c(1:length(treat)) + 1
est <- array(NA, dim = c(length(treat), 5, 2))
est[,,1] <- cbind(out1$coefficients[x0], out1$conf.low[x0], out1$conf.high[x0], out2$conf.low[x0], out2$conf.high[x0])

# Estimates of support for hawkish policies
formula2 <- as.formula(paste0(outcomes[2], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
out3 <- lm_robust(formula2, data = d0, se_type = "HC1")
out4 <- lm_robust(formula2, data = d0, se_type = "HC1", alpha = 0.1)
est[,,2] <- cbind(out3$coefficients[x0], out3$conf.low[x0], out3$conf.high[x0], out4$conf.low[x0], out4$conf.high[x0])

# Plotting directly
par(mar = c(3,3,3,1))
plot(1, type = "n", xlim = c(0.5, 2.5), ylim = c(-0.4, 0.6), axes = FALSE)
box()
axis(2)
axis(1, at = 1:2, labels = c("Perception of Intention", "Support for Hawkish Policies"), line = -0.2, tick = FALSE)
abline(h = seq(-1, 1, 0.1), col = "#AAAAAA50") # treatment line color
abline(v = seq(0, 4, 0.1), col = "#AAAAAA50")
abline(h = 0, lwd = 5, col = "#DDDDDD")
for (i in 1:2) {
  for (j in 1:length(treat)) {
    x0 <- i + adj[j] # Ensure 'adj' and 'mypch' are defined or adjust accordingly
    lines(c(x0, x0), c(est[j, 2, i], est[j, 3, i]), lwd = 1, col = "grey30")
    lines(c(x0, x0), c(est[j, 4, i], est[j, 5, i]), lwd = 3, col = "grey30")
    points(x0, est[j, 1, i], col = "grey30", pch = mypch[j], cex = 1.5)
  }
}
legend("top", legend = tr.labs, border = NA, bty = "n", ncol = 3, col = "grey30", lwd = 2, pch = mypch, cex = 1, seg.len = 2)

Replicating Figure 5 in the article

Compared with college graduates, the victimization narrative and the Olympic treatment lead to more antagonistic views of foreign intentions among people without a college degree. For respondents with college degrees or higher, none of the treatment conditions have a statistically significant effect on foreign policy preferences.

par(mfrow = c(1,2))
# Redefine variables
outcomes <- c("nat","pat", "system", "perception","hawk")
y.lims <- list(c(-0.4, 0.6), c(-0.4, 0.6),c(-0.4, 0.6), c(-0.4, 0.6), c(-0.4,0.6))
treat <- c("tr_victim","tr_liberal","tr_olympic")
covars <- c("ideology_nati","ideology_poli","ideology_econ", "age","age_sq","female","hschool","jcollege","college","factor(prov)", "income", "substatus","knwl", "minority", "ccp")

# Figure 6 Effects on Perception of Intention and Support for Hawkish Policies by Education
d.high <- d0[which(d0$eduyr >= 16),]
d.low <- d0[which(d0$eduyr < 16),]
d.list <- list(d.low, d.high)
sample.labs <- c("Below College", "College or Above")

# estimates of perception of intention and support for hawkish policies
for (i in 1:2) {
  d0[,outcomes[i]] <- scale(d0[,outcomes[i]])
  d.list <- list(d.low, d.high)
  formula.m <- c(
    as.formula(paste0(outcomes[4], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+"))), 
    as.formula(paste0(outcomes[5], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
  )
}

est <- array(NA, dim = c(length(treat), 5, 4))
x0 <- c(1:length(treat)) + 1
out <- lm_robust(formula.m[[1]], data = d.low, se_type = "HC1")
out2 <- lm_robust(formula.m[[1]], data = d.low, se_type = "HC1", alpha = 0.1)
out3 <- lm_robust(formula.m[[1]], data = d.high, se_type = "HC1")
out4 <- lm_robust(formula.m[[1]], data = d.high, se_type = "HC1", alpha = 0.1)
out5 <- lm_robust(formula.m[[2]], data = d.low, se_type = "HC1")
out6 <- lm_robust(formula.m[[2]], data = d.low, se_type = "HC1", alpha = 0.1)
out7 <- lm_robust(formula.m[[2]], data = d.high, se_type = "HC1")
out8 <- lm_robust(formula.m[[2]], data = d.high, se_type = "HC1", alpha = 0.1)

est[,,1] <- cbind(out$coefficients[x0], out$conf.low[x0], out$conf.high[x0], out2$conf.low[x0], out2$conf.high[x0])
est[,,2] <- cbind(out3$coefficients[x0], out3$conf.low[x0], out3$conf.high[x0], out4$conf.low[x0], out4$conf.high[x0])
est[,,3] <- cbind(out5$coefficients[x0], out5$conf.low[x0], out5$conf.high[x0], out6$conf.low[x0], out6$conf.high[x0])
est[,,4] <- cbind(out7$coefficients[x0], out7$conf.low[x0], out7$conf.high[x0], out8$conf.low[x0], out8$conf.high[x0])

## plotting Figure 6 right side - support for hawkish policies
par(mar = c(3, 3, 3, 1))
plot(1, type = "n", xlim = c(0.5, 2.5), ylim = c(-0.4, 0.6), axes = FALSE, xlab = "", ylab = "")
box()
axis(2)
axis(1, at = 1:2, labels = c("Below College", "College or Above"), line = -2.2, tick = FALSE)
axis(1, at = 1.5, labels = c("Support for Hawkish Policies"), line = -.2, tick = FALSE)
abline(h = seq(-1, 1, 0.1), col = "#AAAAAA50")
abline(v = seq(0, 4, 0.1), col = "#AAAAAA50")
abline(h = 0, lwd = 5, col = "#DDDDDD")

for (i in 3:4) {
  for (j in 1:length(treat)) {
    x0 <- i + adj[j] - 2
    lines(c(x0, x0), c(est[j, 2, i], est[j, 3, i]), lwd = 1, col = "grey30")
    lines(c(x0, x0), c(est[j, 4, i], est[j, 5, i]), lwd = 3, col = "grey30")
    points(x0, est[j, 1, i], col = "grey30", pch = mypch[j], cex = 1.5)
  }
}

legend("top", legend = tr.labs, border = NA, bty = "n", ncol = 3, col = "grey30", lwd = 2, pch = mypch, cex = 0.8, seg.len = 1)

## plotting Figure 6 left side - perception of intention
par(mar = c(3, 3, 3, 1))
plot(1, type = "n", xlim = c(0.5, 2.5), ylim = c(-0.4, 0.6), axes = FALSE, xlab = "", ylab = "")
box()
axis(2)
axis(1, at = 1:2, labels = c("Below College", "College or Above"), line = -2.2, tick = FALSE)
axis(1, at = 1.5, labels = c("Perception of Intention"), line = -.2, tick = FALSE)
abline(h = seq(-1, 1, 0.1), col = "#AAAAAA50")
abline(v = seq(0, 4, 0.1), col = "#AAAAAA50")
abline(h = 0, lwd = 5, col = "#DDDDDD")

for (i in 1:2) {
  for (j in 1:length(treat)) {
    x0 <- i + adj[j]
    lines(c(x0, x0), c(est[j, 2, i], est[j, 3, i]), lwd = 1, col = "grey30")
    lines(c(x0, x0), c(est[j, 4, i], est[j, 5, i]), lwd = 3, col = "grey30")
    points(x0, est[j, 1, i], col = "grey30", pch = mypch[j], cex = 1.5)
  }
}

legend("top", legend = tr.labs, border = NA, bty = "n", ncol = 3, col = "grey30", lwd = 2, pch = mypch, cex = 0.8, seg.len = 1)

Replicating Figure 6 in the article

3.5 Support for the Political System

The authors then examine the effect of the victimization narrative on domestic political support. The figure below shows that recalling memories of national humiliation strengthens support for the Chinese political system only among respondents without college degrees.

Despite showing a small average effect in the sample, the victimization narrative is expected to have a substantial impact on public support for the Chinese political system because 41% of the online participants have post-secondary education, compared to only 7% of the Chinese population.

# Figure 7 Treatment Effects on Support for the Political System
d.high <- d0[which(d0$eduyr >= 16),]
d.low <- d0[which(d0$eduyr < 16),]
d.list <- list(d0, d.low, d.high)
sample.labs <- c("Full Sample", "Below College", "College or Above")

# estimates of support for the political system
est <- array(NA, dim = c(length(treat), 5, 3))
for (m in 1:length(d.list)) {
  formula.m <- as.formula(paste0(outcomes[3], "~", paste(treat, collapse = "+"), "+", paste(covars, collapse = "+")))
  s <- d.list[[m]]
  out <- lm_robust(formula.m, data = s, se_type = "HC1")
  out2 <- lm_robust(formula.m, data = s, se_type = "HC1", alpha = 0.1)
  x0 <- c(1:length(treat)) + 1
  est[, , m] <- cbind(out$coefficients[x0], out$conf.low[x0], out$conf.high[x0], out2$conf.low[x0], out2$conf.high[x0])
}

## plotting
par(mar = c(3, 3, 3, 1))
plot(1, type = "n", xlim = c(0.5, 3.5), ylim = c(-0.5, 0.6), axes = FALSE)
box()
axis(2)
axis(1, at = 1:3, labels = sample.labs, line = -0.2, tick = FALSE)
abline(h = seq(-1, 1, 0.1), col = "#AAAAAA50")
abline(v = seq(0, 4, 0.1), col = "#AAAAAA50")
abline(h = 0, lwd = 5, col = "#DDDDDD")
for (i in 1:3) {
  for (j in 1:length(treat)) {
    x0 <- i + adj[j]
    lines(c(x0, x0), c(est[j, 2, i], est[j, 3, i]), lwd = 1, col = "grey30")
    lines(c(x0, x0), c(est[j, 4, i], est[j, 5, i]), lwd = 3, col = "grey30")
    points(x0, est[j, 1, i], col = "grey30", pch = mypch[j], cex = 1.5)
  }
}
legend("top", legend = tr.labs, border = NA, bty = "n", ncol = 3, col = "grey30",
       lwd = 2, pch = mypch, cex = 1, seg.len = 2)

Replicating Figure 7 in the article

3.6 Robustness Checks and Mediation Analyses

The authors conduct robustness checks by restricting the sample based on different conditions and report their findings in the supplementary materials. These conditions include emotions experienced after reading the vignette, agreement with the vignette, understanding of the argument of the vignette, and time spent on the survey. They find that individuals who agree with the victimization narrative exhibit stronger treatment effects. Other results remain qualitatively the same as the main findings.

As for concerns about preference falsification in authoritarian regimes, the authors believe that it does not invalidate the findings. They argue that if people were under high pressure to express pro-regime attitudes, similar conformity biases across outcome variables should have been recorded. However, this is not observed in the experiment results. Falsifying preferences may lead people to show more patriotic love for their country, but the treatments largely do not affect patriotic sentiment and are more effective on victim sentiment. It is also unclear how preference falsification would contribute to more aggressive attitudes toward foreign countries.

They conduct mediation analyses to explore the mechanisms through which the treatments affect outcomes and find that victim sentiment is more likely a mechanism than patriotic sentiment for the victimization narrative treatment’s impact on support for hawkish foreign policy and perception of intention.

4 Implications

The study suggests that a victimization narrative propagated by an autocratic government can effectively provoke anger toward foreign countries while boosting domestic support. However, an excessive focus on victimization may weaken foreign relations and lead to a public opinion crisis that works against international collaboration. Previous research has shown that an angry public motivated by a strong national identity can protest against domestic government inaction when the government prefers softer foreign policies (Weiss and Dafoe 2019). A society can be seriously damaged by nationalistic fervor, as the Boxers did in the early 20th century.

The authors encourage more research to determine if these findings can be extended to other countries or contexts. Since most people do not witness historical events that took place long ago, and for those who do, their memories can be suppressed and their voices silenced, an authoritarian government is in a unique position to tell its citizens what happened in the past (Zerubavel 1995). A monopoly on media and authoritarian control over the education system can significantly facilitate the spread of the official narrative (See Callahan (2006), and Liu and Ma (2018) ), while in democratic societies, a free press, as well as mechanisms of checks and balances, allows for alternative narratives that challenge the official one.

Reference

Callahan, William A. 2006. “History, Identity, and Security: Producing and Consuming Nationalism in China.” Critical Asian Studies 38 (2): 179–208.
Fukuyama, Francis. 2018. Identity: The Demand for Dignity and the Politics of Resentment. Farrar, Straus; Giroux.
Jager, Sheila Miyoshi. 2016. Narratives of Nation-Building in Korea: A Genealogy of Patriotism. Routledge.
Kosterman, Rick, and Seymour Feshbach. 1989. “Toward a Measure of Patriotic and Nationalistic Attitudes.” Political Psychology, 257–74.
Liu, Chuyu, and Xiao Ma. 2018. “Popular Threats and Nationalistic Propaganda: Political Logic of China’s Patriotic Campaign.” Security Studies 27 (4): 633–64.
Pan, Jennifer, and Yiqing Xu. 2018. “China’s Ideological Spectrum.” The Journal of Politics 80 (1): 254–73.
Weiss, Jessica Chen, and Allan Dafoe. 2019. “Authoritarian Audiences, Rhetoric, and Propaganda in International Crises: Evidence from China.” International Studies Quarterly.
Xu, Yiqing, and Jiannan Zhao. 2023. The power of history: How a victimization narrative shapes national identity and public opinion in China.” Research & Politics 10 (2): 205316802311548. https://doi.org/10.1177/20531680231154837.
Zerubavel, Yael. 1995. Recovered Roots: Collective Memory and the Making of Israeli National Tradition. University of Chicago Press.