Forschungsfrage und Hypothese

Forschungsfrage:
Gibt es einen Zusammenhang zwischen den staatlichen Bildungsausgaben und den Lesekompetenzwerten von Jugendlichen (PISA 2018)?

Hypothese:
Länder mit höheren Bildungsausgaben (in % des BIP) erzielen im Durchschnitt höhere PISA-Lesekompetenzwerte.

Datengrundlage

1. Bildungsausgaben (% des BIP):
World Bank – Government expenditure on education

2. PISA-Lesekompetenz (2018):
OECD – Reading performance (PISA)

 

1. Daten einlesen und vorbereiten/bereinigen

# Pakete laden 
library(tidyverse)
## Warning: Paket 'tidyverse' wurde unter R Version 4.4.3 erstellt
## Warning: Paket 'ggplot2' wurde unter R Version 4.4.2 erstellt
## Warning: Paket 'tibble' wurde unter R Version 4.4.2 erstellt
## Warning: Paket 'tidyr' wurde unter R Version 4.4.2 erstellt
## Warning: Paket 'readr' wurde unter R Version 4.4.2 erstellt
## Warning: Paket 'purrr' wurde unter R Version 4.4.2 erstellt
## Warning: Paket 'dplyr' wurde unter R Version 4.4.3 erstellt
## Warning: Paket 'stringr' wurde unter R Version 4.4.2 erstellt
## Warning: Paket 'forcats' wurde unter R Version 4.4.3 erstellt
## Warning: Paket 'lubridate' wurde unter R Version 4.4.3 erstellt
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# PISA-Daten einlesen
pisa <- read_delim("RS_2018.csv", 
                   delim = ";", 
                   skip = 2)
## Rows: 36 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (1): Category
## dbl (1): Reading performance (PISA)
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Ausgabendaten einlesen
ausgaben <- read_csv("Ausgaben.csv", 
                     skip = 4)
## New names:
## Rows: 266 Columns: 70
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," chr
## (4): Country Name, Country Code, Indicator Name, Indicator Code dbl (54): 1970,
## 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, ... lgl (12): 1960,
## 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 2024, ...
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...70`
head(pisa)
## # A tibble: 6 × 2
##   Category `Reading performance (PISA)`
##   <chr>                           <dbl>
## 1 Estonia                           523
## 2 Finland                           520
## 3 Canada                            520
## 4 Ireland                           518
## 5 Korea                             514
## 6 Poland                            512
head(ausgaben)
## # A tibble: 6 × 70
##   `Country Name`  `Country Code` `Indicator Name` `Indicator Code` `1960` `1961`
##   <chr>           <chr>          <chr>            <chr>            <lgl>  <lgl> 
## 1 Aruba           ABW            Government expe… SE.XPD.TOTL.GD.… NA     NA    
## 2 Africa Eastern… AFE            Government expe… SE.XPD.TOTL.GD.… NA     NA    
## 3 Afghanistan     AFG            Government expe… SE.XPD.TOTL.GD.… NA     NA    
## 4 Africa Western… AFW            Government expe… SE.XPD.TOTL.GD.… NA     NA    
## 5 Angola          AGO            Government expe… SE.XPD.TOTL.GD.… NA     NA    
## 6 Albania         ALB            Government expe… SE.XPD.TOTL.GD.… NA     NA    
## # ℹ 64 more variables: `1962` <lgl>, `1963` <lgl>, `1964` <lgl>, `1965` <lgl>,
## #   `1966` <lgl>, `1967` <lgl>, `1968` <lgl>, `1969` <lgl>, `1970` <dbl>,
## #   `1971` <dbl>, `1972` <dbl>, `1973` <dbl>, `1974` <dbl>, `1975` <dbl>,
## #   `1976` <dbl>, `1977` <dbl>, `1978` <dbl>, `1979` <dbl>, `1980` <dbl>,
## #   `1981` <dbl>, `1982` <dbl>, `1983` <dbl>, `1984` <dbl>, `1985` <dbl>,
## #   `1986` <dbl>, `1987` <dbl>, `1988` <dbl>, `1989` <dbl>, `1990` <dbl>,
## #   `1991` <dbl>, `1992` <dbl>, `1993` <dbl>, `1994` <dbl>, `1995` <dbl>, …
# Nur 2018-Daten auswählen
ausgaben_2018 <- ausgaben %>%
  select(`Country Name`, `2018`) %>%
  rename(country = `Country Name`,
         spending_2018 = `2018`) %>%
  na.omit()

head(ausgaben_2018)
## # A tibble: 6 × 2
##   country                     spending_2018
##   <chr>                               <dbl>
## 1 Aruba                                4.55
## 2 Africa Eastern and Southern          4.98
## 3 Africa Western and Central           3.02
## 4 Angola                               2.18
## 5 Albania                              3.15
## 6 Andorra                              3.25
# PISA: Spaltenname angleichen
pisa <- pisa %>% rename(country = Category)

head(pisa)
## # A tibble: 6 × 2
##   country `Reading performance (PISA)`
##   <chr>                          <dbl>
## 1 Estonia                          523
## 2 Finland                          520
## 3 Canada                           520
## 4 Ireland                          518
## 5 Korea                            514
## 6 Poland                           512

 

Datensätze abgleichen und zusammenführen

# Innerer Join – nur Länder, die exakt übereinstimmen
vergleich <- inner_join(pisa, ausgaben_2018, by = "country")

# Welche Länder aus den PISA-Daten fehlen im Ausgaben-Datensatz?
fehlende_ausgaben <- anti_join(pisa, ausgaben_2018, by = "country")

# Umgekehrt: Welche Länder fehlen in den PISA-Daten?
fehlende_pisa <- anti_join(ausgaben_2018, pisa, by = "country")

fehlende_ausgaben
## # A tibble: 4 × 2
##   country        `Reading performance (PISA)`
##   <chr>                                 <dbl>
## 1 Korea                                   514
## 2 OECD - Average                          487
## 3 Türkiye                                 466
## 4 Slovak Rep.                             458
# Ländernamen angleichen 
ausgaben_2018_clean <- ausgaben_2018 %>%
  mutate(country = case_when(
    country == "Korea, Rep." ~ "Korea",
    country == "Turkiye" ~ "Türkiye",
    country == "Slovak Republic" ~ "Slovak Rep.",
    TRUE ~ country
  ))

# Datensätze zusammenführen 
daten_vereint <- inner_join(pisa, ausgaben_2018_clean, by = "country") %>%
  rename(reading_score = `Reading performance (PISA)`)

head(daten_vereint)
## # A tibble: 6 × 3
##   country reading_score spending_2018
##   <chr>           <dbl>         <dbl>
## 1 Estonia           523          5.24
## 2 Finland           520          6.28
## 3 Canada            520          4.89
## 4 Ireland           518          3.38
## 5 Korea             514          4.46
## 6 Poland            512          4.61

 

2. Deskriptive Statistik

summary(daten_vereint %>% select(reading_score, spending_2018))
##  reading_score   spending_2018  
##  Min.   :420.0   Min.   :3.078  
##  1st Qu.:476.0   1st Qu.:4.261  
##  Median :493.0   Median :4.930  
##  Mean   :489.2   Mean   :5.059  
##  3rd Qu.:504.5   3rd Qu.:5.408  
##  Max.   :523.0   Max.   :7.641

Die Verteilung der PISA-Scores ist relativ symmetrisch um den Mittelwert von 489,2 Punkten. Der Median liegt bei 493, das 1. Quartil bei 476 und das 3. Quartil bei 504,5. Die Werte reichen von 420 bis 523, was auf eine moderate Streuung ohne extreme Ausreißer hindeutet.

Bei den Bildungsausgaben zeigt sich eine größere Streuung. Der Mittelwert liegt bei 5,06 % des BIP, der Median bei 4,93 %, mit einem Minimum von 3,08 % und einem Maximum von 7,64 %.

# Top 5 Länder nach PISA
daten_vereint %>% arrange(desc(reading_score)) %>% select(country, reading_score) %>% head(5)
## # A tibble: 5 × 2
##   country reading_score
##   <chr>           <dbl>
## 1 Estonia           523
## 2 Finland           520
## 3 Canada            520
## 4 Ireland           518
## 5 Korea             514
# Top 5 Bildungsausgaben
daten_vereint %>% arrange(desc(spending_2018)) %>% select(country, spending_2018) %>% head(5)
## # A tibble: 5 × 2
##   country spending_2018
##   <chr>           <dbl>
## 1 Sweden           7.64
## 2 Norway           7.60
## 3 Iceland          7.56
## 4 Denmark          7.30
## 5 Belgium          6.38
# Geringste Ausgaben
daten_vereint %>% arrange(spending_2018) %>% select(country, spending_2018) %>% head(5)
## # A tibble: 5 × 2
##   country    spending_2018
##   <chr>              <dbl>
## 1 Japan               3.08
## 2 Ireland             3.38
## 3 Greece              3.60
## 4 Luxembourg          3.66
## 5 Lithuania           3.89

Besonders hohe Lesekompetenzwerte zeigen:

Estland (523), Finnland (520) und Kanada (520), drei Länder, die regelmäßig durch gute Ergebnisse auffallen.

Irland (518) erzielt ebenfalls ein sehr gutes Ergebnis – und das bei vergleichsweise niedrigen Bildungsausgaben. Ebenso Korea (514).

Die Länder mit den höchsten Ausgaben sind:

Schweden (7,64 %), Norwegen (7,60 %), Island (7,56 %) und Dänemark (7,30 %) – allesamt nordische Länder.

Belgien (6,38 %) liegt ebenfalls über dem Durchschnitt, zeigt aber im PISA-Vergleich ein weniger herausragendes Ergebnis.

Am unteren Ende der Ausgabenliste:

Japan (3,08 %) investiert relativ wenig, erzielt aber konstant gute PISA-Ergebnisse. Hinweis auf kulturelle oder strukturelle Effekte, die über die reinen Investitionen hinausgehen.

Irland (3,38 %) ist ein besonders interessanter Fall -> geringe Ausgaben, aber Top-5 im PISA-Score.

Griechenland, Luxemburg und Litauen liegen mit unter 4 % ebenfalls deutlich unter dem Schnitt.

Diese Beobachtungen deuten an, dass höhere Bildungsausgaben nicht automatisch mit besseren PISA-Ergebnissen einhergehen. Andere Faktoren könnten auch eine zentrale Rolle spielen. Die folgende Analyse soll diesen Zusammenhang genauer untersuchen.

3. Korrelationsanalyse

# Scatterplot mit Regressionslinie
ggplot(daten_vereint, aes(x = spending_2018, y = reading_score)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  labs(
    title = "Zusammenhang zwischen Bildungsausgaben und PISA-Lesekompetenz (2018)",
    x = "Bildungsausgaben (% des BIP)",
    y = "PISA-Lesekompetenz"
  )
## `geom_smooth()` using formula = 'y ~ x'

Die Streuung ist relativ breit und der Zusammenhang nicht sehr stark linear, der Trend ist zwar erkennbar, aber schwach. Die Verteilung ist annähernd linear und ohne extreme Ausreißer. Für Pearson gerade noch ausreichend.

# Normalverteilung prüfen
qqnorm(daten_vereint$spending_2018); qqline(daten_vereint$spending_2018)

qqnorm(daten_vereint$reading_score); qqline(daten_vereint$reading_score)

shapiro.test(daten_vereint$spending_2018)
## 
##  Shapiro-Wilk normality test
## 
## data:  daten_vereint$spending_2018
## W = 0.92874, p-value = 0.02566
shapiro.test(daten_vereint$reading_score)
## 
##  Shapiro-Wilk normality test
## 
## data:  daten_vereint$reading_score
## W = 0.95019, p-value = 0.1149

Für die PISA-Lesekompetenzwerte ergibt sich ein p-Wert von 0.1149 (p> 0.05). Damit kann die Annahme der Normalverteilung beibehalten werden.

Für die Bildungsausgaben (spending_2018) liegt der p-Wert bei 0.02566 (p< 0.05), was auf eine signifikante Abweichung von der Normalverteilung hinweist.

# Pearson-Korrelation
cor.test(daten_vereint$spending_2018, daten_vereint$reading_score)
## 
##  Pearson's product-moment correlation
## 
## data:  daten_vereint$spending_2018 and daten_vereint$reading_score
## t = 1.2785, df = 33, p-value = 0.21
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.1250554  0.5133283
## sample estimates:
##       cor 
## 0.2172447
# Spearman-Korrelation
cor.test(daten_vereint$spending_2018, daten_vereint$reading_score, method = "spearman")
## Warning in cor.test.default(daten_vereint$spending_2018,
## daten_vereint$reading_score, : Kann exakten p-Wert bei Bindungen nicht
## berechnen
## 
##  Spearman's rank correlation rho
## 
## data:  daten_vereint$spending_2018 and daten_vereint$reading_score
## S = 5450.8, p-value = 0.1712
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.2365803

Die Pearson-Korrelation ergab einen Korrelationskoeffizienten von r = 0.22 bei einem p-Wert von 0.21 (p > 0.05). Dieser positive, aber nicht signifikante Zusammenhang deutet auf eine schwache lineare Beziehung hin.

Da die Variable Bildungsausgaben nicht normalverteilt war, wurde ergänzend die Spearman-Korrelation berechnet. Diese ergab einen Koeffizienten von ρ = 0.24 mit einem p-Wert von 0.17 (p > 0.05), ebenfalls nicht signifikant.

Insgesamt zeigt sich somit kein statistisch signifikanter Zusammenhang zwischen dem Bildungsbudget eines Landes und der durchschnittlichen PISA-Lesekompetenz.

 

Fazit:

Es gibt Hinweise auf einen positiven Zusammenhang, aber auf Basis dieser Stichprobe kann kein statistisch gesicherter Zusammenhang zwischen Bildungsausgaben und PISA-Lesekompetenz nachgewiesen werden. Die Hypothese wird somit nicht bestätigt.