In diesem Bericht werden zwei offene Datensätze des Statistischen Bundesamtes beziehungsweise des Statistikportals explorativ untersucht.
Der erste Datensatz enthält die Ausgaben öffentlicher Schulen je Schüler:in in den deutschen Bundesländern. Der zweite Datensatz umfasst den Anteil früher Schulabgänger:innen in den Bundesländern.
Für die Analyse werden die Daten der Jahre 2010 bis 2024 betrachtet. Da für das Jahr 2020 im Datensatz der frühen Schulabgänger:innen keine Werte vorliegen, kann dieses Jahr nicht in die gemeinsame Analyse aufgenommen werden. Beide Datensätze werden über die Merkmale Bundesland und Jahr zusammengeführt, sodass die Entwicklung im Untersuchungszeitraum sowie der Zusammenhang zwischen den beiden Variablen untersucht werden können.
Datensätze:
Forschungsfrage:
Gibt es zwischen 2010 und 2024 einen Zusammenhang zwischen den Ausgaben
öffentlicher Schulen je Schüler:in und dem Anteil früher
Schulabgänger:innen in den deutschen Bundesländern?
Hypothese:
Im Zeitraum von 2010 bis 2024 weisen Bundesländer mit höheren Ausgaben
je Schüler:in tendenziell einen niedrigeren Anteil früher
Schulabgänger:innen auf.
library(readxl)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
ausgaben_roh <- read_excel(
"/Users/perle/Desktop/ELMEB/SEMESTER 3/02 Data Science/Datenprojekt2/Ausgaben.xlsx",
skip = 3,
n_max = 17,
col_names = TRUE,
col_types = "text",
na = c("-", ".", "")
)
abgaenger_roh <- read_excel(
"/Users/perle/Desktop/ELMEB/SEMESTER 3/02 Data Science/Datenprojekt2/Schulabgängerinnen.xlsx",
skip = 3,
n_max = 17,
col_names = FALSE,
col_types = "text",
na = c("-", ".", "")
)
## New names:
## • `` -> `...1`
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `` -> `...16`
## • `` -> `...17`
## • `` -> `...18`
## • `` -> `...19`
## • `` -> `...20`
## • `` -> `...21`
head(ausgaben_roh)
## # A tibble: 6 × 16
## Ausgaben, Bundesländ…¹ `2010` `2011` `2012` `2013` `2014` `2015` `2016` `2017`
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 Ausgaben, Baden-Württ… 6100 6200 6300 6500 6700 6800 7100 7300
## 2 Ausgaben, Bayern 6400 6600 6900 7300 7700 7800 8100 8400
## 3 Ausgaben, Berlin 7000 7400 7500 7800 8500 8900 9200 9700
## 4 Ausgaben, Brandenburg 6200 6600 6600 6600 6700 6800 7000 7300
## 5 Ausgaben, Bremen 6100 6300 6300 6400 6500 6800 6700 6900
## 6 Ausgaben, Hamburg 7100 7400 7600 8000 8500 8600 9000 9600
## # ℹ abbreviated name: ¹`Ausgaben, Bundesländer`
## # ℹ 7 more variables: `2018` <chr>, `2019` <chr>, `2020` <chr>, `2021` <chr>,
## # `2022` <chr>, `2023` <chr>, `2024` <chr>
head(abgaenger_roh)
## # A tibble: 6 × 21
## ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11 ...12 ...13
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 <NA> 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
## 2 Baden… 12.5 12.4 12.1 10.1 9.5 9.80… 9.9 8.30… 7.6 7.9 8.30… 9.4
## 3 Bayern 11.2 12.6 11.2 9.6 8.80… 9.4 9.1 7.4 7.3 6.4 6.2 7.6
## 4 Berlin 18.7 18.2 13 15.7 14.2 14.6 13.1 13 11.9 13.5 13.7 11.7
## 5 Brand… 10.1… 11.1 9 9.30… 9 9.6 10.1… 10 10.6 9 11.6 11
## 6 Bremen 19.1… 17.5 15 14.4 14.5 14.3 17.2 13.3 14.9 14 11.5 11.1
## # ℹ 8 more variables: ...14 <chr>, ...15 <chr>, ...16 <chr>, ...17 <chr>,
## # ...18 <chr>, ...19 <chr>, ...20 <chr>, ...21 <chr>
Zusammenfassung:
Die Datensätze wurden in R eingelesen und stehen damit für die weitere
Analyse zur Verfügung. Die Ausgabe der ersten Zeilen gibt einen ersten
Einblick in den Aufbau der Daten. Erkennbar ist, dass beide Datensätze
Informationen zu Bundesländern und mehreren Jahren enthalten. Damit ist
die Grundlage für die anschließende Aufbereitung und Zusammenführung der
Daten geschaffen.
dim(ausgaben_roh)
## [1] 17 16
dim(abgaenger_roh)
## [1] 17 21
str(ausgaben_roh)
## tibble [17 × 16] (S3: tbl_df/tbl/data.frame)
## $ Ausgaben, Bundesländer: chr [1:17] "Ausgaben, Baden-Württemberg" "Ausgaben, Bayern" "Ausgaben, Berlin" "Ausgaben, Brandenburg" ...
## $ 2010 : chr [1:17] "6100" "6400" "7000" "6200" ...
## $ 2011 : chr [1:17] "6200" "6600" "7400" "6600" ...
## $ 2012 : chr [1:17] "6300" "6900" "7500" "6600" ...
## $ 2013 : chr [1:17] "6500" "7300" "7800" "6600" ...
## $ 2014 : chr [1:17] "6700" "7700" "8500" "6700" ...
## $ 2015 : chr [1:17] "6800" "7800" "8900" "6800" ...
## $ 2016 : chr [1:17] "7100" "8100" "9200" "7000" ...
## $ 2017 : chr [1:17] "7300" "8400" "9700" "7300" ...
## $ 2018 : chr [1:17] "7600" "8800" "10500" "7800" ...
## $ 2019 : chr [1:17] "8200" "9500" "11300" "8400" ...
## $ 2020 : chr [1:17] "8500" "10000" "12300" "8800" ...
## $ 2021 : chr [1:17] "8800" "10200" "12400" "9300" ...
## $ 2022 : chr [1:17] "9300" "10600" "13100" "9600" ...
## $ 2023 : chr [1:17] "9500" "11200" "13500" "9800" ...
## $ 2024 : chr [1:17] "10200" "11900" "13700" "10900" ...
str(abgaenger_roh)
## tibble [17 × 21] (S3: tbl_df/tbl/data.frame)
## $ ...1 : chr [1:17] NA "Baden-Württemberg" "Bayern" "Berlin" ...
## $ ...2 : chr [1:17] "2005" "12.5" "11.2" "18.7" ...
## $ ...3 : chr [1:17] "2006" "12.4" "12.6" "18.2" ...
## $ ...4 : chr [1:17] "2007" "12.1" "11.2" "13" ...
## $ ...5 : chr [1:17] "2008" "10.1" "9.6" "15.7" ...
## $ ...6 : chr [1:17] "2009" "9.5" "8.8000000000000007" "14.2" ...
## $ ...7 : chr [1:17] "2010" "9.8000000000000007" "9.4" "14.6" ...
## $ ...8 : chr [1:17] "2011" "9.9" "9.1" "13.1" ...
## $ ...9 : chr [1:17] "2012" "8.3000000000000007" "7.4" "13" ...
## $ ...10: chr [1:17] "2013" "7.6" "7.3" "11.9" ...
## $ ...11: chr [1:17] "2014" "7.9" "6.4" "13.5" ...
## $ ...12: chr [1:17] "2015" "8.3000000000000007" "6.2" "13.7" ...
## $ ...13: chr [1:17] "2016" "9.4" "7.6" "11.7" ...
## $ ...14: chr [1:17] "2017" "8.6999999999999993" "7.2" "13.2" ...
## $ ...15: chr [1:17] "2018" "9.6999999999999993" "7.2" "13.6" ...
## $ ...16: chr [1:17] "2019" "9.1999999999999993" "7.6" "11.6" ...
## $ ...17: chr [1:17] "2020 1)" NA NA NA ...
## $ ...18: chr [1:17] "2021" "10.4" "9.3000000000000007" "9.1999999999999993" ...
## $ ...19: chr [1:17] "2022" "10.8" "9.1" "12.3" ...
## $ ...20: chr [1:17] "2023" "11.9" "10.1" "14.5" ...
## $ ...21: chr [1:17] "2024 2)" "11.9" "10" "15.7" ...
Zusammenfassung:
Die erste Exploration zeigt den Umfang und die Struktur der beiden
Datensätze. Dabei wird sichtbar, dass die Werte zunächst überwiegend als
Zeichenketten eingelesen wurden. Für die spätere Analyse ist deshalb
eine Umwandlung in numerische Werte notwendig. Dieser Schritt macht
außerdem deutlich, dass die Datensätze vor der statistischen Auswertung
bereinigt und vereinheitlicht werden müssen.
colSums(is.na(ausgaben_roh))
## Ausgaben, Bundesländer 2010 2011
## 0 0 0
## 2012 2013 2014
## 0 0 0
## 2015 2016 2017
## 0 0 0
## 2018 2019 2020
## 0 0 0
## 2021 2022 2023
## 0 0 0
## 2024
## 0
colSums(is.na(abgaenger_roh))
## ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11 ...12 ...13
## 1 0 0 0 0 0 0 0 0 0 0 0 0
## ...14 ...15 ...16 ...17 ...18 ...19 ...20 ...21
## 0 0 0 16 0 0 0 0
Zusammenfassung:
Die Überprüfung der fehlenden Werte dient der Einschätzung der
Datenqualität. Im Datensatz zu den Ausgaben liegen keine fehlenden Werte
in den Jahresspalten vor. Im Datensatz der frühen Schulabgänger:innen
fehlen hingegen die Werte für das Jahr 2020. Da dieses Jahr dadurch
nicht sinnvoll mit den Ausgabendaten zusammengeführt werden kann, wird
es in der weiteren Analyse ausgeschlossen.
names(ausgaben_roh)[1] <- "bundesland"
names(abgaenger_roh)[1] <- "bundesland"
ausgaben_roh$bundesland <- gsub(
"Ausgaben, ",
"",
ausgaben_roh$bundesland
)
names(abgaenger_roh) <- c(
"bundesland",
"2005", "2006", "2007", "2008", "2009",
"2010", "2011", "2012", "2013", "2014",
"2015", "2016", "2017", "2018", "2019",
"2020", "2021", "2022", "2023", "2024"
)
ausgaben_long <- data.frame(
bundesland = rep(ausgaben_roh$bundesland, times = ncol(ausgaben_roh) - 1),
jahr = rep(names(ausgaben_roh)[-1], each = nrow(ausgaben_roh)),
ausgaben = as.vector(as.matrix(ausgaben_roh[, -1]))
)
abgaenger_long <- data.frame(
bundesland = rep(abgaenger_roh$bundesland, times = ncol(abgaenger_roh) - 1),
jahr = rep(names(abgaenger_roh)[-1], each = nrow(abgaenger_roh)),
abbruchquote = as.vector(as.matrix(abgaenger_roh[, -1]))
)
ausgaben_long$jahr <- as.numeric(ausgaben_long$jahr)
abgaenger_long$jahr <- as.numeric(abgaenger_long$jahr)
ausgaben_long$ausgaben <- gsub(" ", "", ausgaben_long$ausgaben)
ausgaben_long$ausgaben <- gsub(",", ".", ausgaben_long$ausgaben)
ausgaben_long$ausgaben <- as.numeric(ausgaben_long$ausgaben)
abgaenger_long$abbruchquote <- gsub("\\(", "", abgaenger_long$abbruchquote)
abgaenger_long$abbruchquote <- gsub("\\)", "", abgaenger_long$abbruchquote)
abgaenger_long$abbruchquote <- gsub(",", ".", abgaenger_long$abbruchquote)
abgaenger_long$abbruchquote <- as.numeric(abgaenger_long$abbruchquote)
## Warning: NAs introduced by coercion
abgaenger_long$abbruchquote <- abs(abgaenger_long$abbruchquote)
bildung <- merge(
ausgaben_long,
abgaenger_long,
by = c("bundesland", "jahr")
)
bildung <- bildung[
bildung$bundesland != "Deutschland" &
!is.na(bildung$bundesland) &
!is.na(bildung$jahr) &
!is.na(bildung$ausgaben) &
!is.na(bildung$abbruchquote),
]
bildung <- bildung[
bildung$jahr >= 2010 &
bildung$jahr <= 2024 &
bildung$jahr != 2020,
]
head(bildung)
## bundesland jahr ausgaben abbruchquote
## 1 Baden-Württemberg 2010 6100 9.8
## 2 Baden-Württemberg 2011 6200 9.9
## 3 Baden-Württemberg 2012 6300 8.3
## 4 Baden-Württemberg 2013 6500 7.6
## 5 Baden-Württemberg 2014 6700 7.9
## 6 Baden-Württemberg 2015 6800 8.3
Zusammenfassung:
Zur Vorbereitung der Analyse wurden die Datensätze vereinheitlicht,
bereinigt und in eine gemeinsame Struktur gebracht. Aus den
ursprünglichen Jahresspalten wurde ein Datensatz erstellt, in dem jede
Zeile ein Bundesland, ein Jahr, die Ausgaben je Schüler:in und den
Anteil früher Schulabgänger:innen enthält. Das Jahr 2020 wurde wegen
fehlender Werte ausgeschlossen. Damit liegt ein gemeinsamer
Analysedatensatz vor, auf dessen Grundlage die Forschungsfrage weiter
untersucht werden kann.
summary(bildung$ausgaben)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5200 6700 7500 7922 9000 13700
summary(bildung$abbruchquote)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.10 9.80 11.60 11.46 13.05 21.60
ausgaben_mittel <- aggregate(
ausgaben ~ bundesland,
data = bildung,
mean
)
ausgaben_mittel <- ausgaben_mittel[
order(ausgaben_mittel$ausgaben, decreasing = TRUE),
]
ausgaben_mittel
## bundesland ausgaben
## 3 Berlin 10035.714
## 6 Hamburg 9657.143
## 16 Thüringen 8814.286
## 2 Bayern 8671.429
## 14 Sachsen-Anhalt 7907.143
## 4 Brandenburg 7828.571
## 13 Sachsen 7757.143
## 7 Hessen 7742.857
## 5 Bremen 7657.143
## 1 Baden-Württemberg 7614.286
## 9 Niedersachsen 7392.857
## 8 Mecklenburg-Vorpommern 7364.286
## 11 Rheinland-Pfalz 7214.286
## 12 Saarland 7146.154
## 15 Schleswig-Holstein 7057.143
## 10 Nordrhein-Westfalen 6835.714
abbruch_mittel <- aggregate(
abbruchquote ~ bundesland,
data = bildung,
mean
)
abbruch_mittel <- abbruch_mittel[
order(abbruch_mittel$abbruchquote, decreasing = TRUE),
]
abbruch_mittel
## bundesland abbruchquote
## 5 Bremen 15.271429
## 3 Berlin 12.971429
## 11 Rheinland-Pfalz 12.800000
## 12 Saarland 12.692308
## 6 Hamburg 12.550000
## 9 Niedersachsen 12.292857
## 10 Nordrhein-Westfalen 12.207143
## 15 Schleswig-Holstein 12.178571
## 14 Sachsen-Anhalt 11.964286
## 8 Mecklenburg-Vorpommern 11.392857
## 7 Hessen 11.221429
## 4 Brandenburg 11.064286
## 1 Baden-Württemberg 9.557143
## 16 Thüringen 8.985714
## 2 Bayern 8.135714
## 13 Sachsen 8.100000
Zusammenfassung:
Die deskriptive Statistik zeigt, dass sich sowohl die Ausgaben je
Schüler:in als auch der Anteil früher Schulabgänger:innen zwischen den
Bundesländern unterscheiden. Die Unterschiede zwischen den Bundesländern
zeigen, dass beide Variablen Variation aufweisen und gemeinsam
explorativ untersucht werden können. Die deskriptiven Ergebnisse zeigen
jedoch noch keinen statistischen Zusammenhang, sondern beschreiben
zunächst die Verteilung der beiden Variablen.
bundesland_mittel <- aggregate(
cbind(ausgaben, abbruchquote) ~ bundesland,
data = bildung,
mean
)
bundesland_mittel <- bundesland_mittel[
order(bundesland_mittel$ausgaben, decreasing = TRUE),
]
bundesland_mittel
## bundesland ausgaben abbruchquote
## 3 Berlin 10035.714 12.971429
## 6 Hamburg 9657.143 12.550000
## 16 Thüringen 8814.286 8.985714
## 2 Bayern 8671.429 8.135714
## 14 Sachsen-Anhalt 7907.143 11.964286
## 4 Brandenburg 7828.571 11.064286
## 13 Sachsen 7757.143 8.100000
## 7 Hessen 7742.857 11.221429
## 5 Bremen 7657.143 15.271429
## 1 Baden-Württemberg 7614.286 9.557143
## 9 Niedersachsen 7392.857 12.292857
## 8 Mecklenburg-Vorpommern 7364.286 11.392857
## 11 Rheinland-Pfalz 7214.286 12.800000
## 12 Saarland 7146.154 12.692308
## 15 Schleswig-Holstein 7057.143 12.178571
## 10 Nordrhein-Westfalen 6835.714 12.207143
korrelation_bundeslaender <- cor(
bundesland_mittel$ausgaben,
bundesland_mittel$abbruchquote,
use = "complete.obs"
)
cat(
"Korrelationskoeffizient:",
round(korrelation_bundeslaender, 3)
)
## Korrelationskoeffizient: -0.119
modell_bundeslaender <- lm(
abbruchquote ~ ausgaben,
data = bundesland_mittel
)
summary(modell_bundeslaender)
##
## Call:
## lm(formula = abbruchquote ~ ausgaben, data = bundesland_mittel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.4016 -0.8097 0.4883 1.0701 3.7450
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.4279499 4.4276068 3.033 0.00895 **
## ausgaben -0.0002483 0.0005556 -0.447 0.66177
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.979 on 14 degrees of freedom
## Multiple R-squared: 0.01407, Adjusted R-squared: -0.05636
## F-statistic: 0.1997 on 1 and 14 DF, p-value: 0.6618
par(
bg = "#1d3157",
col.axis = "white",
col.lab = "white",
col.main = "white"
)
plot(
bundesland_mittel$ausgaben,
bundesland_mittel$abbruchquote,
pch = 19,
col = "#1bd8ff",
xlab = "Durchschnittliche Ausgaben je Schüler:in (€)",
ylab = "Durchschnittlicher Anteil früher Schulabgänger:innen (%)",
main = "Bildungsausgaben und frühe Schulabgänger:innen nach Bundesland"
)
abline(
modell_bundeslaender,
col = "#b678ff",
lwd = 3
)
text(
bundesland_mittel$ausgaben,
bundesland_mittel$abbruchquote,
labels = bundesland_mittel$bundesland,
pos = 3,
cex = 0.65,
col = "white"
)
Zusammenfassung:
Für jedes Bundesland wurden die durchschnittlichen Bildungsausgaben je
Schüler:in sowie der durchschnittliche Anteil früher Schulabgänger:innen
im Zeitraum von 2010 bis 2024 berechnet. Anschließend wurden diese
Durchschnittswerte mithilfe einer Korrelationsanalyse, eines linearen
Regressionsmodells und eines Streudiagramms miteinander verglichen. Die
Korrelationsanalyse ergibt mit einem Korrelationskoeffizienten von
−0,119 einen sehr schwachen negativen Zusammenhang zwischen den
durchschnittlichen Bildungsausgaben und dem Anteil früher
Schulabgänger:innen. Auch das lineare Regressionsmodell zeigt keinen
statistisch signifikanten Zusammenhang (p = 0,662) und erklärt mit einem
R² von 0,014 nur einen sehr geringen Teil der Unterschiede zwischen den
Bundesländern. Insgesamt lässt sich aus den vorliegenden Daten daher
kein deutlicher Zusammenhang zwischen höheren Bildungsausgaben und
niedrigeren Anteilen früher Schulabgänger:innen ableiten.
Ziel dieses Projekts war es zu untersuchen, ob zwischen den Ausgaben öffentlicher Schulen je Schüler:in und dem Anteil früher Schulabgänger:innen in den deutschen Bundesländern im Zeitraum von 2010 bis 2024 ein Zusammenhang besteht. Dazu wurden zwei offene Datensätze zusammengeführt, aufbereitet und statistisch ausgewertet. Die Analyse zeigt, dass sich die Bundesländer hinsichtlich ihrer Bildungsausgaben und ihres Anteils früher Schulabgänger:innen unterscheiden. Ein eindeutiger Zusammenhang zwischen höheren Bildungsausgaben und niedrigeren Anteilen früher Schulabgänger:innen konnte jedoch nicht festgestellt werden. Die aufgestellte Hypothese wird durch die vorliegenden Daten daher nicht eindeutig bestätigt. Da in der Analyse zahlreiche weitere Einflussfaktoren unberücksichtigt bleiben, sind die Ergebnisse als explorativer Einblick zu verstehen und entsprechend vorsichtig zu interpretieren.