# Benötigte Pakete laden
library(readr)
library(dplyr)
library(tidyr)

Einleitung

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.

Datenquelle

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:

Der erste Datensatz enthält Gesamtwerte für Erwachsene. Der zweite Datensatz enthält getrennte Werte für Frauen und Männer.

Datensätze einlesen

# 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 Exploration der Datensätze

# 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.

Vergleich der beiden Datensätze

# 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.

Datensätze kombinieren

# 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

# 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

# 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.

Variablenübersicht und Auffälligkeiten

# 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: Gender Gap

# 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.

Datensatz ins Long-Format bringen

# 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.

Deskriptive Analyse

# Ü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.

Visualisierungen

Entwicklung der durchschnittlichen Schuljahre nach Gruppe

# 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.

Entwicklung des Gender Gaps über die Zeit

# 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.

Verteilung der durchschnittlichen Schuljahre nach Gruppe im Jahr 2023

# 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.

Länder mit den niedrigsten und höchsten Werten im Jahr 2023

# 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.

Fazit

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.