representatives
Remember: topic to me at least by Week 4
Date | Presenters | Method |
---|---|---|
15 May: | Idil M., Zeynep P., Liesl W., Selin K., Chiara W. | logistic regression |
22 May: | Gabriel W., Lina M., Florian S., Julian B. | discourse analysis |
29 May: | NO CLASS MEETING |
Date | Presenters | Method |
---|---|---|
5 June: | Rasmus B., Andre D., Josefine E., Ioanna L., Santiago C. | regression |
12 June: | Omar B., Lela E., Niclas W. | TBD |
19 June: | NO CLASS MEETING | |
26 June: | Colombe I., Konstantin S., Jakob W., Veronika L. | TBD |
26 June: | Maksim K., Felix S., Jon L.D., Damir S., Korbinian M. | case study |
Date | Presenters | Method |
---|---|---|
3 July: | Alexander V., Luis G., Oscar O., Mia C. | TBD |
10 July: | Lina S., Stephen W., Philomena B., Aarón Z. | TBD |
17 July: | Corinna Z., Eva M., and Rostislav N. | TBD |
24 July: | Sebastian K., Thomas R., Emilia Z., Florian P. | TBD |
24 July: | Lorenz F., Daniel B., Fiona W., Medina H. | TBD |
How is the ‘average’ party structured? What do members, representatives, leaders do?
What about far-right parties’ members, representatives, and leaders might be significantly different from other parties’?
Take the survey at https://forms.gle/gqu5hQXJMwgc1X6UA
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-1vQu1_SNVBYH6TAZ0ZUBFpwmrjzRVsvGgJcL8Y_gN7ec7pIlf70c6SOhWdOz44R7SDzzAdL06cHU4jzt/" +
"pub?gid=1194358505&single=true&output=csv",
10000, 1, 7); // adjust the last number to select all relevant columns
respondentCount = surveyResults.length;
Highest
highest_womenCounts = aq.from(surveyResults)
.select("highest_women")
.groupby("highest_women")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
highest_women_maxCountRE = Math.max(...highest_womenCounts.objects().map(d => d.count));
plot_highest_women = Plot.plot({
marks: [
Plot.barY(highest_womenCounts, {
x: "highest_women",
y: "count",
fill: "highest_women",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"CDU.CSU",
"AfD",
"SPD",
"Gruene",
"Linke"
],
range: [
"black",
"#009EE0",
"#EB001F",
"#64A12D",
"#BE3075"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -25,
domain: ["CDU.CSU", "AfD", "SPD", "Gruene", "Linke"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(highest_womenCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, highest_women_maxCountRE]
},
facet: { data: highest_womenCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Lowest
lowest_womenCounts = aq.from(surveyResults)
.select("lowest_women")
.groupby("lowest_women")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
lowest_women_maxCountRE = Math.max(...lowest_womenCounts.objects().map(d => d.count));
plot_lowest_women = Plot.plot({
marks: [
Plot.barY(lowest_womenCounts, {
x: "lowest_women",
y: "count",
fill: "lowest_women",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"CDU.CSU",
"AfD",
"SPD",
"Gruene",
"Linke"
],
range: [
"black",
"#009EE0",
"#EB001F",
"#64A12D",
"#BE3075"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -25,
domain: ["CDU.CSU", "AfD", "SPD", "Gruene", "Linke"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(lowest_womenCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, lowest_women_maxCountRE]
},
facet: { data: lowest_womenCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Youngest
youngestCounts = aq.from(surveyResults)
.select("youngest")
.groupby("youngest")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
youngest_maxCountRE = Math.max(...youngestCounts.objects().map(d => d.count));
plot_youngest = Plot.plot({
marks: [
Plot.barY(youngestCounts, {
x: "youngest",
y: "count",
fill: "youngest",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"CDU.CSU",
"AfD",
"SPD",
"Gruene",
"Linke"
],
range: [
"black",
"#009EE0",
"#EB001F",
"#64A12D",
"#BE3075"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -25,
domain: ["CDU.CSU", "AfD", "SPD", "Gruene", "Linke"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(youngestCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, youngest_maxCountRE]
},
facet: { data: youngestCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Oldest
oldestCounts = aq.from(surveyResults)
.select("oldest")
.groupby("oldest")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
oldest_maxCountRE = Math.max(...oldestCounts.objects().map(d => d.count));
plot_oldest = Plot.plot({
marks: [
Plot.barY(oldestCounts, {
x: "oldest",
y: "count",
fill: "oldest",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"CDU.CSU",
"AfD",
"SPD",
"Gruene",
"Linke"
],
range: [
"black",
"#009EE0",
"#EB001F",
"#64A12D",
"#BE3075"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -25,
domain: ["CDU.CSU", "AfD", "SPD", "Gruene", "Linke"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(oldestCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, oldest_maxCountRE]
},
facet: { data: oldestCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Highest
highest_migCounts = aq.from(surveyResults)
.select("highest_mig")
.groupby("highest_mig")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
highest_mig_maxCountRE = Math.max(...highest_migCounts.objects().map(d => d.count));
plot_highest_mig = Plot.plot({
marks: [
Plot.barY(highest_migCounts, {
x: "highest_mig",
y: "count",
fill: "highest_mig",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"CDU.CSU",
"AfD",
"SPD",
"Gruene",
"Linke"
],
range: [
"black",
"#009EE0",
"#EB001F",
"#64A12D",
"#BE3075"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -25,
domain: ["CDU.CSU", "AfD", "SPD", "Gruene", "Linke"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(highest_migCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, highest_mig_maxCountRE]
},
facet: { data: highest_migCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Lowest
lowest_migCounts = aq.from(surveyResults)
.select("lowest_mig")
.groupby("lowest_mig")
.count()
.derive({ measure: d => "" })
// Calculate the maximum count from your dataset
lowest_mig_maxCountRE = Math.max(...lowest_migCounts.objects().map(d => d.count));
plot_lowest_mig = Plot.plot({
marks: [
Plot.barY(lowest_migCounts, {
x: "lowest_mig",
y: "count",
fill: "lowest_mig",
stroke: "black",
strokeWidth: 1
}),
Plot.ruleY([respondentCount], { stroke: "#ffffff99" })
],
color: {
domain: [
"CDU.CSU",
"AfD",
"SPD",
"Gruene",
"Linke"
],
range: [
"black",
"#009EE0",
"#EB001F",
"#64A12D",
"#BE3075"
]
},
marginBottom: 80,
x: { label: "", tickSize: 2, tickRotate: -25,
domain: ["CDU.CSU", "AfD", "SPD", "Gruene", "Linke"]
},
y: {
label: "",
tickSize: 10,
tickFormat: d => d,
tickValues: Array.from(
new Set(lowest_migCounts.objects().map(d => d.count))
).sort((a, b) => a - b),
domain: [0, lowest_mig_maxCountRE]
},
facet: { data: lowest_migCounts, x: "measure", label: "" },
marginLeft: 140,
style: {
width: 1350,
height: 500,
fontSize: 30,
}
});
Now, let’s see how those hunches measure up to the facts
Le Pen 2025 embezzlement conviction - 5-year ban on holding office
Golden Dawn leader Nikos Michaloliakos arrested (Greece)
do these patterns hold outside Europe? Outside ‘the West’?
When Do Männerparteien Elect Women?
RQ: Under what conditions do we see an increase in RRP parties’ women MPs? Given that RRP parties have traditionally held very conservative views on the role of women in society, what accounts for this increase in women’s representation?
LOW M/F voter ratio | HIGH M/F voter ratio | |
---|---|---|
LOW electoral threat | Status quo: Party does well among men and women, and at the polls. No need to include more women in party. | Strategic Exclusion (H1b): Party with a men-dominated electorate that gains votes doubles down on exclusion of women in the party. |
HIGH electoral threat | Status quo: Party already attracts women voters, so will not target women voters as a strategy to improve vote share | Strategic Inclusion (H1a): Party with a men-dominated electorate that loses votes elects women to appeal to untapped women voters. |
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.
Deleting correctly-coded higher influence observations makes the sample an inaccurate representation of the population, and thus can lead to improper inferences about a population, particularly in a small population like the data on radical right populist parties in Europe.
under what conditions far-right candidates are more electable?
Anonymous feedback here: https://forms.gle/pisUmtmWdE13zMD58
Alternatively, send me an email: m.zeller@lmu.de