This analysis examines trends in political extremism across different populations (waves) using standardized indices that measure cognitive, behavioral, and social dimensions of extremism. We focus on Task 1: Comparing Populations, which includes several subtasks:
1.1 Analysis of Population Absolute Indices
1.2 Analysis of Population Relative Indices
1.3 Integrated Analysis of Absolute and Relative Indices
1.4 Analysis of Population Trends Consistency
1.5 Comparative Analysis of Populations
Our goal is to identify only significant findings related to how extremism patterns change over time or differ between populations.
# Load the data
dimensions_order <- c("Overall", "Cognitive", "Behavioral", "Social")
# Read the data from indices_table.txt
df <- as.data.frame(readRDS("Israel Survey/data/il_pe.RDS"))
# Remove "Other" gender category (6 respondents) if it exists to prevent regression convergence issues
df <- df %>%
filter(gender != "Other") %>%
mutate(gender = droplevels(gender)) # Remove unused factor level
indices_df <- af_gauge_indices(df, pop_var1 = "Wave")
population_data <- indices_df$indices_table
af_transpose_gt(population_data, rowname_col = "Wave", title = "Population Indices by Wave")
Population Indices by Wave | ||||||
First | Second | Third | Fifth | Sixth | Fourth | |
---|---|---|---|---|---|---|
cnp_p | 3.569135 | 3.357240 | 3.233646 | 3.4260493 | 3.4036386 | 3.145137 |
bnp_p | 1.107270 | 1.148522 | 1.130083 | 1.1599432 | 1.1756532 | 1.132812 |
snp_p | 3.746843 | 3.718044 | 3.813293 | 3.8307571 | 3.8038585 | 3.792362 |
onp_p | 3.055247 | 2.967267 | 2.959435 | 3.0418187 | 3.0241393 | 2.918742 |
cep_p | 6.108467 | 5.634817 | 5.339095 | 5.6548376 | 5.6596380 | 5.294486 |
bep_p | 1.266307 | 1.368721 | 1.322944 | 1.3970749 | 1.4159644 | 1.329719 |
sep_p | 5.523014 | 5.580246 | 5.727573 | 5.7253847 | 5.6768473 | 5.633153 |
oep_p | 4.535627 | 4.333364 | 4.264858 | 4.3916931 | 4.5282093 | 4.372101 |
cel_p | 21.206468 | 17.921593 | 20.654628 | 16.7322835 | 22.1723519 | 23.242468 |
bel_p | 36.504975 | 31.487243 | 32.279910 | 30.6430446 | 32.3159785 | 28.981349 |
sel_p | 16.417910 | 17.423771 | 14.898420 | 15.4855643 | 15.7989228 | 16.499283 |
oel_p | 14.987562 | 15.930305 | 13.995485 | 14.6325459 | 12.3877917 | 13.916786 |
er1_p | 57.151741 | 51.026758 | 54.740406 | 51.1154856 | 56.8222621 | 54.088953 |
er2_p | 14.490050 | 13.316739 | 11.173815 | 10.8267717 | 12.5673250 | 12.769010 |
er3_p | 2.487562 | 2.489110 | 1.918736 | 0.9186352 | 0.8976661 | 1.865136 |
np | 1608.000000 | 1607.000000 | 886.000000 | 1524.0000000 | 1114.0000000 | 697.000000 |
nc | 0.000000 | 0.000000 | 0.000000 | 0.0000000 | 0.0000000 | 0.000000 |
This section examines the central tendency and distribution of extremism in populations over time, focusing on Normative Points (NP), Extremism Points (EP), and EP/NP ratios.
# Calculate EP/NP ratios
population_data <- population_data %>%
mutate(
c_ratio = cep_p / cnp_p,
b_ratio = bep_p / bnp_p,
s_ratio = sep_p / snp_p,
o_ratio = oep_p / onp_p
)
# Reshape data for plotting
np_data <- population_data %>%
select(Wave, cnp_p, bnp_p, snp_p, onp_p) %>%
pivot_longer(cols = -Wave, names_to = "dimension", values_to = "value") %>%
mutate(type = "Normative Points")
ep_data <- population_data %>%
select(Wave, cep_p, bep_p, sep_p, oep_p) %>%
pivot_longer(cols = -Wave, names_to = "dimension", values_to = "value") %>%
mutate(type = "Extremism Points")
ratio_data <- population_data %>%
select(Wave, c_ratio, b_ratio, s_ratio, o_ratio) %>%
pivot_longer(cols = -Wave, names_to = "dimension", values_to = "value") %>%
mutate(type = "EP/NP Ratio")
# Clean up measure names for better plotting
np_data$dimension <- recode(np_data$dimension,
"cnp_p" = "Cognitive",
"bnp_p" = "Behavioral",
"snp_p" = "Social",
"onp_p" = "Overall")
ep_data$dimension <- recode(ep_data$dimension,
"cep_p" = "Cognitive",
"bep_p" = "Behavioral",
"sep_p" = "Social",
"oep_p" = "Overall")
ratio_data$dimension <- recode(ratio_data$dimension,
"c_ratio" = "Cognitive",
"b_ratio" = "Behavioral",
"s_ratio" = "Social",
"o_ratio" = "Overall")
np_data <- np_data %>%
mutate(dimension = factor(dimension, levels = dimensions_order))
ep_data <- ep_data %>%
mutate(dimension = factor(dimension, levels = dimensions_order))
ratio_data <- ratio_data %>%
mutate(dimension = factor(dimension, levels = dimensions_order))
The analysis of Normative Points (NP) reveals that the social dimension consistently shows higher levels of extremism compared to the cognitive and behavioral dimensions across all waves. This suggests that intolerance toward outgroups is more pronounced than extremist political positions or support for political violence.
The cognitive dimension (extremism of political positions) shows a distinctive U-shaped pattern over time. There was a substantial decline from the First wave (1.28) to the Fourth wave (1.03), representing a 19.5% decrease and reaching the lowest point in the series. However, this was followed by a significant rebound in the Fifth wave (1.21), an increase of 17.5% from the Fourth wave. The level then slightly decreased to 1.20 in the Sixth wave. Overall, while there is a net decrease of 6.4% from First to Sixth wave, the non-linear pattern suggests a more complex dynamic in extremist political positions over time.
The Overall Extremism Point (oep_p) shows only minor fluctuations across waves, ranging from 3.49 to 3.60 on a 1-7 scale. These variations, representing at most a 3.2% change between consecutive waves, are relatively small in magnitude. When viewed in the context of the full scale, these changes suggest a generally stable pattern in the distribution of extremism over time, rather than meaningful shifts in polarization.
p1 <- af_create_xy_plot(data = np_data, x_var = "Wave", y_var = "value",
grouping_variable = "dimension", show_points = TRUE,
title = "Normative Points",
y_label = "Index Value (1-7)",
legend_position = "bottom") + scale_x_discrete(limits = levels(df$Wave))
af_event_labels(p1)
p2 <- af_create_xy_plot(data = ep_data, x_var = "Wave", y_var = "value",
grouping_variable = "dimension", show_points = TRUE,
title = "Extremism Points",
y_label = "Index Value (1-7)",
legend_position = "bottom") + scale_x_discrete(limits = levels(df$Wave))
af_event_labels(p2)
p3 <- af_create_xy_plot(data = ratio_data, x_var = "Wave", y_var = "value",
grouping_variable = "dimension", show_points = TRUE,
title = "Internal Polarization",
y_label = "ep / np",
legend_position = "bottom") + scale_x_discrete(limits = levels(df$Wave))
af_event_labels(p3)
This section examines the prevalence of extremism within populations using Extremism Levels (EL) and Extremism Ranks (ER).
The analysis reveals a U-shaped pattern in the behavioral extremism level (bel_p) across waves. There was a sharp initial decline from the First wave (36.5%) to the Second wave (31.5%), followed by a small increase in the Third wave (32.4%), then dropping to its lowest point in the Fourth wave (29.0%). Subsequently, there was a clear rebound in the Fifth (30.6%) and Sixth (32.3%) waves. While there is a net decrease of 11.5% from First to Sixth wave, the recent upward trend from the Fourth to Sixth wave (an 11.4% increase) is equally notable, suggesting a recent resurgence in support for political violence after the initial decline.
The percentage of individuals showing extremism in all three dimensions (er3_p) has declined dramatically across waves, from 2.49% in the First wave to 0.90% in the Sixth wave, representing a 64% decrease. This substantial reduction suggests that while single-dimension extremism may persist, fewer individuals are extreme across all cognitive, behavioral, and social dimensions simultaneously.
# Reshape data for plotting EL values
el_data <- population_data %>%
select(Wave, cel_p, bel_p, sel_p, oel_p) %>%
pivot_longer(cols = -Wave, names_to = "dimension", values_to = "value") %>%
mutate(type = "Extremism Levels")
er_data <- population_data %>%
select(Wave, er1_p, er2_p, er3_p) %>%
pivot_longer(cols = -Wave, names_to = "ranking", values_to = "value") %>%
mutate(type = "Extremism Ranks")
# Clean up measure names
el_data$dimension <- recode(el_data$dimension,
"cel_p" = "Cognitive",
"bel_p" = "Behavioral",
"sel_p" = "Social",
"oel_p" = "Overall")
er_data$ranking <- recode(er_data$ranking,
"er1_p" = "ER1",
"er2_p" = "ER2",
"er3_p" = "ER3")
el_data <- el_data %>%
mutate(dimension = factor(dimension, levels = dimensions_order))
er_data <- er_data %>%
mutate(ranking = factor(ranking, levels = c("ER1", "ER2", "ER3")))
p1 <- af_create_xy_plot(data = el_data, x_var = "Wave", y_var = "value",
grouping_variable = "dimension", show_points = TRUE,
title = "Extremism Levels",
y_label = "Index Value %",
legend_position = "bottom") + scale_x_discrete(limits = levels(df$Wave))
af_event_labels(p1)
p2 <- af_create_xy_plot(data = er_data, x_var = "Wave", y_var = "value",
grouping_variable = "ranking", show_points = TRUE,
title = "Extremism Ranks",
y_label = "Index Value %",
legend_position = "bottom") + scale_x_discrete(limits = levels(df$Wave))
af_event_labels(p2)
This section develops a comprehensive understanding of extremism by examining relationships between absolute and relative measures.
A striking divergence pattern emerges between extremism points (EP) and extremism levels (EL) from the First to Sixth wave. While the overall extremism point (oep_p) increases by 2.6%, the percentage of individuals above this threshold (oel_p) decreases substantially by 16.3% - creating a divergence gap of nearly 19 percentage points. This pattern suggests a significant concentration of extremism among a smaller subset of the population over time.
# Create integrated dataset
integrated_data <- population_data %>%
select(Wave, oep_p, oel_p) %>%
pivot_longer(cols = -Wave, names_to = "measure", values_to = "value") %>%
mutate(measure = recode(measure,
"oep_p" = "Overall Extremism Point",
"oel_p" = "Overall Extremism Level"))
# Calculate percentage changes for annotation
ep_change <- (population_data$oep_p[population_data$Wave == "Sixth"] /
population_data$oep_p[population_data$Wave == "First"] - 1) * 100
el_change <- (population_data$oel_p[population_data$Wave == "Sixth"] /
population_data$oel_p[population_data$Wave == "First"] - 1) * 100
divergence_gap <- ep_change - el_change
# Scale factor for second axis
scale_factor <- 5.5
viridis_colors <- viridis(3)
# Plot with dual y-axes and connected lines for both measures
p <- ggplot(population_data, aes(x = Wave)) +
# Line for Overall Extremism Point
geom_line(aes(y = oep_p, group = 1), color = viridis_colors[1], size = 1.2) +
geom_point(aes(y = oep_p), color = viridis_colors[1], size = 3) +
geom_text(aes(y = oep_p, label = round(oep_p, 2)), vjust = -0.8, color = viridis_colors[1]) +
# Line for Overall Extremism Level (scaled)
geom_line(aes(y = oel_p / scale_factor, group = 1), color = viridis_colors[2], size = 1.2) +
geom_point(aes(y = oel_p / scale_factor), color = viridis_colors[2], size = 3) +
geom_text(aes(y = oel_p / scale_factor, label = round(oel_p, 1)), vjust = 1.8, color = viridis_colors[2]) +
scale_x_discrete(limits = levels(df$Wave)) +
scale_y_continuous(
name = "Overall Extremism Point (oep_p)",
sec.axis = sec_axis(~ . * scale_factor, name = "Overall Extremism Level (oel_p, %)")
) +
labs(
title = "Significant Divergence Between Extremism Point and Level",
subtitle = paste0("EP increased by ", round(ep_change, 1),
"% while EL decreased by ", abs(round(el_change, 1)),
"% (divergence gap: ", round(divergence_gap, 1), " percentage points)"),
x = "Wave"
) +
theme_minimal() +
theme(
axis.title.y = element_text(color = viridis_colors[1]),
axis.title.y.right = element_text(color = viridis_colors[2])
)
af_event_labels(p)
p1 <- af_create_xy_bar(data = df, x_var = "gender", y_var = "pe_overall",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Gender and Overall Political Extremism",
y_label = "Overall Political Extremism (1-7)",
legend_position = "bottom")
p2 <- af_create_xy_bar(data = df, x_var = "gender", y_var = "pe_ideology",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Gender and Cognitive Dimension",
y_label = "Ideology (1-7)",
legend_position = "bottom")
p3 <- af_create_xy_bar(data = df, x_var = "gender", y_var = "pe_violence",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Gender and Behavioral Dimension",
y_label = "Violence (1-7)",
legend_position = "bottom")
p4 <- af_create_xy_bar(data = df, x_var = "gender", y_var = "pe_intolerance",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Gender and Social Dimension",
y_label = "Intolerance (1-7)",
legend_position = "bottom")
(p1 + p2) / (p3 + p4) +
plot_annotation(title = "Gender Impact on political Extremism")
p1 <- af_create_xy_plot(data = df, x_var = "age", y_var = "pe_overall",
grouping_variable = "pe_left_center_right",
trend_line = "linear", show_points = FALSE,
title = "Age and Overall Political Extremism",
y_label = "Overall Political Extremism (1-7)",
legend_position = "bottom", legend_label = " ")
p2 <- af_create_xy_plot(data = df, x_var = "age", y_var = "pe_ideology",
grouping_variable = "pe_left_center_right",
trend_line = "linear", show_points = FALSE,
title = "Age and Cognitive Dimension",
y_label = "Ideology (1-7)",
legend_position = "bottom", legend_label = " ")
p3 <- af_create_xy_plot(data = df, x_var = "age", y_var = "pe_violence",
grouping_variable = "pe_left_center_right",
trend_line = "linear", show_points = FALSE,
title = "Age and Behavioral Dimension",
y_label = "Violence (1-7)",
legend_position = "bottom", legend_label = " ")
p4 <- af_create_xy_plot(data = df, x_var = "age", y_var = "pe_intolerance",
grouping_variable = "pe_left_center_right",
trend_line = "linear", show_points = FALSE,
title = "Age and social Dimension",
y_label = "Intolerance (1-7)",
legend_position = "bottom", legend_label = " ")
(p1 + p2) / (p3 + p4) +
plot_annotation(title = "Age Impact on political Extremism")
p1 <- af_create_xy_bar(data = df, x_var = "age_group", y_var = "pe_overall",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Age Group and Overall Political Extremism",
y_label = "Overall Political Extremism (1-7)",
legend_position = "bottom")
p2 <- af_create_xy_bar(data = df, x_var = "age_group", y_var = "pe_ideology",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Age Group and Cognitive Dimension",
y_label = "Ideology (1-7)",
legend_position = "bottom")
p3 <- af_create_xy_bar(data = df, x_var = "age_group", y_var = "pe_violence",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Age Group and Behavioral Dimension",
y_label = "Violence (1-7)",
legend_position = "bottom")
p4 <- af_create_xy_bar(data = df, x_var = "age_group", y_var = "pe_intolerance",
fill_var = "pe_left_center_right", agg_func = "mean",
title = "Age Group and Social Dimension",
y_label = "Intolerance (1-7)",
legend_position = "bottom")
(p1 + p2) / (p3 + p4) +
plot_annotation(title = "Age Group Impact on political Extremism")
p1 <- af_create_xy_plot(data = df, x_var = "age", y_var = "pe_overall",
grouping_variable = "pe_religiosity",
trend_line = "linear", show_points = FALSE,
title = "Age and Overall Political Extremism",
y_label = "Overall Political Extremism (1-7)",
legend_position = "bottom", legend_label = " ")
p1
p2 <- af_create_xy_bar(data = df, x_var = "pe_religiosity", y_var = "pe_overall",
fill_var = "age_group", agg_func = "mean",
title = "Age Group and Overall Political Extremism",
y_label = "Overall Political Extremism (1-7)",
legend_position = "bottom")
p2
p3 <- af_create_xy_bar(data = df, x_var = "pe_religiosity", y_var = "pe_overall",
fill_var = "gender", agg_func = "mean",
title = "Gender and Overall Political Extremism",
y_label = "Overall Political Extremism (1-7)",
legend_position = "bottom")
p3