Λήψη, επεξεργασία και οπτικοποίηση δεδομένων της Ευρωπαϊκής Στατιστικής Αρχής (Eurostat)

Παραδείγματα με δεδομένα εκπαίδευσης

Αρχικοποίηση - βιβλιοθήκες

TipΒιβλιοθήκες

Για τον χειρισμό των δεδομένων της Eurostat και την οπτικοποίησή τους σε γραφήματα και διαδραστικούς χάρτες θα χρειαστεί η φόρτωση των παρακάτω βιβλιοθηκών στο περιβάλλον της R:

library(tidyverse)
library(eurostat)
library(sf)
library(scales)
library(ggthemes)
library(ggtext)
library(leaflet)
library(leaflet.extras)
library(leaflet.extras2)
library(DT)

Η βάση δεδομένων της Eurostat

Η EUROSTAT συλλέγει, επεξεργάζεται και διαθέτει μια μεγάλη πληθώρα δεδομένων. Η βάση δεδομένων της μπορεί να προσπελαστεί από εδώ: https://ec.europa.eu/eurostat/data/database

Η διεπαφή της EUROSTAT δεν διαθέτει κάποια αναλυτική θεματική ενότητα για θέματα εκπαίδευσης. Ωστόσο, κάτω από τη θεματική ενότητα Population and social conditions και μέσα στην υποενότητα Education and training παρέχει πλήθος στοιχείων εκπαιδευτικού ενδιαφέροντος, τόσο σε εθνικό, όσο και σε πανευρωπαϊκό επίπεδο. Όπως σε όλα τα σύνολα δεδομένων της EUROSTAT παρέχονται επίσης μέσες τιμές αναφοράς για όλη την Ευρωπαϊκή Ένωση.

Η δομή SDMX των δεδομένων

Κάθε σύνολο δεδομένων της EUROSTAT έχει τουλάχιστον τρεις μεταβλητές: - geo, γεωγραφικός προσδιορισμός, μπορεί να είναι χώρα, περιφέρεια, ή υπερεθνική οντότητα (π.χ. Ευρωπαϊκή Ένωση) - TIME_PERIOD, χρονικός προσδιορισμός, μπορεί είναι έτος, τρίμηνο ή μήνας αναφοράς σε μορφή ISO YYYY-MM-DD. - values η τιμή αναφοράς (αριθμός)

Είναι πολύ πιθανό κάθε τιμή να συνοδεύεται και από άλλες προσδιοριστικές μεταβλητές. Για παράδειγμα - freq, η συχνότητα μέτρησης (ετήσια, τριμηνιαία, κ.λπ.) - sex, το φύλο - age, η ηλικιακή ομάδα - isced11, το επίπεδο εκπαίδευσης - unit, η μονάδα μέτρησης, π.χ. PC αν είναι ποσοστό, ή NR αν είναι πλήθος ατόμων, και διάφορα άλλα κατά περίπτωση.

Παράδειγμα λήψης δεδομένων

Ο πλέον εύκολος και ενδεδειγμένος τρόπος λήψης των δεδομένων της EUROSTAT είναι με τη χρήση του πακέτου eurostat. Για παράδειγμα [Pupils in early childhood and primary education by education level and age - as % of corresponding age population] (https://doi.org/10.2908/EDUC_UOE_ENRP07)

Ο πίνακας educ_uoe_enrp07 παρέχει στοιχεία για το ποσοστό νεαρών παιδιών (στο σύνολο του πληθυσμού της ηλικίας τους) που βρίσκονται σε κάποια δομή εκπαίδευσης (παιδικός σταθμός, νηπιαγωγείο, κ.λπ.). Η λήψη όλου του πίνακα δεδομένων μπορεί να γίνει με την εντολή:

eprp07 <- get_eurostat("educ_uoe_enrp07")

indexed 0B in  0s, 0B/s
indexed 2.15GB in  0s, 2.15GB/s
                                                                              

Το οποίο μπορούμε να εξετάσουμε στη συνέχεια:

datatable(eprp07) 

Τροποποίηση ημερομηνιών

Τα δεδομένα εκπαίδευσης έρχονται πάντοτε σε ετήσια συχνότητα. Για λόγους ευκολίας μπορούμε να μετατρέψουμε τη χρονολογική σήμανση σε αριθμό:

eprp07 <- get_eurostat("educ_uoe_enrp07", time_format = "num") %>% 
  rename(Year = TIME_PERIOD)

indexed 0B in  0s, 0B/s
indexed 2.15GB in  0s, 2.15GB/s
                                                                              

Οπτικοποίηση δεδομένων σε χρονοσειρές

Εφόσον έχουμε τον πίνακα δεδομένων μπορούμε να οπτικοποιήσουμε τα δεδομένα, εφόσον πρώτα τα φιλτράρουμε κατάλληλα. Η δομή SDMX των αρχείων που λαμβάνουμε έχει πάντοτε μία στήλη με αριθμητικά δεδομένα. Αν για παράδειγμα θέλουμε το ποσοστό παιδιών στην Ελλάδα ηλικίας 4 ετών που βρίσκονται σε νηπιαγωγείο θα γράψουμε:

eprp07 %>% 
  filter(age == "Y4") %>% 
  filter(geo == "EL")

Ή αν θέλαμε να συμπεριλάβουμε το αντίστοιχο ποσοστό του μέσου όρου της Ευρωπαϊκής Ένωσης:

eprp07 %>% 
  filter(age == "Y4") %>% 
  filter(geo %in% c("EL", "EU27_2020"))

Κάτι που μπορούμε να εξετάσουμε γραφικά ως εξής:

eprp07 %>% 
  filter(age == "Y4") %>% 
  filter(isced11 == "ED0") %>% 
  filter(geo %in% c("EL", "EU27_2020")) %>% 
  ggplot() +
  aes(x = Year, y = values, color = geo) +
  geom_line(linewidth = 1) +
  scale_x_continuous(breaks = pretty_breaks(5)) +
  scale_y_continuous(breaks = pretty_breaks(5)) +
  scale_color_stata() +
  labs(y = "", color = "", title = "Ποσοστό παιδιών 4 ετών σε νηπιαγωγείο") +
  theme_pander()

Ή ανάλογα να συγκρίνουμε διαφορετικές χώρες:

eprp07 %>% 
  filter(age == "Y4") %>% 
  filter(isced11 == "ED0") %>% 
  filter(geo %in% c("EL", "PT", "BE")) %>% 
  ggplot() +
  aes(x = Year, y = values, color = geo) +
  geom_line(linewidth = 1) +
  scale_x_continuous(breaks = pretty_breaks(5)) +
  scale_y_continuous(breaks = pretty_breaks(5)) +
  scale_color_stata() +
  labs(y = "", color = "", title = "Ποσοστό παιδιών 4 ετών σε νηπιαγωγείο") +
  theme_pander()

Απεικόνιση σε χάρτη

Για τον απεικόνιση των δεδομένων σε χάρτη η EUROSTAT παρέχει τα αντίστοιχα χαρτογραφικά υπόβαθρα ως εξής:

shp0 <-get_eurostat_geospatial(nuts_level = 0, resolution = 10)

όπου με την επιλογή nuts_level = 0 έχουμε λήψη εθνικών συνόρων και με την επιλογή resolution = 10 έχουμε λήψη πολυγώνων σε μέτρια ανάλυση. Ο γεωγραφικός προσδιορισμός id είναι ίδιος με τον αντίστοιχο κωδικό geo του πίνακα δεδομένων και είναι η μόνη πληροφορία που χρειαζόμαστε. Επομένως είναι προτιμότερο να εκτελέσουμε την εντολή ως εξής:

shp0 <- get_eurostat_geospatial(nuts_level = 0, resolution = 10) %>% 
  select(geo = id, geometry)

Δεδομένα σε χάρτη

Για την απεικόνιση σε χάρτη θα χρειαστεί να φιλτράρουμε τα δεδομένα ως προς μία χρονική περίοδο, π.χ., την τελευταία διαθέσιμη τιμή ανά χώρα:

eprp07 %>% 
  filter(age == "Y4") %>% 
  filter(isced11 == "ED0") %>% 
  group_by(geo) %>% 
  filter(Year == max(Year)) %>%
  ungroup()

Υπενθυμίζουμε πως η EUROSTAT δεν τοποθετεί κενές (NA) τιμές σε πίνακες. Αν μια παρατήρηση λείπει, τότε δεν θα υπάρχει η αντίστοιχη εγγραφή.

Στη συνέχεια μπορούμε να αναπαστήσουμε τα δεδομένα σε χάρτη ως εξής:

DF <- eprp07 %>% 
  filter(age == "Y4") %>% 
  filter(isced11 == "ED0") %>% 
  group_by(geo) %>% 
  filter(Year == max(Year)) %>%
  ungroup() %>% 
  select(geo, values) %>% 
  right_join(shp0, by = "geo") %>% 
  st_as_sf()

ggplot(DF) +
  aes(fill = values) +
  geom_sf() +
  NULL

Μπορούμε καλύτερα να εστιάσουμε στον Ευρωπαϊκό χώρο και να βελιτώσουμε τον χάρτη ως εξής:

ggplot(DF) +
  aes(fill = values) +
  geom_sf(linewidth = 0.25, color = "black") +
  labs(title = "Ποσοστό παιδιών 4 ετών σε νηπιαγωγείο") +
  scale_x_continuous(limits = c(-22.2, 44), expand = c(0.1, 0.1)) +
  scale_y_continuous(limits = c(32.5, 68.5), expand = c(0.1, 0)) +
  scale_fill_gradient_tableau(
      palette = "Brown",
      #limits = c(0, 4),
      na.value = "#fcfcfc",
      name = NULL, 
      breaks = pretty_breaks(5),
      guide = guide_colorbar(
        direction = "horizontal",
        label.position = "bottom",
        title.position = "top",
        ticks = TRUE,
        nbin = 10,
        ticks.linewidth = 1.5/.pt,
        barwidth = grid::unit(15, "cm"),
        barheight = grid::unit(0.3, "cm")
      )
    ) +
    theme_map(base_size = 18) +
  NULL

Reuse

BY-SA