| Author | Source | Years | Total.texts | Total.words |
|---|---|---|---|---|
| Worch | Rundbriefe | 2005–2012 | 260 | 209041 |
| Sellner | Sezession | 2015–2022 | 100 | 354255 |
| Sellner | Compact | 2016–2021 | 54 | 34926 |
Leadership
| Date | Presenters | Method |
|---|---|---|
| 4 Dec: | Shahadaan, Kristine, Daichi | ethnography |
| 11 Dec: | Bérénice, Zorka, Victoria, Katharina | TBD |
| 18 Dec: | Shoam, Aidan, Tara, Sebastian | QCA |
| Author | Source | Years | Total.texts | Total.words |
|---|---|---|---|---|
| Worch | Rundbriefe | 2005–2012 | 260 | 209041 |
| Sellner | Sezession | 2015–2022 | 100 | 354255 |
| Sellner | Compact | 2016–2021 | 54 | 34926 |
Shared belief in street politics
But Sellner is broader in his scope of activism, transnational if not global outlook
Sellner more ideological: articulating vision and framing the movmement, `metapolitik’ (e.g., ‘Defend Europa’ cruise)
Worch more practical: strategy and tactics and executing actions, emphasis on demonstrations and courts—punishing cities (e.g., Leipzig)
FYI: intro lecture on QTA: https://www.youtube.com/watch?v=bvqur70ZmyM
Take the survey at https://forms.gle/QxENrdB3qNpT1jSa8
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-1vTHArn6wAcAH6pniKyOHgZVbrScYn4aFMgEfpRWE_s-E_e1ZGogYOv5jgJTXv7n_99XH0LvWC9KvYWh/" +
"pub?gid=892835238&single=true&output=csv",
10000, 1, 7); // adjust the last number to select all relevant columns
respondentCount = surveyResults.length;Militant movements are more shaped by their leaders than by their ideologies.
shapedCounts = aq.from(surveyResults)
.select("shaped")
.groupby("shaped")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
shaped_maxCountRE = Math.max(...shapedCounts.objects().map(d => d.count));
plot_shaped = Plot.plot({
marks: [
Plot.barY(shapedCounts, {
x: "shaped",
y: "count",
fill: "shaped",
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(shapedCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, shaped_maxCountRE]
},
facet: { data: shapedCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});Charismatic leadership more likely to lead to political violence
charismaticCounts = aq.from(surveyResults)
.select("charismatic")
.groupby("charismatic")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
charismatic_maxCountRE = Math.max(...charismaticCounts.objects().map(d => d.count));
plot_charismatic = Plot.plot({
marks: [
Plot.barY(charismaticCounts, {
x: "charismatic",
y: "count",
fill: "charismatic",
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(charismaticCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, charismatic_maxCountRE]
},
facet: { data: charismaticCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});Groups that reject hierarchical leadership are less likely to become violent
reject_hierarchyCounts = aq.from(surveyResults)
.select("reject_hierarchy")
.groupby("reject_hierarchy")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
reject_hierarchy_maxCountRE = Math.max(...reject_hierarchyCounts.objects().map(d => d.count));
plot_reject_hierarchy = Plot.plot({
marks: [
Plot.barY(reject_hierarchyCounts, {
x: "reject_hierarchy",
y: "count",
fill: "reject_hierarchy",
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(reject_hierarchyCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, reject_hierarchy_maxCountRE]
},
facet: { data: reject_hierarchyCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});Leaders should be held criminally responsible for the violent acts committed by their followers
responsibleCounts = aq.from(surveyResults)
.select("responsible")
.groupby("responsible")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
responsible_maxCountRE = Math.max(...responsibleCounts.objects().map(d => d.count));
plot_responsible = Plot.plot({
marks: [
Plot.barY(responsibleCounts, {
x: "responsible",
y: "count",
fill: "responsible",
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(responsibleCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, responsible_maxCountRE]
},
facet: { data: responsibleCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});Leaders who rhetorically incite violence should be prosecuted like those who give orders
rhetoricCounts = aq.from(surveyResults)
.select("rhetoric")
.groupby("rhetoric")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
rhetoric_maxCountRE = Math.max(...rhetoricCounts.objects().map(d => d.count));
plot_rhetoric = Plot.plot({
marks: [
Plot.barY(rhetoricCounts, {
x: "rhetoric",
y: "count",
fill: "rhetoric",
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(rhetoricCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, rhetoric_maxCountRE]
},
facet: { data: rhetoricCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});Once violence has begun, a leader’s ability to control it is often overstated.
violence_begunCounts = aq.from(surveyResults)
.select("violence_begun")
.groupby("violence_begun")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
violence_begun_maxCountRE = Math.max(...violence_begunCounts.objects().map(d => d.count));
plot_violence_begun = Plot.plot({
marks: [
Plot.barY(violence_begunCounts, {
x: "violence_begun",
y: "count",
fill: "violence_begun",
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(violence_begunCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, violence_begun_maxCountRE]
},
facet: { data: violence_begunCounts, x: "measure", label: "" },
marginLeft: 60,
style: {
width: 1600,
height: 500,
fontSize: 40,
},
});Terrorism - ‘the threatened or actual use of illegal force, directed against civilian targets, by nonstate actors, in order to attain a political goal, through fear, coercion or intimidation’ (LaFree and Ackerman 2009, 348).
Ooof! – what do we take from this?
Since the dependent variable is the count of terrorist incidents carried out by related ethnic groups per country-year, I consider a Poisson regression model as the estimation technique. But I find the Pearson goodness-of-fit \(x^2\) test to be statistically significant (\(x^2\) = 1,842,103, p< 0.001). This suggests that a Poisson regression estimation fails to fit the data correctly. I instead use multilevel mixed-effects negative binomial regression as an alternative estimation method. Because negative binomial regression adds a dispersion parameter to model the unobserved heterogeneity among observations, it can control for the overdispersion found in a Poisson regression model (Hilbe 2007). In addition, given the clustered nature of the data, with ethnic groups nested within year nested within country, I employ a multilevel mixed-effects negative binomial regression in which the ethnic groups comprise the first level, the years comprise the second level, and the countries comprise the third. In doing so, I assume that observations in the same cluster are correlated because they share common-level random effects.
Since the dependent variable is the count [initial technique selection criterion] of terrorist incidents carried out by related ethnic groups per country-year, I consider a Poisson regression model as the estimation technique. But I find the Pearson goodness-of-fit \(x^2\) test to be statistically significant (\(x^2\) = 1,842,103, p< 0.001) [technique diagnostic tool]. This suggests that a Poisson regression estimation fails to fit the data correctly [technique reselection]. I instead use multilevel mixed-effects negative binomial regression as an alternative estimation method. Because negative binomial regression adds a dispersion parameter to model the unobserved heterogeneity among observations, it can control for the overdispersion found in a Poisson regression model [technical adjustment] (Hilbe 2007). In addition, given the clustered nature of the data, with ethnic groups nested within year nested within country, I employ a multilevel mixed-effects negative binomial regression in which the ethnic groups comprise the first level, the years comprise the second level, and the countries comprise the third. In doing so, I assume that observations in the same cluster are correlated because they share common-level random effects.
Remember: regression is a tool for understanding a phenomenon as a linear function (generally) → (y = mx + b)
Numbers not in parentheses next to a variable: regression coefficient: expected change in DV for a one-unit increase in IV. NB: ositive or negative relationship?
Numbers inside parentheses next to a variable: standard error: estimate of the standard deviation of the coefficient
Asterisks/‘stars’: statistical significance: probability of results as extreme as observed result, under the assumption that the null hypothesis is correct. Smaller p-value means such an observation would be less likely under null hypothesis; hence, significance. Statistical significance suggests more precise estimates—NOT necessarily that one IV is more important than another.
AME: average change in the predicted counts when predictor increases by one unit. E.g., a one-unit increase in nationalism is predicted to prompt 1.5 terrorist attacks, all else equal.
radical milieu - conducive environments for radicalisation, recruitment, and eventual engagement in violent extremism (Vidra and Zeller 2022) (a family resemblance concept, many different types and manifestations)
parajamaats - illegal praying congregations (‘parallel mosque’)
power centres - hotspots of radical activism, centred on influencers, who pushed followers to become foreign fighters
radical influencers - prominent, often charismatic individuals capable of attracting followers
foreign fighters - indiviuals who travel to a conflict zone from another territory (prima facie evidence of radicalism \(\rightarrow\) engagement in political violence; a ‘security failure’ by authority of origin state?)
three reasons:
Radical influencers may have different pathways and histories across cases of foreign fighter recruitment. They may vary in the resources they rely on. In the postwar context of BiH, radical influencers shape the recruitment of foreign fighters by managing preexisting “institutions” of the radical milieu. Influencers may fill a variety of power gaps and thus be able to access and target their followers. The reference to influencers instead of “recruiters” or “radical imams”, points to the finding that radical authority figures may have both ideological and (sometimes) operational functions in recruitment. Although they may lack strategic links to the centralized leadership of a terror organization, they have the power to influence the “bottom,” where prospective foreign fighters are situated.
Anonymous feedback here: https://forms.gle/NfF1pCfYMbkAT3WP6
Alternatively, please send me an email: m.zeller@lmu.de
Jenne, E. K. (2007). Ethnic bargaining: The paradox of minority empowerment. Cornell University Press.
McDonnell, D. (2016.) “Populist Leaders and Coterie Charisma.” Political Studies 64(3): 719-733.
Weber, M. (1922). Wirtschaft und Gesellschaft: Grundriss der verstehenden Soziologie. Tübingen: Mohr