# Benötigte Pakete laden
library(readr)
library(dplyr)
library(tidyr)
In diesem kleinen Datenprojekt werden offene Bildungsdaten von Our World in Data untersucht. Der Datensatz enthält Informationen zur durchschnittlichen Anzahl an Schuljahren von Erwachsenen ab 25 Jahren. Zusätzlich gibt es einen zweiten Datensatz, in dem die Werte getrennt nach Frauen und Männern angegeben sind.
Ziel der Analyse ist es, die Datensätze einzulesen, zu kombinieren und erste Auffälligkeiten zu untersuchen. Besonders interessant ist dabei, wie sich die durchschnittlichen Schuljahre über die Zeit entwickelt haben und ob Unterschiede zwischen Frauen und Männern sichtbar werden.
Die verwendeten Datensätze stammen von Our World in Data. Die ursprünglichen Daten basieren auf dem UNDP Human Development Report. Der Indikator beschreibt die durchschnittliche Anzahl an Jahren, die Erwachsene ab 25 Jahren in formaler Bildung verbracht haben.
Verwendet wurden zwei CSV-Dateien:
average-years-of-schooling-among-adults.csvaverage-years-of-schooling-among-men-and-women.csvDer erste Datensatz enthält Gesamtwerte für Erwachsene. Der zweite Datensatz enthält getrennte Werte für Frauen und Männer.
# Datensatz 1 einlesen:
# Dieser Datensatz enthält die durchschnittlichen Schuljahre für Erwachsene insgesamt.
schooling_all <- read_csv("average-years-of-schooling-among-adults.csv")
# Datensatz 2 einlesen:
# Dieser Datensatz enthält die durchschnittlichen Schuljahre getrennt nach Frauen und Männern.
schooling_gender <- read_csv("average-years-of-schooling-among-men-and-women.csv")
# Erste Zeilen der Datensätze anzeigen
head(schooling_all)
## # A tibble: 6 × 4
## Entity Code Year `Both genders`
## <chr> <chr> <dbl> <dbl>
## 1 Afghanistan AFG 1990 0.872
## 2 Afghanistan AFG 1991 0.915
## 3 Afghanistan AFG 1992 0.959
## 4 Afghanistan AFG 1993 1.00
## 5 Afghanistan AFG 1994 1.05
## 6 Afghanistan AFG 1995 1.09
head(schooling_gender)
## # A tibble: 6 × 5
## Entity Code Year Girls Boys
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Afghanistan AFG 1990 0.202 1.49
## 2 Afghanistan AFG 1991 0.219 1.58
## 3 Afghanistan AFG 1992 0.236 1.66
## 4 Afghanistan AFG 1993 0.254 1.75
## 5 Afghanistan AFG 1994 0.271 1.83
## 6 Afghanistan AFG 1995 0.288 1.92
# Anzahl der Zeilen und Spalten prüfen
dim(schooling_all)
## [1] 6760 4
dim(schooling_gender)
## [1] 6668 5
# Spaltennamen anzeigen
names(schooling_all)
## [1] "Entity" "Code" "Year" "Both genders"
names(schooling_gender)
## [1] "Entity" "Code" "Year" "Girls" "Boys"
# Struktur der Datensätze anschauen
glimpse(schooling_all)
## Rows: 6,760
## Columns: 4
## $ Entity <chr> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanist…
## $ Code <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG",…
## $ Year <dbl> 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1…
## $ `Both genders` <dbl> 0.8719619, 0.9152675, 0.9585729, 1.0018785, 1.0451839, …
glimpse(schooling_gender)
## Rows: 6,668
## Columns: 5
## $ Entity <chr> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Af…
## $ Code <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", …
## $ Year <dbl> 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 200…
## $ Girls <dbl> 0.2016592, 0.2189443, 0.2362294, 0.2535145, 0.2707995, 0.288084…
## $ Boys <dbl> 1.493952, 1.578809, 1.663665, 1.748522, 1.833378, 1.918235, 1.9…
Beide Datensätze enthalten die Variablen Entity,
Code und Year. Entity beschreibt
das Land oder die Region, Code enthält den jeweiligen
Ländercode und Year das Beobachtungsjahr. Im Datensatz mit
den Gesamtwerten gibt es zusätzlich die Variable
Both genders. Im zweiten Datensatz gibt es die Variablen
Girls und Boys, die sich laut Readme auf
erwachsene Frauen und Männer ab 25 Jahren beziehen.
Auffällig ist, dass der Datensatz mit den Gesamtwerten etwas mehr Zeilen enthält als der Datensatz mit den getrennten Werten nach Geschlecht. Deshalb wird im nächsten Schritt geprüft, welche Beobachtungen nur in einem der beiden Datensätze vorkommen.
# Prüfen, welche Beobachtungen im Gesamt-Datensatz vorkommen,
# aber nicht im Datensatz nach Geschlecht.
only_all <- anti_join(
schooling_all,
schooling_gender,
by = c("Entity", "Code", "Year")
)
# Beobachtungen, die nur im Geschlechter-Datensatz vorkommen
only_gender <- anti_join(
schooling_gender,
schooling_all,
by = c("Entity", "Code", "Year")
)
# Anzahl der Unterschiede anzeigen
nrow(only_all)
## [1] 92
nrow(only_gender)
## [1] 0
# Erste Zeilen der Unterschiede anschauen
head(only_all)
## # A tibble: 6 × 4
## Entity Code Year `Both genders`
## <chr> <chr> <dbl> <dbl>
## 1 Djibouti DJI 1995 1.16
## 2 Djibouti DJI 1996 1.22
## 3 Djibouti DJI 1997 1.29
## 4 Djibouti DJI 1998 1.36
## 5 Djibouti DJI 1999 1.43
## 6 Djibouti DJI 2000 1.51
head(only_gender)
## # A tibble: 0 × 5
## # ℹ 5 variables: Entity <chr>, Code <chr>, Year <dbl>, Girls <dbl>, Boys <dbl>
Durch den Vergleich wird sichtbar, ob bestimmte Länder-Jahr-Kombinationen nur in einem der beiden Datensätze enthalten sind. Das ist wichtig, weil beim späteren Kombinieren der Daten keine Beobachtungen verloren gehen sollen.
Im vorliegenden Datensatz zeigt sich, dass einige Beobachtungen nur im Gesamt-Datensatz vorkommen. Für diese Länder-Jahr-Kombinationen liegt also ein Gesamtwert vor, aber keine getrennten Werte für Frauen und Männer. Umgekehrt gibt es keine zusätzlichen Beobachtungen, die nur im Geschlechter-Datensatz vorkommen.
# Beide Datensätze anhand von Entity, Code und Year kombinieren.
# full_join() sorgt dafür, dass keine Beobachtungen verloren gehen.
schooling_combined <- full_join(
schooling_all,
schooling_gender,
by = c("Entity", "Code", "Year")
)
# Struktur des kombinierten Datensatzes prüfen
glimpse(schooling_combined)
## Rows: 6,760
## Columns: 6
## $ Entity <chr> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanist…
## $ Code <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG",…
## $ Year <dbl> 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1…
## $ `Both genders` <dbl> 0.8719619, 0.9152675, 0.9585729, 1.0018785, 1.0451839, …
## $ Girls <dbl> 0.2016592, 0.2189443, 0.2362294, 0.2535145, 0.2707995, …
## $ Boys <dbl> 1.493952, 1.578809, 1.663665, 1.748522, 1.833378, 1.918…
# Erste Zeilen anzeigen
head(schooling_combined)
## # A tibble: 6 × 6
## Entity Code Year `Both genders` Girls Boys
## <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Afghanistan AFG 1990 0.872 0.202 1.49
## 2 Afghanistan AFG 1991 0.915 0.219 1.58
## 3 Afghanistan AFG 1992 0.959 0.236 1.66
## 4 Afghanistan AFG 1993 1.00 0.254 1.75
## 5 Afghanistan AFG 1994 1.05 0.271 1.83
## 6 Afghanistan AFG 1995 1.09 0.288 1.92
# Anzahl der Zeilen und Spalten prüfen
dim(schooling_combined)
## [1] 6760 6
Die Datensätze werden mit full_join() kombiniert.
Dadurch bleiben sowohl Beobachtungen aus dem Gesamt-Datensatz als auch
Beobachtungen aus dem Geschlechter-Datensatz erhalten.
# Spalten umbenennen, damit sie leichter im Code verwendet werden können.
# Laut Readme beziehen sich Girls/Boys hier auf erwachsene Frauen und Männer ab 25 Jahren.
schooling_combined <- schooling_combined %>%
rename(
country = Entity,
code = Code,
year = Year,
both_genders = `Both genders`,
women = Girls,
men = Boys
)
# Kontrolle
glimpse(schooling_combined)
## Rows: 6,760
## Columns: 6
## $ country <chr> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan…
## $ code <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "…
## $ year <dbl> 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 199…
## $ both_genders <dbl> 0.8719619, 0.9152675, 0.9585729, 1.0018785, 1.0451839, 1.…
## $ women <dbl> 0.2016592, 0.2189443, 0.2362294, 0.2535145, 0.2707995, 0.…
## $ men <dbl> 1.493952, 1.578809, 1.663665, 1.748522, 1.833378, 1.91823…
Die Spalten wurden umbenannt, damit sie im weiteren Code einfacher
verwendet werden können. Besonders wichtig ist dabei, dass
Girls und Boys hier als women und
men bezeichnet werden, da sich die Werte auf Erwachsene ab
25 Jahren beziehen.
# Fehlende Werte pro Spalte prüfen
colSums(is.na(schooling_combined))
## country code year both_genders women men
## 0 340 0 0 92 92
Die fehlenden Werte entstehen vor allem dadurch, dass nicht für jede Länder-Jahr-Kombination alle Angaben vorhanden sind. Besonders bei den getrennten Werten nach Frauen und Männern können Werte fehlen, obwohl ein Gesamtwert vorhanden ist.
Außerdem fehlen in der Spalte code Werte bei einigen
Regionen oder Ländergruppen. Das liegt daran, dass diese Einträge keine
einzelnen Länder mit eindeutigem Ländercode sind, sondern aggregierte
Gruppen wie Regionen oder Entwicklungsgruppen. Bei den weiteren
Berechnungen werden fehlende Werte mit na.rm = TRUE
ignoriert.
# Prüfen, welche Länder, Regionen oder Ländergruppen im Datensatz enthalten sind
unique(schooling_combined$country)
## [1] "Afghanistan"
## [2] "Africa"
## [3] "Albania"
## [4] "Algeria"
## [5] "Andorra"
## [6] "Angola"
## [7] "Antigua and Barbuda"
## [8] "Arab States (UNDP)"
## [9] "Argentina"
## [10] "Armenia"
## [11] "Asia"
## [12] "Australia"
## [13] "Austria"
## [14] "Azerbaijan"
## [15] "Bahamas"
## [16] "Bahrain"
## [17] "Bangladesh"
## [18] "Barbados"
## [19] "Belarus"
## [20] "Belgium"
## [21] "Belize"
## [22] "Benin"
## [23] "Bhutan"
## [24] "Bolivia"
## [25] "Bosnia and Herzegovina"
## [26] "Botswana"
## [27] "Brazil"
## [28] "Brunei"
## [29] "Bulgaria"
## [30] "Burkina Faso"
## [31] "Burundi"
## [32] "Cambodia"
## [33] "Cameroon"
## [34] "Canada"
## [35] "Cape Verde"
## [36] "Central African Republic"
## [37] "Chad"
## [38] "Chile"
## [39] "China"
## [40] "Colombia"
## [41] "Comoros"
## [42] "Congo"
## [43] "Costa Rica"
## [44] "Cote d'Ivoire"
## [45] "Croatia"
## [46] "Cuba"
## [47] "Cyprus"
## [48] "Czechia"
## [49] "Democratic Republic of Congo"
## [50] "Denmark"
## [51] "Djibouti"
## [52] "Dominica"
## [53] "Dominican Republic"
## [54] "East Asia and the Pacific (UNDP)"
## [55] "East Timor"
## [56] "Ecuador"
## [57] "Egypt"
## [58] "El Salvador"
## [59] "Equatorial Guinea"
## [60] "Eritrea"
## [61] "Estonia"
## [62] "Eswatini"
## [63] "Ethiopia"
## [64] "Europe"
## [65] "Europe and Central Asia (UNDP)"
## [66] "European Union (27)"
## [67] "Fiji"
## [68] "Finland"
## [69] "France"
## [70] "Gabon"
## [71] "Gambia"
## [72] "Georgia"
## [73] "Germany"
## [74] "Ghana"
## [75] "Greece"
## [76] "Grenada"
## [77] "Guatemala"
## [78] "Guinea"
## [79] "Guinea-Bissau"
## [80] "Guyana"
## [81] "Haiti"
## [82] "High human development (UNDP)"
## [83] "High-income countries"
## [84] "Honduras"
## [85] "Hong Kong"
## [86] "Hungary"
## [87] "Iceland"
## [88] "India"
## [89] "Indonesia"
## [90] "Iran"
## [91] "Iraq"
## [92] "Ireland"
## [93] "Israel"
## [94] "Italy"
## [95] "Jamaica"
## [96] "Japan"
## [97] "Jordan"
## [98] "Kazakhstan"
## [99] "Kenya"
## [100] "Kiribati"
## [101] "Kuwait"
## [102] "Kyrgyzstan"
## [103] "Laos"
## [104] "Latin America and the Caribbean (UNDP)"
## [105] "Latvia"
## [106] "Lebanon"
## [107] "Lesotho"
## [108] "Liberia"
## [109] "Libya"
## [110] "Liechtenstein"
## [111] "Lithuania"
## [112] "Low human development (UNDP)"
## [113] "Low-income countries"
## [114] "Lower-middle-income countries"
## [115] "Luxembourg"
## [116] "Madagascar"
## [117] "Malawi"
## [118] "Malaysia"
## [119] "Maldives"
## [120] "Mali"
## [121] "Malta"
## [122] "Marshall Islands"
## [123] "Mauritania"
## [124] "Mauritius"
## [125] "Medium human development (UNDP)"
## [126] "Mexico"
## [127] "Micronesia (country)"
## [128] "Moldova"
## [129] "Mongolia"
## [130] "Montenegro"
## [131] "Morocco"
## [132] "Mozambique"
## [133] "Myanmar"
## [134] "Namibia"
## [135] "Nauru"
## [136] "Nepal"
## [137] "Netherlands"
## [138] "New Zealand"
## [139] "Nicaragua"
## [140] "Niger"
## [141] "Nigeria"
## [142] "North America"
## [143] "North Macedonia"
## [144] "Norway"
## [145] "Oceania"
## [146] "Oman"
## [147] "Pakistan"
## [148] "Palau"
## [149] "Palestine"
## [150] "Panama"
## [151] "Papua New Guinea"
## [152] "Paraguay"
## [153] "Peru"
## [154] "Philippines"
## [155] "Poland"
## [156] "Portugal"
## [157] "Qatar"
## [158] "Romania"
## [159] "Russia"
## [160] "Rwanda"
## [161] "Saint Kitts and Nevis"
## [162] "Saint Lucia"
## [163] "Saint Vincent and the Grenadines"
## [164] "Samoa"
## [165] "San Marino"
## [166] "Sao Tome and Principe"
## [167] "Saudi Arabia"
## [168] "Senegal"
## [169] "Serbia"
## [170] "Seychelles"
## [171] "Sierra Leone"
## [172] "Singapore"
## [173] "Slovakia"
## [174] "Slovenia"
## [175] "Solomon Islands"
## [176] "Somalia"
## [177] "South Africa"
## [178] "South America"
## [179] "South Asia (UNDP)"
## [180] "South Korea"
## [181] "South Sudan"
## [182] "Spain"
## [183] "Sri Lanka"
## [184] "Sub-Saharan Africa (UNDP)"
## [185] "Sudan"
## [186] "Suriname"
## [187] "Sweden"
## [188] "Switzerland"
## [189] "Syria"
## [190] "Tajikistan"
## [191] "Tanzania"
## [192] "Thailand"
## [193] "Togo"
## [194] "Tonga"
## [195] "Trinidad and Tobago"
## [196] "Tunisia"
## [197] "Turkey"
## [198] "Turkmenistan"
## [199] "Tuvalu"
## [200] "Uganda"
## [201] "Ukraine"
## [202] "United Arab Emirates"
## [203] "United Kingdom"
## [204] "United States"
## [205] "Upper-middle-income countries"
## [206] "Uruguay"
## [207] "Uzbekistan"
## [208] "Vanuatu"
## [209] "Venezuela"
## [210] "Very high human development (UNDP)"
## [211] "Vietnam"
## [212] "World"
## [213] "Yemen"
## [214] "Zambia"
## [215] "Zimbabwe"
# Länder/Regionen ohne Ländercode anzeigen
# Bei Our World in Data sind fehlende Codes oft ein Hinweis auf Regionen oder Ländergruppen
schooling_combined %>%
filter(is.na(code)) %>%
distinct(country)
## # A tibble: 10 × 1
## country
## <chr>
## 1 Arab States (UNDP)
## 2 East Asia and the Pacific (UNDP)
## 3 Europe and Central Asia (UNDP)
## 4 High human development (UNDP)
## 5 Latin America and the Caribbean (UNDP)
## 6 Low human development (UNDP)
## 7 Medium human development (UNDP)
## 8 South Asia (UNDP)
## 9 Sub-Saharan Africa (UNDP)
## 10 Very high human development (UNDP)
Die Variable country enthält nicht nur einzelne Länder,
sondern teilweise auch Regionen oder Ländergruppen. Das ist wichtig,
weil aggregierte Regionen nicht ohne Weiteres mit einzelnen Ländern
gleichgesetzt werden sollten.
Für Länderanalysen werden deshalb später nur Beobachtungen mit vorhandenem Ländercode verwendet.
# Neue Variable berechnen: Unterschied zwischen Männern und Frauen
# Positive Werte bedeuten: Männer haben im Durchschnitt mehr Schuljahre als Frauen.
# Negative Werte bedeuten: Frauen haben im Durchschnitt mehr Schuljahre als Männer.
schooling_combined <- schooling_combined %>%
mutate(gender_gap = men - women)
# Kontrolle der neuen Variable
summary(schooling_combined$gender_gap)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -3.92000 0.09725 0.72750 0.84152 1.50800 4.38093 92
Zusätzlich wurde die Variable gender_gap berechnet. Sie
beschreibt den Unterschied zwischen den durchschnittlichen Schuljahren
von Männern und Frauen.
Ein positiver Wert bedeutet, dass Männer im Durchschnitt mehr Schuljahre haben als Frauen. Ein negativer Wert bedeutet, dass Frauen im Durchschnitt mehr Schuljahre haben als Männer.
# Zusätzliches Long-Format für spätere Analysen und Visualisierungen
schooling_long <- schooling_combined %>%
pivot_longer(
cols = c(both_genders, women, men),
names_to = "sex",
values_to = "years_schooling"
)
# Kontrolle
glimpse(schooling_long)
## Rows: 20,280
## Columns: 6
## $ country <chr> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanis…
## $ code <chr> "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG", "AFG"…
## $ year <dbl> 1990, 1990, 1990, 1991, 1991, 1991, 1992, 1992, 1992, …
## $ gender_gap <dbl> 1.292293, 1.292293, 1.292293, 1.359864, 1.359864, 1.35…
## $ sex <chr> "both_genders", "women", "men", "both_genders", "women…
## $ years_schooling <dbl> 0.8719619, 0.2016592, 1.4939522, 0.9152675, 0.2189443,…
# Erste Zeilen anzeigen
head(schooling_long)
## # A tibble: 6 × 6
## country code year gender_gap sex years_schooling
## <chr> <chr> <dbl> <dbl> <chr> <dbl>
## 1 Afghanistan AFG 1990 1.29 both_genders 0.872
## 2 Afghanistan AFG 1990 1.29 women 0.202
## 3 Afghanistan AFG 1990 1.29 men 1.49
## 4 Afghanistan AFG 1991 1.36 both_genders 0.915
## 5 Afghanistan AFG 1991 1.36 women 0.219
## 6 Afghanistan AFG 1991 1.36 men 1.58
Für einige Analysen und Visualisierungen ist das Long-Format
praktischer. Dabei stehen die Gruppen both_genders,
women und men nicht mehr in drei verschiedenen
Spalten, sondern in einer gemeinsamen Variable sex. Die
dazugehörigen Werte stehen in years_schooling.
# Überblick über die wichtigsten numerischen Variablen
summary(schooling_combined[, c("both_genders", "women", "men", "gender_gap")])
## both_genders women men gender_gap
## Min. : 0.3231 Min. : 0.09181 Min. : 0.6386 Min. :-3.92000
## 1st Qu.: 5.3360 1st Qu.: 4.50758 1st Qu.: 6.0796 1st Qu.: 0.09725
## Median : 8.0213 Median : 7.80996 Median : 8.3252 Median : 0.72750
## Mean : 7.8508 Mean : 7.45508 Mean : 8.2966 Mean : 0.84152
## 3rd Qu.:10.5871 3rd Qu.:10.46727 3rd Qu.:10.8145 3rd Qu.: 1.50800
## Max. :14.2964 Max. :14.14000 Max. :14.5502 Max. : 4.38093
## NA's :92 NA's :92 NA's :92
Die Zusammenfassung zeigt die Verteilung der durchschnittlichen Schuljahre über alle Länder, Regionen und Jahre hinweg. Für die Gesamtbevölkerung liegt der Mittelwert bei etwa 7,85 Schuljahren, während der Median mit etwa 8,02 Schuljahren sehr ähnlich ausfällt. Die Werte reichen insgesamt von sehr niedrigen Bildungsdauern unter einem Jahr bis zu mehr als 14 Jahren.
Beim Vergleich von Frauen und Männern fällt auf, dass Männer im Durchschnitt höhere Werte erreichen. Der Mittelwert liegt bei Männern bei etwa 8,30 Schuljahren, bei Frauen bei etwa 7,46 Schuljahren. Der durchschnittliche Gender Gap beträgt damit etwa 0,84 Schuljahre zugunsten der Männer.
# Durchschnittliche Schuljahre nach Gruppe
schooling_long %>%
group_by(sex) %>%
summarise(
mean_schooling = mean(years_schooling, na.rm = TRUE),
median_schooling = median(years_schooling, na.rm = TRUE),
min_schooling = min(years_schooling, na.rm = TRUE),
max_schooling = max(years_schooling, na.rm = TRUE)
)
## # A tibble: 3 × 5
## sex mean_schooling median_schooling min_schooling max_schooling
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 both_genders 7.85 8.02 0.323 14.3
## 2 men 8.30 8.33 0.639 14.6
## 3 women 7.46 7.81 0.0918 14.1
Die gruppierte Übersicht macht den Unterschied zwischen den drei Gruppen deutlicher. Über alle Beobachtungen hinweg liegen die Werte der Männer im Mittel höher als die Werte der Frauen. Der Gesamtwert both_genders liegt erwartungsgemäß zwischen den Werten für Frauen und Männer.
Gleichzeitig zeigen die Minimal- und Maximalwerte, dass die Spannweite sehr groß ist. Das deutet darauf hin, dass sich die durchschnittliche Bildungsdauer zwischen Ländern und Regionen deutlich unterscheidet.
# Durchschnittliche Schuljahre pro Jahr und Gruppe
schooling_yearly <- schooling_long %>%
group_by(year, sex) %>%
summarise(
mean_schooling = mean(years_schooling, na.rm = TRUE),
.groups = "drop"
)
head(schooling_yearly)
## # A tibble: 6 × 3
## year sex mean_schooling
## <dbl> <chr> <dbl>
## 1 1990 both_genders 6.04
## 2 1990 men 6.63
## 3 1990 women 5.51
## 4 1991 both_genders 6.17
## 5 1991 men 6.75
## 6 1991 women 5.64
Die jährlichen Mittelwerte zeigen bereits in tabellarischer Form, dass die durchschnittlichen Schuljahre im Zeitverlauf steigen. Für die Gesamtbevölkerung steigt der durchschnittliche Wert von etwa 6,04 Schuljahren im Jahr 1990 auf etwa 9,13 Schuljahre im Jahr 2023. Auch bei Frauen und Männern ist ein deutlicher Anstieg zu erkennen.
# Entwicklung des Gender Gaps pro Jahr
gender_gap_yearly <- schooling_combined %>%
group_by(year) %>%
summarise(
mean_gender_gap = mean(gender_gap, na.rm = TRUE)
)
head(gender_gap_yearly)
## # A tibble: 6 × 2
## year mean_gender_gap
## <dbl> <dbl>
## 1 1990 1.12
## 2 1991 1.11
## 3 1992 1.10
## 4 1993 1.08
## 5 1994 1.07
## 6 1995 1.06
Beim Gender Gap zeigt sich eine abnehmende Tendenz. Im Jahr 1990 lag der durchschnittliche Unterschied zwischen Männern und Frauen bei etwa 1,12 Schuljahren. Bis 2023 sinkt dieser Wert auf etwa 0,56 Schuljahre. Das deutet darauf hin, dass sich die durchschnittliche Bildungsdauer von Frauen und Männern im Zeitverlauf angenähert hat.
# Linienplot: Durchschnittliche Schuljahre pro Jahr und Gruppe
plot(
schooling_yearly$year[schooling_yearly$sex == "both_genders"],
schooling_yearly$mean_schooling[schooling_yearly$sex == "both_genders"],
type = "l",
xlab = "Jahr",
ylab = "Durchschnittliche Schuljahre",
main = "Entwicklung der durchschnittlichen Schuljahre nach Gruppe",
ylim = range(schooling_yearly$mean_schooling, na.rm = TRUE)
)
lines(
schooling_yearly$year[schooling_yearly$sex == "women"],
schooling_yearly$mean_schooling[schooling_yearly$sex == "women"],
lty = 2
)
lines(
schooling_yearly$year[schooling_yearly$sex == "men"],
schooling_yearly$mean_schooling[schooling_yearly$sex == "men"],
lty = 3
)
legend(
"topleft",
legend = c("Alle", "Frauen", "Männer"),
lty = c(1, 2, 3),
bty = "n"
)
Der Linienplot zeigt die Entwicklung der durchschnittlichen Schuljahre von 1990 bis 2023. Insgesamt ist ein klarer Anstieg zu erkennen: Die durchschnittlichen Schuljahre nehmen in allen drei Gruppen zu.
Die Linie der Männer liegt über den gesamten Zeitraum oberhalb der Linie der Frauen. Das bedeutet, dass Männer im Durchschnitt mehr Schuljahre aufweisen. Gleichzeitig nähern sich die Linien im Zeitverlauf etwas an, was auf eine Verringerung des Unterschieds zwischen Frauen und Männern hindeutet.
# Linienplot: Entwicklung des Gender Gaps
plot(
gender_gap_yearly$year,
gender_gap_yearly$mean_gender_gap,
type = "l",
xlab = "Jahr",
ylab = "Durchschnittlicher Gender Gap",
main = "Entwicklung des Gender Gaps über die Zeit"
)
Der Plot zur Entwicklung des Gender Gaps bestätigt diesen Eindruck. Der durchschnittliche Unterschied zwischen Männern und Frauen nimmt im Zeitverlauf ab. Während Männer 1990 im Durchschnitt noch etwa 1,12 Schuljahre mehr aufweisen als Frauen, liegt der Unterschied 2023 nur noch bei etwa 0,56 Schuljahren.
Damit zeigt sich in den Daten eine Annäherung der Bildungsdauer von Frauen und Männern. Der Unterschied ist jedoch im Durchschnitt weiterhin positiv, das heißt Männer haben weiterhin etwas höhere durchschnittliche Schuljahre.
# Boxplot: Verteilung der durchschnittlichen Schuljahre nach Gruppe im Jahr 2023
boxplot(
years_schooling ~ sex,
data = schooling_long %>%
filter(year == 2023, !is.na(code)),
main = "Verteilung der durchschnittlichen Schuljahre nach Gruppe im Jahr 2023",
xlab = "Gruppe",
ylab = "Durchschnittliche Schuljahre"
)
Der Boxplot zeigt die Verteilung der durchschnittlichen Schuljahre im Jahr 2023 für Länder mit vorhandenem Ländercode. Auffällig ist, dass die Streuung bei Frauen größer ist als bei Männern. Das bedeutet, dass sich die Werte der Frauen zwischen den Ländern stärker unterscheiden.
Obwohl der Mittelwert der Männer im Jahr 2023 höher liegt als der Mittelwert der Frauen, liegt der Median der Frauen leicht höher als der Median der Männer. Das deutet darauf hin, dass einige sehr niedrige Werte bei Frauen den Durchschnitt nach unten ziehen. Der Boxplot zeigt damit, dass neben dem Geschlechterunterschied auch die Unterschiede zwischen Ländern eine wichtige Rolle spielen.
# Datensatz für Länderanalyse:
# Es werden nur Beobachtungen mit vorhandenem Ländercode verwendet.
schooling_countries <- schooling_combined %>%
filter(!is.na(code))
# Durchschnittliche Schuljahre 2023 nach Land
country_2023 <- schooling_countries %>%
filter(year == 2023, !is.na(both_genders)) %>%
arrange(both_genders)
# 5 niedrigste und 5 höchste Länder auswählen
lowest_5 <- country_2023 %>%
slice_head(n = 5)
highest_5 <- country_2023 %>%
slice_tail(n = 5)
lowest_highest_5 <- bind_rows(lowest_5, highest_5)
# Balkendiagramm
barplot(
lowest_highest_5$both_genders,
names.arg = lowest_highest_5$country,
main = "Fünf niedrigste und fünf höchste Werte 2023",
xlab = "Land",
ylab = "Durchschnittliche Schuljahre",
las = 2
)
Das Balkendiagramm zeigt die fünf Länder mit den niedrigsten und die fünf Länder mit den höchsten durchschnittlichen Schuljahren im Jahr 2023. Besonders niedrige Werte finden sich unter anderem bei Niger, Mali, Somalia, Burkina Faso und Tschad. Die höchsten Werte erreichen unter anderem Kanada, Island, die USA, die Schweiz und Deutschland.
Der Unterschied zwischen den niedrigsten und höchsten Ländern ist sehr groß. Während Niger im Jahr 2023 nur bei etwa 1,41 durchschnittlichen Schuljahren liegt, erreicht Deutschland etwa 14,30 Schuljahre. Das macht deutlich, dass weltweit erhebliche Unterschiede im Bildungsniveau bestehen.
Insgesamt zeigt die Analyse, dass die durchschnittlichen Schuljahre von Erwachsenen zwischen 1990 und 2023 deutlich gestiegen sind. Für die Gesamtbevölkerung steigt der Durchschnitt von etwa 6,04 Schuljahren im Jahr 1990 auf etwa 9,13 Schuljahre im Jahr 2023.
Gleichzeitig zeigen die Daten Unterschiede zwischen Frauen und Männern. Männer weisen im Durchschnitt höhere Schuljahre auf, allerdings verringert sich der Gender Gap im Zeitverlauf. Der durchschnittliche Unterschied sinkt von etwa 1,12 Schuljahren im Jahr 1990 auf etwa 0,56 Schuljahre im Jahr 2023.
Besonders deutlich sind außerdem die Unterschiede zwischen Ländern. Im Jahr 2023 liegen die niedrigsten Länderwerte bei unter 2 Schuljahren, während die höchsten Länderwerte bei über 14 Schuljahren liegen. Der Datensatz zeigt damit sowohl langfristige Bildungsfortschritte als auch weiterhin bestehende internationale und geschlechtsspezifische Unterschiede.