Fragestellung:
Besteht ein statistisch signifikanter Zusammenhang zwischen den
staatlichen Bildungsausgaben (in % des BIP) und den PISA-Leistungen der
OECD-Länder im Jahr 2022?
Hypothesen:
Die Analyse basiert auf folgenden Datensätzen:
| Datei | Inhalt |
|---|---|
Bildungsausgaben_OECD_2022.xlsx |
Staatliche Bildungsausgaben in % des BIP (OECD 2022) |
Math_PISA.csv |
PISA 2022 – Mathematik-Scores |
Reading_PISA.csv |
PISA 2022 – Lese-Scores |
Science_PISA.csv |
PISA 2022 – Naturwissenschafts-Scores |
Es werden nur Länder berücksichtigt, die in allen vier Datensätzen vorhanden sind (Schnittmenge).
# Bildungsausgaben einlesen
spend_raw <- read_excel("Bildungsausgaben_OECD_2022.xlsx", col_names = FALSE)
# Spalten benennen und bereinigen
spend <- data.frame(
Country = as.character(spend_raw[[1]]),
Spending = as.numeric(spend_raw[[2]]),
stringsAsFactors = FALSE
) |>
filter(!is.na(Spending)) |>
filter(!Country %in% c("OECE-Durchschnitt", "EU-Durchschnitt"))
# Ländernamen auf Englisch mappen (Deutsch -> Englisch)
name_map <- c(
"Australien" = "Australia",
"Österreich" = "Austria",
"Belgien" = "Belgium",
"Kanada" = "Canada",
"Chile" = "Chile",
"Tschechien" = "Czech Republic",
"Dänemark" = "Denmark",
"Estland" = "Estonia",
"Finnland" = "Finland",
"Frankreich" = "France",
"Deutschland" = "Germany",
"Griechenland" = "Greece",
"Ungarn" = "Hungary",
"Island" = "Iceland",
"Irland" = "Ireland",
"Israel" = "Israel",
"Italien" = "Italy",
"Japan" = "Japan",
"Korea" = "Korea",
"Lettland" = "Latvia",
"Litauen" = "Lithuania",
"Luxemburg" = "Luxembourg",
"Mexiko" = "Mexico",
"Niederlande" = "Netherlands",
"Neuseeland" = "New Zealand",
"Norwegen" = "Norway",
"Polen" = "Poland",
"Portugal" = "Portugal",
"Slowakei" = "Slovak Republic",
"Slowenien" = "Slovenia",
"Spanien" = "Spain",
"Schweden" = "Sweden",
"Türkei" = "Trkiye",
"Vereinigtes Königreich" = "United Kingdom",
"Vereinigte Staaten¹" = "United States"
)
spend$Country <- ifelse(
spend$Country %in% names(name_map),
name_map[spend$Country],
spend$Country
)
# PISA-Daten einlesen (Semikolon-getrennt, Komma als Dezimalzeichen)
read_csv2_pisa <- function(file, score_col) {
df <- read_delim(file, delim = ";", skip = 3,
col_names = c("Country", score_col),
locale = locale(decimal_mark = ","),
show_col_types = FALSE)
df$Country <- gsub("\\*", "", trimws(df$Country))
df[[score_col]] <- as.numeric(df[[score_col]])
df <- df[!is.na(df[[score_col]]), ]
df <- df[df$Country != "OECD average", ]
df
}
math <- read_csv2_pisa("Math_PISA.csv", "Math")
read <- read_csv2_pisa("Reading_PISA.csv", "Reading")
sci <- read_csv2_pisa("Science_PISA.csv", "Science")
# Datensätze zusammenführen (nur gemeinsame Länder)
df <- spend |>
inner_join(math, by = "Country") |>
inner_join(read, by = "Country") |>
inner_join(sci, by = "Country") |>
mutate(PISA_Avg = (Math + Reading + Science) / 3)
cat("Anzahl Länder in der Analyse:", nrow(df), "\n")## Anzahl Länder in der Analyse: 34
## Spending Math Reading Science
## Min. :2.800 Min. :391.2 Min. :408.2 Min. :407.8
## 1st Qu.:4.200 1st Qu.:469.2 1st Qu.:472.1 1st Qu.:479.8
## Median :4.750 Median :480.4 Median :479.3 Median :491.8
## Mean :4.794 Mean :474.7 Mean :477.7 Mean :486.4
## 3rd Qu.:5.475 3rd Qu.:489.0 3rd Qu.:493.4 3rd Qu.:499.9
## Max. :6.200 Max. :535.6 Max. :516.0 Max. :546.6
## PISA_Avg
## Min. :402.4
## 1st Qu.:476.9
## Median :484.1
## Mean :479.6
## 3rd Qu.:493.8
## Max. :532.7
# Pearson-Korrelation: Bildungsausgaben vs. PISA-Durchschnitt
cor_avg <- cor.test(df$Spending, df$PISA_Avg, method = "pearson")
cor_math <- cor.test(df$Spending, df$Math, method = "pearson")
cor_read <- cor.test(df$Spending, df$Reading, method = "pearson")
cor_sci <- cor.test(df$Spending, df$Science, method = "pearson")
# Ergebnisse als Tabelle
ergebnisse <- data.frame(
Bereich = c("Ø Gesamt (PISA_Avg)", "Mathematik", "Lesen", "Naturwissenschaften"),
r = round(c(cor_avg$estimate, cor_math$estimate,
cor_read$estimate, cor_sci$estimate), 4),
t_Wert = round(c(cor_avg$statistic, cor_math$statistic,
cor_read$statistic, cor_sci$statistic), 3),
df_ = c(cor_avg$parameter, cor_math$parameter,
cor_read$parameter, cor_sci$parameter),
p_Wert = round(c(cor_avg$p.value, cor_math$p.value,
cor_read$p.value, cor_sci$p.value), 4),
Signifikant = ifelse(c(cor_avg$p.value, cor_math$p.value,
cor_read$p.value, cor_sci$p.value) < 0.05,
"Ja ✓", "Nein ✗")
)
knitr::kable(ergebnisse,
col.names = c("PISA-Bereich", "r", "t-Wert", "df", "p-Wert", "Signifikant (α = .05)"),
caption = "Pearson-Korrelationen: Bildungsausgaben (% BIP) vs. PISA-Scores (2022)")| PISA-Bereich | r | t-Wert | df | p-Wert | Signifikant (α = .05) |
|---|---|---|---|---|---|
| Ø Gesamt (PISA_Avg) | 0.0394 | 0.223 | 32 | 0.8249 | Nein ✗ |
| Mathematik | 0.0070 | 0.040 | 32 | 0.9687 | Nein ✗ |
| Lesen | 0.0813 | 0.462 | 32 | 0.6475 | Nein ✗ |
| Naturwissenschaften | 0.0319 | 0.181 | 32 | 0.8579 | Nein ✗ |
plot(
df$Spending, df$PISA_Avg,
xlab = "Bildungsausgaben (% des BIP)",
ylab = "Durchschnittlicher PISA-Score",
main = "Bildungsausgaben vs. PISA-Leistung (OECD 2022)",
pch = 19,
col = "steelblue"
)
text(df$Spending, df$PISA_Avg,
labels = df$Country,
cex = 0.6,
pos = 3,
col = "gray30")
abline(lm(PISA_Avg ~ Spending, data = df),
col = "red", lwd = 2, lty = 2)
legend("topright",
legend = paste0("r = ", round(cor_avg$estimate, 3),
", p = ", round(cor_avg$p.value, 3)),
bty = "n", text.col = "red")Streudiagramm: Bildungsausgaben vs. PISA-Durchschnitt
## Pearson-Korrelation (Ø PISA): r = 0.0394, p = 0.8249
Die Korrelationsanalyse zeigt für alle vier PISA-Bereiche keine statistisch signifikante Korrelation mit den staatlichen Bildungsausgaben (alle p > 0,05):
Mögliche Erklärungen:
Fazit: Die Hypothese H₁ wird durch die Daten nicht gestützt.
Datenquellen: OECD Education at a Glance 2022; PISA 2022 Results (OECD)