generated from apfelpfluecker/quarto-vorlage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path03-Analyse-bta.qmd
265 lines (217 loc) · 16.6 KB
/
03-Analyse-bta.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
---
execute:
echo: false
warning: false
message: false
---
# Analyseebene 2: Bundestagsanträge
```{r}
#| label: setup
#| include: false
#| echo: false
#| waring: false
#| error: false
source("_common.R")
library(ggpubr)
```
## Methodik {#sec-methodik-bta}
Mithilfe der API des Bundestags wurden sämtliche Bundestagsanträge gesammelt, die im Untersuchungszeitraum gestellt wurden.[^03-analyse-bta-1] Aus diesem Datensatz wurden alle Anträge entfernt, die keine Anträge aus den Reihen des Bundestags waren, sondern aus dem Bundesrat heraus gestellt wurden. Dies gilt auch für Regierungs- und Ministeriumsanträge, die allerdings weder einen relevanten Anteil ausmachen noch Anträge zum Thema geschlechtergerechte Sprache enthielten.
[^03-analyse-bta-1]: Der Code für die API-Anfrage ist zusammen mit dem gesamten Code dieser Arbeit im Online-Anhang (@sec-code) zu finden.
Untersucht wurden Anträge im Zeitraum vom 24.10.2017, dem Tag der ersten konstituierenden Sitzung des Bundestags nach der Bundestagswahl 2017, bis zum 19.06.2024. Der Startzeitpunkt wurde in Abhängigkeit zu den Bundestagswahlen festgelegt, da sich, wie gezeigt, das Antragsverhalten je nach Regierungs- und Oppositionsbeteiligung unterscheidet. Um dies auf eine aktuelle Empirie zu stellen, werden Zeiträume festgelegt, die sich hinsichtlich der Wahlperioden nicht überlappen. So wird die Wahlperiode also nochmals in vier Zeiträume unterteilt.[^03-analyse-bta-2] Es ergibt also Sinn, eine Bundestagswahl beziehungsweise die erste konstituierende Sitzung danach als Ausgangspunkt zu nehmen. Dass die Bundestagswahl 2017 dafür ausgewählt wurde, hat einerseits mit forschungsökonomischen Gründen zu tun und andererseits damit, dass geschlechtergerechte Sprache vor allem in den letzten Jahren eine starke Politisierung bis hin zu einer Polarisierung erfahren hat (vgl. @sec-ges-theorie und @sec-polarisierung-ges). Auch die AfD, die einen Großteil der betreffenden Anträge auf sich vereint, saß vor 2017 noch nicht im Bundestag. Somit kann davon ausgegangen werden, dass vor 2017 weitaus weniger Analyseeinheiten aufgetreten wären und dadurch der Aufwand gegenüber dem Nutzen deutlich überwiegt.
[^03-analyse-bta-2]: Die Zeiträume sind: 24.10.2017–25.10.2018, 26.10.2018–25.10.2019, 26.10.2019–25.10.2020, 26.10.2020–25.10.2021, 26.10.2021–25.10.2022, 26.10.2022–25.10.2023, 26.10.2023–19.06.2024. Der 26.10. ist der Tag der konstituierenden Sitzung des 20. Deutschen Bundestag, weshalb er als Stichtag für die Perioden gilt. Ausnahme ist der Starttag der ersten Periode (siehe oben) sowie der letzte Tag, der in forschungspragmatischen Gründen (der Abgabe dieser Arbeit) begründet liegt.
Die Analyse fokussiert sich auf den Deutschen Bundestag beziehungsweise dessen Fraktionen und Gruppen, obwohl zwar auch einfache Abgeordnete Anträge stellen können (vgl. @sec-bta), dies aber im Untersuchungszeitraum nicht der Fall war. Damit wurden grundsätzlich Anträge der SPD-Fraktion, der CDU/CSU-Fraktion (auch: Unions-Fraktion), der Fraktion Bündnis 90/Die Grünen, der FDP-Fraktion, der AfD-Fraktion, der Gruppe Die Linke sowie der Gruppe BSW berücksichtigt.[^03-analyse-bta-3] Darüber hinaus gab es zwei inhaltliche Kriterien für die Einbeziehung. Das notwendige Kriterium `sprache+` und `sprachlich+`[^03-analyse-bta-4] sollte dabei sicherstellen, dass die Zahl der fälschlich ausgewählten Anträge nicht zu hoch ist,[^03-analyse-bta-5] um die manuelle Auswahl zu verkürzen. Das zweite, ebenfalls notwendige Kriterium umfasste die Wörter `gender+`, `geschlecht(.*)gerecht+` sowie `generisch+`[^03-analyse-bta-6].
[^03-analyse-bta-3]: Da das BSW noch nicht lange eine Gruppe im Deutschen Bundestag stellt, haben die Daten diesbezüglich keine größere Aussagekraft. Trotzdem wurde das BSW der Vollständigkeit halber mitbetrachtet.
[^03-analyse-bta-4]: Das Zeichen `+` steht für einen beliebig langen Platzhalter, der null oder mehr Zeichen umfasst. Groß- und Kleinschreibung spielen keine Rolle.
[^03-analyse-bta-5]: Durch das zweite Kriterium würden grundsätzlich auch Anträge mit den Wortfolgen "hervorra*gender"* oder "aufgrund stei*gender* Infektionszahlen" ausgewählt. Es ist nicht davon auszugehen, dass in Anträgen, in denen geschlechtergerechte Sprache thematisiert wird, nicht das Wort Sprache oder sprachlich vorkommt.
[^03-analyse-bta-6]: Das Zeichen `(.*)` bewirkt einen beliebig langen Platzhalter zwischen den beiden Wörtern "geschlecht" und "gerecht+", das bedeutet, es können auch ganze Wörter zwischen diesen beiden stehen.
Die Auswahl erfolgte automatisiert über das R-Paket *stringr* [@wickham2023]. Anschließend wurden die Posts manuell auf ihre korrekte Zuordnung überprüft.
Um die Hypothesen zu überprüfen wird vornehmlich auf deskriptive Statistiken zurückgegriffen, die aus den Daten hervorgehen.
## Datenanalyse und Ergebnisse
Die Ergebnisse der Datenanalyse sind in @fig-btaplots zu sehen. Die so verschiedene Gesamtzahl an Anträgen (@fig-btaplots-1, `Chi² (6) = 1520.3, p < 0.01`) kann anhand @fig-btaplots-2 (`Chi² (6, 4316) = 914.31, p < 0.01`) erklärt werden: Die Oppositionsfraktionen der Wahlperiode 19 (Grüne, FDP, AfD, Linke) nutzten das Instrument des Bundestagsantrags relativ vier bis fünfmal so oft wie die Regierungsfraktionen aus SPD und Union.[^03-analyse-bta-7] Dasselbe Bild zeigt sich in Wahlperiode 20 (Opposition: Union, AfD, Linke, BSW). Die Abweichung bei den Linken ist vermutlich mit dem deutlich kleineren Fraktions- beziehungsweise nach der Gründung des BSW mit dem Gruppen-Dasein zu erklären. Letzteres gilt genauso für das BSW. Auch ein Blick auf @fig-btaplots-3 (`Chi² (36, 4316) = 1157.07, p < 0.01`) bestärkt diese Vermutung. Hypothese 2.2 kann also als bekräftigt gelten.
[^03-analyse-bta-7]: Um die beiden Wahlperioden (und auch die Zeiträume) miteinander vergleichen zu können, wurde der Durchschnitt pro Tag gebildet. Zwar spiegelt das nicht die realen Arbeitszeiten des Parlamentes wider, schafft aber zumindest etwas mehr Vergleichbarkeit.
```{r bta-plots}
library(tidyverse)
library(dplyr)
library(ggpubr)
library(sjmisc)
bta <- readRDS("data/btantraege.Rds")
# Daten in langes Format
bta_long <- bta %>%
pivot_longer(cols = c(spd, union, gruene, fdp, afd, linke, bsw),
names_to = "party",
values_to = "Beteiligung") %>%
filter(Beteiligung == 1) %>%
mutate(party = rec(party, rec = "spd = SPD; union = Union; gruene = Grüne; fdp = FDP; afd = AfD; linke = Linke; bsw = BSW"))
# Parteireihenfolge
desired_order <- c("SPD", "Union", "Grüne", "FDP", "AfD", "Linke", "BSW")
bta_long$party <- factor(bta_long$party, levels = desired_order)
#############################################
# Häufigkeit der Anträge zählen
bta_counts <- bta_long %>%
group_by(party) %>%
summarise(Häufigkeit = n(), .groups = "drop")
# Grafik erstellen
f1 <- ggplot(bta_counts, aes(x = party, y = Häufigkeit, fill = party)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = parteifarben_bta) + # Farbe einstellen
labs(x = "Partei",
y = "Anzahl") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
guides(fill = "none", colour = "none") # Legende ausblenden
# Anträge Gesamt nach Wahlperiode
days19 <- days_in_period("2017-10-24", "2021-10-25") # 19
days20 <- days_in_period("2021-10-26", "2024-06-19") # 20
bta_counts <- as.data.frame(table(bta_long$party, bta_long$wahlperiode))
days_in_time <- data.frame(election_period = c("19", "20"), days = c(days19, days20))
colnames(bta_counts) <- c("party", "election_period", "count")
bta_counts <- bta_counts %>%
left_join(days_in_time, by = "election_period") %>% # anheften an Ds
mutate(relative_count = count / days) # relativen Wert berechnen
bta_counts$party <- factor(bta_counts$party, levels = desired_order)
f2 <- ggplot(bta_counts, aes(x = party, y = relative_count, fill = election_period)) +
geom_bar(stat = "identity", position = "dodge") +
#scale_fill_viridis(discrete = TRUE) + # Viridis-Farbschema verwenden
scale_fill_manual(values = duofarben,
labels = c("19" = "19.", "20" = "20.")) + # Farbe einstellen
labs(#title = "Relative Anzahl der Posts nach Partei und Wahlperiode pro Tag",
x = "Partei",
y = "Anträge/Tag (Durchschnitt)",
fill = "Wahlperiode") +
theme_minimal() +
#scale_x_discrete(labels = function(x) str_wrap(x, width = 13))
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Anträge Gesamt nach Zeit
days1 <- days_in_period("2017-10-24", "2018-10-25")
days2 <- days_in_period("2018-10-26", "2019-10-25")
days3 <- days_in_period("2019-10-26", "2020-10-25")
days4 <- days_in_period("2020-10-26", "2021-10-25")
days5 <- days_in_period("2021-10-26", "2022-10-25")
days6 <- days_in_period("2022-10-26", "2023-10-25")
days7 <- days_in_period("2023-10-26", "2024-06-19")
bta_counts <- as.data.frame(table(bta_long$party, bta_long$Zeitraum))
days_in_time<- data.frame(time = c("1", "2", "3", "4", "5", "6", "7"), days = c(days1, days2, days3, days4, days5, days6, days7))
colnames(bta_counts) <- c("party", "time", "count")
bta_counts <- bta_counts %>%
left_join(days_in_time, by = "time") %>% # anheften an Ds
mutate(relative_count = count / days) # relativen Wert berechnen
bta_counts$party <- factor(bta_counts$party, levels = desired_order)
f3 <- ggplot(bta_counts, aes(x = party, y = relative_count, fill = time)) +
geom_bar(stat = "identity", position = "dodge") +
#scale_fill_viridis(discrete = TRUE) + # Viridis-Farbschema verwenden
scale_fill_manual(values = farben,
labels = c("1" = "2017/18", "2" = "2018/19", "3" = "2019/20", "4" = "2020/21", "5" = "2021/22", "6" = "2022/23", "7" = "2023/24")) + # Farbe einstellen
labs(#title = "Relative Anzahl der Posts nach Partei und Zeitraum pro Tag",
x = "Partei",
y = "Anträge/Tag (Durchschnitt)",
fill = "Zeitraum") +
theme_minimal() +
#scale_x_discrete(labels = function(x) str_wrap(x, width = 13))
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#############################################
# Häufigkeit der Gender-Anträge zählen
bta_long_gender <- bta_long %>%
filter(filter == TRUE)
all_parties <- data.frame(party = unique(bta_long$party))
all_times <- data.frame(time = c("1", "2", "3", "4", "5", "6", "7"))
bta_gender_counts <- bta_long_gender %>%
group_by(party) %>%
summarise(Häufigkeit = n(), .groups = "drop")
#alle Parteien berücksichtigen
bta_gender_counts <- all_parties %>%
left_join(bta_gender_counts, by = "party") %>%
tidyr::replace_na(list(count = 0)) # Setze fehlende Werte auf 0
# Grafik erstellen
f4 <- ggplot(bta_gender_counts, aes(x = party, y = Häufigkeit, fill = party)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = parteifarben_bta) + # Farbe einstellen
labs(x = "Partei",
y = "Anzahl") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
guides(fill = "none", colour = "none") # Legende ausblenden
# Anträge Gesamt nach Wahlperiode
days19 <- days_in_period("2017-10-24", "2021-10-25") # 19
days20 <- days_in_period("2021-10-26", "2024-06-19") # 20
bta_gender_counts <- as.data.frame(table(bta_long_gender$party, bta_long_gender$wahlperiode))
days_in_time <- data.frame(election_period = c("19", "20"), days = c(days19, days20))
colnames(bta_gender_counts) <- c("party", "election_period", "count")
bta_gender_counts <- bta_gender_counts %>%
left_join(days_in_time, by = "election_period") %>% # anheften an Ds
mutate(relative_count = count / days) # relativen Wert berechnen
bta_gender_counts$party <- factor(bta_gender_counts$party, levels = desired_order)
f5 <- ggplot(bta_gender_counts, aes(x = party, y = relative_count, fill = election_period)) +
geom_bar(stat = "identity", position = "dodge") +
#scale_fill_viridis(discrete = TRUE) + # Viridis-Farbschema verwenden
scale_fill_manual(values = duofarben,
labels = c("19" = "19.", "20" = "20.")) + # Farbe einstellen
labs(#title = "Relative Anzahl der Posts nach Partei und Wahlperiode pro Tag",
x = "Partei",
y = "Anträge/Tag (Durchschnitt)",
fill = "Wahlperiode") +
theme_minimal() +
#scale_x_discrete(labels = function(x) str_wrap(x, width = 13))
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Anträge Gesamt nach Zeit
days1 <- days_in_period("2017-10-24", "2018-10-25")
days2 <- days_in_period("2018-10-26", "2019-10-25")
days3 <- days_in_period("2019-10-26", "2020-10-25")
days4 <- days_in_period("2020-10-26", "2021-10-25")
days5 <- days_in_period("2021-10-26", "2022-10-25")
days6 <- days_in_period("2022-10-26", "2023-10-25")
days7 <- days_in_period("2023-10-26", "2024-06-19")
bta_gender_counts <- as.data.frame(table(bta_long_gender$party, bta_long_gender$Zeitraum))
days_in_time<- data.frame(time = c("1", "2", "3", "4", "5", "6", "7"), days = c(days1, days2, days3, days4, days5, days6, days7))
colnames(bta_gender_counts) <- c("party", "time", "count")
bta_gender_counts <- bta_gender_counts %>%
left_join(days_in_time, by = "time") %>% # anheften an Ds
mutate(relative_count = count / days) %>% # relativen Wert berechnen
right_join(all_times, by = "time") %>% # sorgt dafür, dass alle Zeiträume auftauchen
tidyr::replace_na(list(count = 0, relative_count = 0)) # dafür fehlende Werte mit 0 ersetzen
bta_gender_counts$party <- factor(bta_gender_counts$party, levels = desired_order)
f6 <- ggplot(bta_gender_counts, aes(x = party, y = relative_count, fill = time)) +
geom_bar(stat = "identity", position = "dodge") +
#scale_fill_viridis(discrete = TRUE) + # Viridis-Farbschema verwenden
scale_fill_manual(values = farben,
labels = c("1" = "2017/18", "2" = "2018/19", "3" = "2019/20", "4" = "2020/21", "5" = "2021/22", "6" = "2022/23", "7" = "2023/24")) + # Farbe einstellen
labs(#title = "Relative Anzahl der Posts nach Partei und Zeitraum pro Tag",
x = "Partei",
y = "Anträge/Tag (Durchschnitt)",
fill = "Zeitraum") +
theme_minimal() +
#scale_x_discrete(labels = function(x) str_wrap(x, width = 13))
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#(f1+f2+f3)/(f4+f5+f6)
```
\blandscape
```{r bta-plot-ausgabe}
#| label: fig-btaplots
#| layout-ncol: 3
#| fig-cap: "Bundestagsanträge der Fraktionen/Gruppen zwischen 2017 und 2024 – Gesamt, nach Wahlperiode, nach Jahr. Eigene Abbildung (geS = geschlechtergerechte Sprache)"
#| fig-subcap:
#| - "Gesamtzahl der Anträge"
#| - "Anträge pro Tag nach Wahlperiode"
#| - "Anträge pro Tag nach Jahr"
#| - "Anträge, die geS thematisieren"
#| - "Anträge pro Tag, die geS thematisieren nach Wahlperiode"
#| - "Anträge pro Tag, die geS thematisieren nach Jahr"
#| - "Anträge mit Hauptthema geS"
#| - "Anträge pro Tag mit Hauptthema geS nach Wahlperiode"
#| - "Anträge pro Tag mit Hauptthema geS nach Jahr"
#| fig-post: htpb
#| out-height: 100%
#| out-width: 100%
f1
f2
f3
f4
f5
f6
```
\elandscape
Gleiches gilt für Hypothese 2.1, die klar bestärkt werden kann. Mit 16 von 17 kommen fast alle Bundestagsanträge, die im Untersuchungszeitraum gestellt wurden, von der AfD (@fig-btaplots-4, `Chi² (1) = 13.24, p < 0.01`). Nur ein Antrag kommt von den Linken. Bei der Betrachtung von @fig-btaplots-5 (`Chi² (1, 17) = 1.95, p = 0.35`[^03-analyse-bta-8]) fällt auf, dass die Thematisierung in der 20. Wahlperiode, wenn auch nicht signifikant, so zumindest deutlich zugenommen hat. Überhaupt wurde geschlechtergerechte Sprache im Untersuchungszeitraum erst 2019/20 angesprochen (@fig-btaplots-6, `Chi² (4, 17) = 17, p = 0.12`[^03-analyse-bta-9]). Auch diese Beobachtung ist auf keinem Signifkanzniveau signifikant, obgleich die reale Überzufälligkeit aufgrund der geringen Fallzahl schwer zu ermitteln ist.[^03-analyse-bta-10]
[^03-analyse-bta-8]: Fisher-Test zur Ermittlung der exakten Signifikanz.
[^03-analyse-bta-9]: Fisher-Test zur Ermittlung der exakten Signifikanz.
[^03-analyse-bta-10]: Zumal man argumentieren könnte, dass es sich im Sinne der Fragestellung um eine Vollerhebung handelt. Bei selbigen ist die Verwendung von Signifikanztest umstritten [vgl. @behnke2005].
## Auswertung
Zusammenfassend ist festzustellen, dass beide Hypothesen dieser Analyseebene nicht falsifiziert werden konnten. Das Antragsverhalten scheint sich somit tatsächlich mit einer Regierungsbeteiligung zu verändern – Oppositionsfraktionen stellten vier bis fünfmal so viele Anträge wie Regierungsfraktionen. Ebenso konnte festgestellt werden, dass fast ausschließlich die AfD Bundestagsanträge stellt, in denen geschlechtergerechte Sprache thematisiert wird. Durch die bloße Verwendung des Triggerpunktes geschlechtergerechte Sprache scheint sich die Vermutung des Polarisierungsunternehmers AfD zu erhärten. Ob sich dies auch in Facebook-Posts sowie deren Populismusgrad zeigt, wird im Folgenden zu klären sein.