1 Einführung in die Datensätze

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.

2 Datensätze einlesen

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.

3 Erste Exploration der Datensätze

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.

4 Fehlende Werte

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.

5 Datensätze vorbereiten

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.

6 Deskriptive Statistik

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.

7 Vergleich der Bundesländer

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.

8 Fazit

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.