Local support and public reaction
| Date | Presenters | Method |
|---|---|---|
| 4 Dec: | Shahadaan, Kristine, Daichi | ethnography |
| 11 Dec: | Bérénice, Zorka, Victoria, Katharina | content analysis |
| 18 Dec: | Shoam, Aidan, Tara, Sebastian | QCA |
Take the survey at https://forms.gle/VZJuzHbzXXtNW2KN9
In October 2023, the Irish Women’s Football team qualified for the Women’s World Cup. In the days after, the Irish public was ablaze with debate, politicians took turns condemning and defending the players, and UEFA launched an investigation that ended in a 20,000 EUR fine. Why? For singing a certain song…
see also 8-minute roundtable: https://www.youtube.com/watch?v=KkGfRbh2_Vw
import { liveGoogleSheet } from "@jimjamslam/live-google-sheet";
import { aq, op } from "@uwdata/arquero";
// UPDATE THE LINK FOR A NEW POLL
surveyResults = liveGoogleSheet(
"https://docs.google.com/spreadsheets/d/e/" +
"2PACX-1vROlIm6z3iEJH16_NhePQ5TQJKNti8GrDmGTH5dPJ0SPtPNbKc_WVmfu463ijQzJrsrnwcPf-2KZo_g/" +
"pub?gid=870695621&single=true&output=csv",
10000, 1, 7); // adjust the last number to select all relevant columns
respondentCount = surveyResults.length;local support necessary violent group to have success?
local_supportCounts = aq.from(surveyResults)
.select("local_support")
.groupby("local_support")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
local_support_maxCountRE = Math.max(...local_supportCounts.objects().map(d => d.count));
plot_local_support = Plot.plot({
marks: [
Plot.barY(local_supportCounts, {
x: "local_support",
y: "count",
fill: "local_support",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Yes",
"No",
"Maybe"
],
range: [
"forestgreen",
"darkred",
"goldenrod"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -1, padding: 0.2,
domain: ["Yes", "No", "Maybe"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(local_supportCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, local_support_maxCountRE]
},
facet: { data: local_supportCounts, x: "measure", label: "" },
marginLeft: 60,
style: {
width: 1600,
height: 500,
fontSize: 40,
},
});Why do you think so? What might ‘success’ mean and does that affect the ‘necessity’ of local support?
violent escalation tends to alienate the public, reducing support?
escalationCounts = aq.from(surveyResults)
.select("escalation")
.groupby("escalation")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
escalation_maxCountRE = Math.max(...escalationCounts.objects().map(d => d.count));
plot_escalation = Plot.plot({
marks: [
Plot.barY(escalationCounts, {
x: "escalation",
y: "count",
fill: "escalation",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Strongly disagree",
"Disagree",
"Neutral",
"Agree",
"Strongly agree"
],
range: [
"red",
"pink",
"lightgrey",
"lightgreen",
"forestgreen"
]
},
marginBottom: 180,
x: { label: "", tickSize: 2, tickRotate: -45,
domain: ["Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(escalationCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, escalation_maxCountRE]
},
facet: { data: escalationCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});most common reason people support politically violent groups?
reasonCounts = aq.from(surveyResults)
.select("reason")
.groupby("reason")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
reason_maxCountRE = Math.max(...reasonCounts.objects().map(d => d.count));
plot_reason = Plot.plot({
marks: [
Plot.barY(reasonCounts, {
x: "reason",
y: "count",
fill: "reason",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"political grievances",
"economic grievances",
"ideological beliefs",
"identity factors",
"other"
],
range: [
"indigo",
"goldenrod",
"cadetblue",
"forestgreen",
"violet"
]
},
marginBottom: 500,
x: { label: "", tickSize: 2, tickRotate: -60, padding: 0.2,
domain: ["political grievances", "economic grievances", "ideological beliefs", "identity factors", "other"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(reasonCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, reason_maxCountRE]
},
facet: { data: reasonCounts, x: "measure", label: "" },
marginLeft: 60,
style: {
width: 1600,
height: 500,
fontSize: 40,
},
});different reaction depending on ideological motivation of violence?
react_differentlyCounts = aq.from(surveyResults)
.select("react_differently")
.groupby("react_differently")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
react_differently_maxCountRE = Math.max(...react_differentlyCounts.objects().map(d => d.count));
plot_react_differently = Plot.plot({
marks: [
Plot.barY(react_differentlyCounts, {
x: "react_differently",
y: "count",
fill: "react_differently",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Strongly disagree",
"Disagree",
"Neutral",
"Agree",
"Strongly agree"
],
range: [
"red",
"pink",
"lightgrey",
"lightgreen",
"forestgreen"
]
},
marginBottom: 180,
x: { label: "", tickSize: 2, tickRotate: -45,
domain: ["Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(react_differentlyCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, react_differently_maxCountRE]
},
facet: { data: react_differentlyCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});After an attack, following demand, should policymakers shift toward harsher policies?
demandCounts = aq.from(surveyResults)
.select("demand")
.groupby("demand")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
demand_maxCountRE = Math.max(...demandCounts.objects().map(d => d.count));
plot_demand = Plot.plot({
marks: [
Plot.barY(demandCounts, {
x: "demand",
y: "count",
fill: "demand",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Yes",
"No",
"Maybe"
],
range: [
"forestgreen",
"darkred",
"goldenrod"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -1, padding: 0.2,
domain: ["Yes", "No", "Maybe"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(demandCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, demand_maxCountRE]
},
facet: { data: demandCounts, x: "measure", label: "" },
marginLeft: 60,
style: {
width: 1600,
height: 500,
fontSize: 40,
},
});state repression usually strengthens violent groups’ legitimacy?
repressionCounts = aq.from(surveyResults)
.select("repression")
.groupby("repression")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
repression_maxCountRE = Math.max(...repressionCounts.objects().map(d => d.count));
plot_repression = Plot.plot({
marks: [
Plot.barY(repressionCounts, {
x: "repression",
y: "count",
fill: "repression",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"Strongly disagree",
"Disagree",
"Neutral",
"Agree",
"Strongly agree"
],
range: [
"red",
"pink",
"lightgrey",
"lightgreen",
"forestgreen"
]
},
marginBottom: 180,
x: { label: "", tickSize: 2, tickRotate: -45,
domain: ["Strongly disagree", "Disagree", "Neutral", "Agree", "Strongly agree"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(repressionCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, repression_maxCountRE]
},
facet: { data: repressionCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});restraint
escalation
| Demographic | 2016 | 2020 |
|---|---|---|
| Sample Overall | 15.28 | 14.34 |
| Extremely Liberal | 14.55 | 30.79 |
| Liberal | 10.02 | 17.36 |
| Slightly Liberal | 16.83 | 16.23 |
| Moderate | 15.93 | 16.30 |
| Slightly Conservative | 14.84 | 8.59 |
| Conservative | 9.24 | 5.45 |
| Extremely Conservative | 12.71 | 8.22 |
| White | 11.79 | 10.89 |
| Black | 24.37 | 24.41 |
| Men | 16.45 | 14.13 |
| Women | 14.17 | 14.63 |
| Age 18-29 | 28.40 | 30.42 |
| Age 30-39 | 16.42 | 21.13 |
| Age 40-49 | 14.54 | 16.85 |
| Age 50-59 | 13.12 | 10.76 |
| Age 60-69 | 9.86 | 7.15 |
| Age 70-79 | 9.35 | 7.57 |
| Age 80+ | 15.03 | 6.02 |
| Attends Church | 16.10 | 12.82 |
| Does Not Attend Church | 14.00 | 15.81 |
any numbers that you think are noteworthy?
| Demographic | 2016 | 2020 |
|---|---|---|
| Sample Overall | 15.28 | 14.34 |
| Extremely Liberal | 14.55 | 30.79 |
| Liberal | 10.02 | 17.36 |
| Slightly Liberal | 16.83 | 16.23 |
| Moderate | 15.93 | 16.30 |
| Slightly Conservative | 14.84 | 8.59 |
| Conservative | 9.24 | 5.45 |
| Extremely Conservative | 12.71 | 8.22 |
| White | 11.79 | 10.89 |
| Black | 24.37 | 24.41 |
| Men | 16.45 | 14.13 |
| Women | 14.17 | 14.63 |
| Age 18-29 | 28.40 | 30.42 |
| Age 30-39 | 16.42 | 21.13 |
| Age 40-49 | 14.54 | 16.85 |
| Age 50-59 | 13.12 | 10.76 |
| Age 60-69 | 9.86 | 7.15 |
| Age 70-79 | 9.35 | 7.57 |
| Age 80+ | 15.03 | 6.02 |
| Attends Church | 16.10 | 12.82 |
| Does Not Attend Church | 14.00 | 15.81 |
| Demographic | 2016 | 2020 |
|---|---|---|
| Sample Overall | 15.28 | 14.34 |
| Extremely Liberal | 14.55 | 30.79 |
| Liberal | 10.02 | 17.36 |
| Slightly Liberal | 16.83 | 16.23 |
| Moderate | 15.93 | 16.30 |
| Slightly Conservative | 14.84 | 8.59 |
| Conservative | 9.24 | 5.45 |
| Extremely Conservative | 12.71 | 8.22 |
| White | 11.79 | 10.89 |
| Black | 24.37 | 24.41 |
| Men | 16.45 | 14.13 |
| Women | 14.17 | 14.63 |
| Age 18-29 | 28.40 | 30.42 |
| Age 30-39 | 16.42 | 21.13 |
| Age 40-49 | 14.54 | 16.85 |
| Age 50-59 | 13.12 | 10.76 |
| Age 60-69 | 9.86 | 7.15 |
| Age 70-79 | 9.35 | 7.57 |
| Age 80+ | 15.03 | 6.02 |
| Attends Church | 16.10 | 12.82 |
| Does Not Attend Church | 14.00 | 15.81 |
One strange outlier is the 2016 survey’s proportion of 80+ year-olds who find political violence acceptable. We have checked the coding on this variable multiple times to ensure that there is nothing wrong with it, and it has remained accurate every time. Either the 2016 ANES just happened to capture a particularly rowdy set of senior citizens, or there was some cohort effect among that sample’s oldest respondents that was not shared among the 2020 cohort—such as lingering memories of WWII or the 1960s movements.
the George Floyd riots functioned as a new “situational variation” that shifted people’s attitudes, increasing the proportion of liberals and ardent BLM movement supporters who felt that the political violence was justifiable.”
“people may shift their attitudes about political violence yet again when a different movement poses a new situational variation. In one instance, people can be supportive of political violence and then, in a different instance, be morally opposed to it. The key factor shaping beliefs in any particular moment is how a person feels about the movement that is using political violence.”
What do we take from these findings? How does local support (or opposition) manifest cases you know of?
to what extent and how do terrorist attacks influence public debates? What are the differences between public debates after extreme right and Islamist terrorist attacks?
What do you expect, hypothesise?
Author’s own discursive radicalisation model - how radical actors may shape public debates after critical events such as terrorist attacks
Finding: the most publicised terrorist attacks were those where the debate centred on the ideological motives of the perpetrators and the political consequences of the act
Finding: extremists (esp. Islamists) gain more discursive space after attacks
comparing level of public support for issues and actors as object of statements one week before and one week after Islamist and extreme right attacks: captures change of (average) positions on issues and actors as the objects of statements (-1 stands for a negative relationship and 1 for a positive relationship) covered in the mass media
Public legitimacy shift (average position)
|
||
|---|---|---|
| Islamist attacks | Extreme right attacks | |
| Statements referring to Actors | ||
| extreme right actors | -0.18 | -0.35 |
| Islamist actors | -0.28 | -0.37 |
| Statements referring to Issues | ||
| Islam | -0.35 | -0.11 |
| migration | -0.19 | -0.55 |
| nationalism | -0.19 | -0.16 |
| radicalisation | 0.01 | -0.06 |
Public legitimacy shift (average position)
|
||
|---|---|---|
| Islamist attacks | Extreme right attacks | |
| Statements referring to Actors | ||
| extreme right actors | -0.18 | -0.35 |
| Islamist actors | -0.28 | -0.37 |
| Statements referring to Issues | ||
| Islam | -0.35 | -0.11 |
| migration | -0.19 | -0.55 |
| nationalism | -0.19 | -0.16 |
| radicalisation | 0.01 | -0.06 |
Terrorist attacks reduce the public legitimacy of extremist actors and their political agenda in public debates
Public legitimacy shift (average position)
|
||
|---|---|---|
| Islamist attacks | Extreme right attacks | |
| Statements referring to Actors | ||
| extreme right actors | -0.18 | -0.35 |
| Islamist actors | -0.28 | -0.37 |
| Statements referring to Issues | ||
| Islam | -0.35 | -0.11 |
| migration | -0.19 | -0.55 |
| nationalism | -0.19 | -0.16 |
| radicalisation | 0.01 | -0.06 |
legitimacy of Islam decreases more after Islamist attacks than the legitimacy of nationalism does after extreme right attacks (issues)
Who were the most influential actors in pushing frames and issues onto the media agenda?
To answer this, Völker (2023) creates ‘discourse networks’
Public and political reactions drive state policy and repressive responses (covered in the next two weeks)
(relates to repressive responses that we will address in Week 12)
Io Saturnalia! and happy holidays
Anonymous feedback here: https://forms.gle/NfF1pCfYMbkAT3WP6
Alternatively, please send me an email: m.zeller@lmu.de