Niveau der Computerkenntnisse von Einzelpersonen in Europa

Der Datensatz „Niveau der Computerkenntnisse von Einzelpersonen (ab 2021)” beschäftigt sich mit Computerkenntnissen von Personen in verschiedenen europäischen Ländern. Er enthält Angaben dazu, welche computerbezogenen Kompetenzen Personen besitzen bzw. welche Aufgaben sie am Computer ausführen können. Die Werte basieren auf Selbstauskünften der Befragten und zeigen damit, wie verbreitet bestimmte Computerkenntnisse in der Bevölkerung sind. Im Rahmen dieser Analyse soll vor allem betrachtet werden, wie sich die Werte zwischen den Ländern unterscheiden und wie Deutschland im Vergleich zum EU-Durchschnitt abschneidet.

Vorbereitung der Daten

Pakete laden

library(readr)
library(dplyr)
## 
## Attache Paket: 'dplyr'
## Die folgenden Objekte sind maskiert von 'package:stats':
## 
##     filter, lag
## Die folgenden Objekte sind maskiert von 'package:base':
## 
##     intersect, setdiff, setequal, union

CSV-Datensatz einlesen

data1 <- read_csv("C:\\Users\\susan\\OneDrive\\Dokumente\\PH ELMEB\\Modul 8\\Data Science\\Mini Projekt\\Datensatz.csv.csv")
## Rows: 187875 Columns: 11
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (8): DATAFLOW, LAST UPDATE, freq, ind_type, indic_is, unit, geo, OBS_FLAG
## dbl (2): TIME_PERIOD, OBS_VALUE
## lgl (1): CONF_STATUS
## 
## ℹ 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.

Erste Einblicke/Ansicht

head(data1)
## # A tibble: 6 × 11
##   DATAFLOW         `LAST UPDATE` freq  ind_type indic_is unit  geo   TIME_PERIOD
##   <chr>            <chr>         <chr> <chr>    <chr>    <chr> <chr>       <dbl>
## 1 ESTAT:ISOC_SK_C… 17/04/26 11:… A     CB_EU_F… I_CCONF1 PC_I… AT           2021
## 2 ESTAT:ISOC_SK_C… 17/04/26 11:… A     CB_EU_F… I_CCONF1 PC_I… AT           2023
## 3 ESTAT:ISOC_SK_C… 17/04/26 11:… A     CB_EU_F… I_CCONF1 PC_I… AT           2025
## 4 ESTAT:ISOC_SK_C… 17/04/26 11:… A     CB_EU_F… I_CCONF1 PC_I… BE           2021
## 5 ESTAT:ISOC_SK_C… 17/04/26 11:… A     CB_EU_F… I_CCONF1 PC_I… BE           2023
## 6 ESTAT:ISOC_SK_C… 17/04/26 11:… A     CB_EU_F… I_CCONF1 PC_I… BE           2025
## # ℹ 3 more variables: OBS_VALUE <dbl>, OBS_FLAG <chr>, CONF_STATUS <lgl>

Der Datensatz ist ein Rohdatensatz und noch sehr unübersichtlich.

Anzahl der Zeilen und Spalten

nrow(data1)
## [1] 187875
ncol(data1)
## [1] 11

Im Datensatz sind 187875 Zeilen und 11 Spalten.

Namen der Variablen

names(data1)
##  [1] "DATAFLOW"    "LAST UPDATE" "freq"        "ind_type"    "indic_is"   
##  [6] "unit"        "geo"         "TIME_PERIOD" "OBS_VALUE"   "OBS_FLAG"   
## [11] "CONF_STATUS"

Es gibt elf Variablen. Die wichtigsten Variablen für diese Analyse sind:

Variable Bedeutung im Datensatz
geo Länder- bzw. Regionscode, z. B. DE für Deutschland oder EU27_2020 für den EU-27-Durchschnitt
TIME_PERIOD Jahr der Beobachtung
indic_is Indikator für eine bestimmte Computerkompetenz
ind_type betrachtete Personengruppe
unit Einheit, in der der Wert angegeben wird
OBS_VALUE eigentlicher Beobachtungswert, hier der Prozentwert (Wie viel Prozent der Beobachteten Personen in dem Land haben die jeweilige Computerkompetenz?)
OBS_FLAG Qualitätskennzeichen oder Hinweis zur Beobachtung

Struktur des Datensatzes prüfen

glimpse(data1)
## Rows: 187,875
## Columns: 11
## $ DATAFLOW      <chr> "ESTAT:ISOC_SK_CSKL_I21(1.0)", "ESTAT:ISOC_SK_CSKL_I21(1…
## $ `LAST UPDATE` <chr> "17/04/26 11:00:00", "17/04/26 11:00:00", "17/04/26 11:0…
## $ freq          <chr> "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "…
## $ ind_type      <chr> "CB_EU_FOR", "CB_EU_FOR", "CB_EU_FOR", "CB_EU_FOR", "CB_…
## $ indic_is      <chr> "I_CCONF1", "I_CCONF1", "I_CCONF1", "I_CCONF1", "I_CCONF…
## $ unit          <chr> "PC_IND", "PC_IND", "PC_IND", "PC_IND", "PC_IND", "PC_IN…
## $ geo           <chr> "AT", "AT", "AT", "BE", "BE", "BE", "BG", "BG", "BG", "C…
## $ TIME_PERIOD   <dbl> 2021, 2023, 2025, 2021, 2023, 2025, 2021, 2023, 2025, 20…
## $ OBS_VALUE     <dbl> 55.80, 48.65, 47.55, 22.37, 39.63, 36.29, NA, 40.04, NA,…
## $ OBS_FLAG      <chr> NA, NA, NA, NA, NA, NA, "u", "u", "u", NA, NA, NA, NA, "…
## $ CONF_STATUS   <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …

Bereinigung des Datensatzes

Auswahl relevanter Spalten/Variablen

data_clean <- data1 %>%
  select(freq, ind_type, indic_is, unit, geo, TIME_PERIOD, OBS_VALUE, OBS_FLAG)

Für die explorative Analyse werden nur die Variablen ausgewählt, die inhaltlich relevant sind. Technische Variablen wie DATAFLOW, LAST UPDATE und CONF_STATUS werden nicht weiter benötigt.

Struktur des bereinigten Datensatzes

glimpse(data_clean)
## Rows: 187,875
## Columns: 8
## $ freq        <chr> "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"…
## $ ind_type    <chr> "CB_EU_FOR", "CB_EU_FOR", "CB_EU_FOR", "CB_EU_FOR", "CB_EU…
## $ indic_is    <chr> "I_CCONF1", "I_CCONF1", "I_CCONF1", "I_CCONF1", "I_CCONF1"…
## $ unit        <chr> "PC_IND", "PC_IND", "PC_IND", "PC_IND", "PC_IND", "PC_IND"…
## $ geo         <chr> "AT", "AT", "AT", "BE", "BE", "BE", "BG", "BG", "BG", "CY"…
## $ TIME_PERIOD <dbl> 2021, 2023, 2025, 2021, 2023, 2025, 2021, 2023, 2025, 2021…
## $ OBS_VALUE   <dbl> 55.80, 48.65, 47.55, 22.37, 39.63, 36.29, NA, 40.04, NA, 2…
## $ OBS_FLAG    <chr> NA, NA, NA, NA, NA, NA, "u", "u", "u", NA, NA, NA, NA, "b"…

Fehlende Werte

Fehlende Werte insgesamt prüfen

sum(is.na(data_clean))
## [1] 180223

Bei 180223 Zellen im Datensatz ist kein Wert angegeben.

Fehlende Werte pro Spalte prüfen

colSums(is.na(data_clean))
##        freq    ind_type    indic_is        unit         geo TIME_PERIOD 
##           0           0           0           0           0           0 
##   OBS_VALUE    OBS_FLAG 
##        4684      175539

Die fehlenden Werte treten vor allem in zwei Spalten auf:

In OBS_VALUE: Hier fehlt der eigentliche Prozentwert der Beobachtung. Diese fehlenden Werte sind für die Analyse besonders relevant, weil ohne Messwert keine Berechnung möglich ist.

In OBS_FLAG: Hier bedeutet ein fehlender Wert, dass kein besonderes Qualitätskennzeichen vorhanden ist. Das ist weniger problematisch, da das nicht der eigentliche Messwert ist.

Fehlende Werte in der wichtigen Wertespalte prüfen

sum(is.na(data_clean$OBS_VALUE))
## [1] 4684

In 4684 Fällen fehlt der Prozentwert der Computerkenntnisse.

EU-27 und Länder trennen

Der Datensatz enthält neben einzelnen Ländern auch aggregierte Werte, zum Beispiel EU27_2020. Dieser Wert beschreibt den Durchschnitt der 27 EU-Mitgliedstaaten für die jeweilige Computerkenntnisse in einem Messjahr. Für Länderanalysen soll dieser aggregierte Wert nicht mit einzelnen Ländern vermischt werden. Deshalb werden zwei getrennte Datensätze erstellt.

Separater Datensatz nur für den EU Durchschnitt

data_eu27 <- data_clean %>%
  filter(geo == "EU27_2020")
head(data_eu27)
## # A tibble: 6 × 8
##   freq  ind_type  indic_is unit       geo       TIME_PERIOD OBS_VALUE OBS_FLAG
##   <chr> <chr>     <chr>    <chr>      <chr>           <dbl>     <dbl> <chr>   
## 1 A     CB_EU_FOR I_CCONF1 PC_IND     EU27_2020        2021      34.8 <NA>    
## 2 A     CB_EU_FOR I_CCONF1 PC_IND     EU27_2020        2023      41.5 <NA>    
## 3 A     CB_EU_FOR I_CCONF1 PC_IND     EU27_2020        2025      41.8 <NA>    
## 4 A     CB_EU_FOR I_CCONF1 PC_IND_IU3 EU27_2020        2021      37.9 <NA>    
## 5 A     CB_EU_FOR I_CCONF1 PC_IND_IU3 EU27_2020        2023      44.7 <NA>    
## 6 A     CB_EU_FOR I_CCONF1 PC_IND_IU3 EU27_2020        2025      44.4 <NA>

Dieser Datensatz wird später verwendet, um Deutschland mit dem EU-27-Durchschnitt zu vergleichen.

Datensatz ohne EU Durschnitte

data_countries <- data_clean %>%
  filter(geo != "EU27_2020")
head(data_countries)
## # A tibble: 6 × 8
##   freq  ind_type  indic_is unit   geo   TIME_PERIOD OBS_VALUE OBS_FLAG
##   <chr> <chr>     <chr>    <chr>  <chr>       <dbl>     <dbl> <chr>   
## 1 A     CB_EU_FOR I_CCONF1 PC_IND AT           2021      55.8 <NA>    
## 2 A     CB_EU_FOR I_CCONF1 PC_IND AT           2023      48.6 <NA>    
## 3 A     CB_EU_FOR I_CCONF1 PC_IND AT           2025      47.6 <NA>    
## 4 A     CB_EU_FOR I_CCONF1 PC_IND BE           2021      22.4 <NA>    
## 5 A     CB_EU_FOR I_CCONF1 PC_IND BE           2023      39.6 <NA>    
## 6 A     CB_EU_FOR I_CCONF1 PC_IND BE           2025      36.3 <NA>

Dieser Datensatz enthält alle Beobachtungen außer dem aggregierten EU-27-Wert und wird für die Länderanalysen genutzt.

Ausschluss der Zeilen ohne Messwerte

data_countries_clean <- data_countries %>%
  filter(!is.na(OBS_VALUE))
data_eu27_clean <- data_eu27 %>%
  filter(!is.na(OBS_VALUE))

Noch Fehlende Werte in OBS_VALUE wurden für die deskriptive Analyse ausgeschlossen, da für diese Beobachtungen kein auswertbarer Messwert vorliegt. Die fehlenden Werte wurden nicht ersetzt, da ein Mittelwert künstliche Werte erzeugen würde. Die Ergebnisse werden daher vorsichtig interpretiert, da fehlende Werte je nach Land, Jahr oder Indikator unterschiedlich häufig auftreten können.

Erste deskriptive Statistiken

Überblick über die Messwerte

summary(data_countries_clean$OBS_VALUE)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   19.68   40.30   40.55   59.90  100.00

Die Zusammenfassung zeigt die Verteilung der Messwerte über alle Länder, Jahre und Indikatoren hinweg. Der kleinste und größte Wert zeigen die Spannweite des Datensatzes und dass es Messungen gibt bei denen der Landesdurchschnitt bei 0% und auch bei 100% Computerkenntnisse gelegen hatte. Mittelwert, Median und die Quartile geben einen ersten Eindruck davon, das die meisten gemessenen Werte eher im Mittleren bis unteren Bereich liegen.

Deskriptive Werte nach Jahr

data_countries_clean %>%
  group_by(TIME_PERIOD) %>%
  summarise(
    n = n(),
    mean_value = mean(OBS_VALUE, na.rm = TRUE),
    median_value = median(OBS_VALUE, na.rm = TRUE),
    min_value = min(OBS_VALUE, na.rm = TRUE),
    max_value = max(OBS_VALUE, na.rm = TRUE)
  )
## # A tibble: 3 × 6
##   TIME_PERIOD     n mean_value median_value min_value max_value
##         <dbl> <int>      <dbl>        <dbl>     <dbl>     <dbl>
## 1        2021 59949       39.9         39.4         0       100
## 2        2023 56367       41.4         41.6         0       100
## 3        2025 61682       40.4         39.9         0       100

Um zu untersuchen, ob sich die durchschnittlichen Werte über die Jahre verändern, wurden die zentrale Kennzahlen pro Jahr berechnet. Diese Tabelle zeigt, wie hoch die durchschnittlichen Werte in den Jahren 2021, 2023 und 2025 sind. Dadurch lässt sich erkennen, das die Werte von 2021 auf 2023 leicht gestiegen, und anschließend bis 2025 wieder etwas gesunken sind.

Visualisierung der Ergebnisse

Verteilung der Werte aller Länder für 2021, 2023 und 2025

boxplot(OBS_VALUE ~ TIME_PERIOD,
        data = data_countries_clean,
        main = "Verteilung der Werte pro Jahr",
        xlab = "Jahr",
        ylab = "Wert")

Der Boxplot zeigt, wie stark die Werte jeweils innerhalb der drei Messjahre streuen.Die Streuung ist über die Jahre recht stabil geblieben.

Wertebereiche aller Länder im Jahr 2025

hist(data_countries_clean$OBS_VALUE[data_countries_clean$TIME_PERIOD == 2025],
     main = "Verteilung der Werte im Jahr 2025",
     xlab = "Wert",
     ylab = "Häufigkeit")

Das Histogramm zeigt, in welchen Wertebereichen besonders viele Beobachtungen liegen. Dadurch lässt sich erkennen, dass im Durschnitt viele sehr niedrige bzw. keine Computerkenntnisse haben. Es gibt ein breites Mittelfeld und hin zu den sehr ausgeprägten Computerkenntnissen gibt es einen starken Abfall der Porzentverteilungen.

Mittelwerte aller Länder pro Jahr

mean_values <- data_countries_clean %>%
  group_by(TIME_PERIOD) %>%
  summarise(mean_value = mean(OBS_VALUE, na.rm = TRUE))
plot(mean_values$TIME_PERIOD, mean_values$mean_value, type = "b",
     xlab = "Jahr",
     ylab = "Durchschnitt",
     main = "Durchschnittlicher Wert aller Länderbeobachtungen pro Jahr")

Hier werden die Mittelwerte aller Länder in den Jahren 2021, 2023 und 2025 in einem Liniendiagramm dargestellt. Durch die Skalierung der Y Achse wirkt der Anstieg und Abfall sehr groß.

Deutschland im Vergleich zum EU-27-Durchschnitt im Jahr 2025

de_eu_compare <- data_clean %>%
  filter(
    geo %in% c("DE", "EU27_2020"),
    TIME_PERIOD == 2025,
    !is.na(OBS_VALUE)
  )

Durchschnitt bilden

de_eu_summary <- de_eu_compare %>%
  group_by(geo) %>%
  summarise(mean_2025 = mean(OBS_VALUE, na.rm = TRUE))
barplot(de_eu_summary$mean_2025,
        names.arg = de_eu_summary$geo,
        main = "Deutschland im Vergleich zum EU-27-Durchschnitt 2025",
        xlab = "Region",
        ylab = "Durchschnittlicher Wert 2025")

Der Vergleich zeigt, dass Deutschland im Jahr 2025 leicht über dem EU-27-Durchschnitt liegt. Auch hier ist zu beachten, dass der Mittelwert über verschiedene Computerkompetenzen und Personengruppen hinweg gebildet wird. Das Ergebnis ist daher als explorativer Gesamtüberblick zu verstehen.

Ranking der besten und schlechtesten Länder im Jahr 2025

country_means_2025 <- data_countries_clean %>%
  filter(TIME_PERIOD == 2025) %>%
  group_by(geo) %>%
  summarise(mean_2025 = mean(OBS_VALUE, na.rm = TRUE)) %>%
  arrange(mean_2025)

Im letzten Analyseschritt wird untersucht, welche Länder im Jahr 2025 die höchsten und niedrigsten durchschnittlichen Werte aufweisen. Dazu wird für jedes Land ein Mittelwert über alle verfügbaren Beobachtungen im Jahr 2025 berechnet.

10 Länder mit den niedrigsten Durchschnittswerten

lowest_10 <- country_means_2025 %>%
  slice_head(n = 10)
barplot(lowest_10$mean_2025,
        names.arg = lowest_10$geo,
        main = "10 niedrigsten Durchschnittswerte 2025",
        xlab = "Land",
        ylab = "Durchschnittlicher Wert 2025",
        las = 2)

Diese Darstellung zeigt, welche Länder im Datensatz im Jahr 2025 die niedrigsten durchschnittlichen Werte aufweisen.

10 Länder mit den höchsten Durchschnittswerten

highest_10 <- country_means_2025 %>%
  slice_tail(n = 10)
barplot(highest_10$mean_2025,
        names.arg = highest_10$geo,
        main = "10 höchsten Durchschnittswerte 2025",
        xlab = "Land",
        ylab = "Durchschnittlicher Wert 2025",
        las = 2)

Diese Darstellung zeigt, welche Länder im Datensatz im Jahr 2025 die höchsten durchschnittlichen Werte aufweisen.

Limitationen

Einschränkend ist zu beachten, dass einige Werte fehlen und somit möglicherweise eine gewisse Verzerrung der Ergebnisse vorliegt. Außerdem wurden in dieser vereinfachten Analyse verschiedene Indikatoren, Einheiten und Personengruppen gemeinsam betrachtet. Dadurch entsteht ein allgemeiner Durchschnittswert, der zur Orientierung geeignet ist, aber keinen offiziellen Gesamtindex darstellt. Außerdem werden keine Ursachen für Unterschiede zwischen Ländern erklärt. Die Analyse beschreibt lediglich erste Muster und Auffälligkeiten im Datensatz.

Für eine vertiefende Analyse könnte man einzelne Computerkompetenzen, bestimmte Altersgruppen oder nur eine bestimmte Einheit gesondert untersuchen. Dadurch ließen sich präzisere Aussagen darüber treffen, in welchen Kompetenzbereichen oder Bevölkerungsgruppen Unterschiede besonders deutlich sind.

Ergebnisse

Die Analyse der erhobenen Daten zu den Computerkenntnissen von Menschen in EU Ländern ab 2021 zeigt über den untersuchten Zeitraum keinen deutlichen Trend. Die Verteilung der Werte bleibt trotz des leichten Anstiegs in 2023 und anschließenden Abfalls nach 2025 insgesamt relativ stabil. Es zeigen sich allerdings deutliche Unterschiede zwischen den Ländern. Während einige Länder konstant höhere Werte erreichen, weisen viele andere Länder deutlich niedrigere Ausprägungen von Computerkenntnissen auf.