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.
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
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.
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.
nrow(data1)
## [1] 187875
ncol(data1)
## [1] 11
Im Datensatz sind 187875 Zeilen und 11 Spalten.
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 |
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, …
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.
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"…
sum(is.na(data_clean))
## [1] 180223
Bei 180223 Zellen im Datensatz ist kein Wert angegeben.
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.
sum(is.na(data_clean$OBS_VALUE))
## [1] 4684
In 4684 Fällen fehlt der Prozentwert der Computerkenntnisse.
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.
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.
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.
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.
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.
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.
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.
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.
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ß.
de_eu_compare <- data_clean %>%
filter(
geo %in% c("DE", "EU27_2020"),
TIME_PERIOD == 2025,
!is.na(OBS_VALUE)
)
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.
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.
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.
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.
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.
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.