DCProject.Rmd

- Titelseite
- Lernziel
- Info
- Datenbasis
- Datentabelle
- Anwendungsdomäne
- Datenerhebung
- Beschreibung des Datensatzes
- Hypothesen
- Datenaufbereitung
- Wie können Daten eingelesen werden
- Wie können Inkosistenzen und Leerstellen behoben werden
- Datenanalyse
- Eigenschaften der Daten
- Hypothesentest
- Ergebnispräsentation
- Teaminfos
title: "Tutorial Data Science"
author: |
|Projektgruppe 01
|Martin Hustoles
|Marcel Kehrberg
|Kevin Kirsten
date: "Abgabedatum: 03.07.2023"
output:
learnr::tutorial:
toc: true
toc_depth: 1
theme: cerulean
runtime: shiny_prerendered
library(learnr)
library(readxl)
library(knitr)
library(dplyr)
current_dir = getwd()
data <- read_excel(file.path(current_dir, "Datensatz.xlsx"))
Titelseite
Lernziel
Ziel dieses Tutorial ist es, ein interaktives Tool aufzubauen um einen Teil der in der Vorlesung vermittelten Inhalte zu vermitteln und gleichzeitig unsere Datenbasis passend aufzubereiten,zu analysieren und die Ergebnisse zu visualisieren.
Info
Modul: Data Science
Semester: SS23
Dozent: Uwe Kloos
Projektgruppe: 01
Gruppenmitglieder: Martin Hustoles, Marcel Kehrberg, Kevin Kirsten
Abgabedatum: 03.07.2023
Datenbasis
Datentabelle
Semester | Deutsche | Ausländer | Insgesamt | ||||||
---|---|---|---|---|---|---|---|---|---|
männlich | weiblich | Insgesamt | männlich | weiblich | Insgesamt | männlich | weiblich | Insgesamt | |
WS 1998/99 | 907403 | 727254 | 1634657 | 92321 | 73673 | 165994 | 999724 | 800927 | 1800651 |
WS 1999/00 | 872178 | 723246 | 1595424 | 95460 | 79605 | 175065 | 967638 | 802851 | 1770489 |
WS 2000/01 | 870016 | 741820 | 1611836 | 99906 | 87121 | 187027 | 969922 | 828941 | 1798863 |
WS 2001/02 | 887462 | 774628 | 1662090 | 107831 | 98410 | 206241 | 995293 | 873038 | 1868331 |
WS 2002/03 | 903218 | 808567 | 1711785 | 117205 | 109821 | 227026 | 1020423 | 918388 | 1938811 |
WS 2003/04 | 935718 | 837611 | 1773329 | 125826 | 120310 | 246136 | 1061544 | 957921 | 2019465 |
WS 2004/05 | 901979 | 814795 | 1716774 | 124220 | 122114 | 246334 | 1026199 | 936909 | 1963108 |
WS 2005/06 | 912696 | 824712 | 1737408 | 124447 | 123910 | 248357 | 1037143 | 948622 | 1985765 |
WS 2006/07 | 909740 | 822934 | 1732674 | 122923 | 123446 | 246369 | 1032663 | 946380 | 1979043 |
WS 2007/08 | 898061 | 809738 | 1707799 | 116700 | 116906 | 233606 | 1014761 | 926644 | 1941405 |
WS 2008/09 | 938552 | 847612 | 1786164 | 119254 | 119889 | 239143 | 1057806 | 967501 | 2025307 |
WS 2009/10 | 984097 | 892306 | 1876403 | 122353 | 122422 | 244775 | 1106450 | 1014728 | 2121178 |
WS 2010/11 | 1031086 | 934176 | 1965262 | 126399 | 125633 | 252032 | 1157485 | 1059809 | 2217294 |
WS 2011/12 | 1122200 | 993482 | 2115682 | 133172 | 132120 | 265292 | 1255372 | 1125602 | 2380974 |
WS 2012/13 | 1171894 | 1045314 | 2217208 | 142123 | 140078 | 282201 | 1314017 | 1185392 | 2499409 |
WS 2013/14 | 1218965 | 1096566 | 2315531 | 152675 | 148675 | 301350 | 1371640 | 1245241 | 2616881 |
WS 2014/15 | 1245029 | 1132312 | 2377341 | 163505 | 158064 | 321569 | 1408534 | 1290376 | 2698910 |
WS 2015/16 | 1260203 | 1157291 | 2417494 | 173923 | 166382 | 340305 | 1434126 | 1323673 | 2757799 |
WS 2016/17 | 1269166 | 1178949 | 2448115 | 184459 | 174436 | 358895 | 1453625 | 1353385 | 2807010 |
WS 2017/18 | 1270098 | 1200297 | 2470395 | 194545 | 180038 | 374583 | 1464643 | 1380335 | 2844978 |
WS 2018/19 | 1258281 | 1215276 | 2473557 | 207697 | 186968 | 394665 | 1465978 | 1402244 | 2868222 |
WS 2019/20 | 1246852 | 1232596 | 2479448 | 218015 | 193586 | 411601 | 1464867 | 1426182 | 2891049 |
WS 2020/21 | 1253399 | 1274309 | 2527708 | 222967 | 193470 | 416437 | 1476366 | 1467779 | 2944145 |
WS 2021/22 | 1231256 | 1270095 | 2501351 | 235026 | 205538 | 440564 | 1466282 | 1475633 | 2941915 |
Anwendungsdomäne
Bildung.
Es kann eingesehen werden, wie viele Studierende jeweils in den Wintersemestern zwischen 98/99 und 21/22 an Deutschen Hochschulen/Universitäten eingeschrieben waren.
Es wird Unterteilt in Deutsche und Ausländische, sowie Männliche und Weibliche Student/Innen.
Man kann einsehen wie sich die Anzahl der Studierenden in Deutschland, sowie der Anteil an Deutschen/Ausländischen und Männlichen/Weiblichen Studend/Innen entwickelt hat.
Datenerhebung
Primärdaten des Statistischen Bundesamts. Vollerhebung. Zeitreihen.
Link zur Quelle: https://www-genesis.destatis.de/genesis/online?operation=table&code=21311-0001&bypass=true&levelindex=1&levelid=1680177866354#abreadcrumb
Beschreibung des Datensatzes
Merkmal | Datentyp | Merkmalsausprägung | Klassifizierung | Skalierung |
---|---|---|---|---|
Semester | String | Quantitativ | Diskret | Nominal |
Deutsche/männlich | Integer | Quantitativ | Diskret | Metrisch |
Deutsche/weiblich | Integer | Quantitativ | Diskret | Metrisch |
Deutsche/Insgesamt | Integer | Quantitativ | Diskret | Metrisch |
Ausländer/männlich | Integer | Quantitativ | Diskret | Metrisch |
Ausländer/weiblich | Integer | Quantitativ | Diskret | Metrisch |
Ausländer/insgesamt | Integer | Quantitativ | Diskret | Metrisch |
Insgesamt/männlich | Integer | Quantitativ | Diskret | Metrisch |
Insgesamt/weiblich | Integer | Quantitativ | Diskret | Metrisch |
Insgesamt | Integer | Quantitativ | Diskret | Metrisch |
Merkmalsträger: 24
Merkmale: 10
Größe des Datensatzes: 24 Zeilen und 10 Spalten
Hypothesen
- Die Anzahl der Ausländischen Studenten in Deutschland hat sich seit dem WS 00/01 verdoppelt.
- Der %-Anteil an studierenden Frauen (insgesamt) gegenüber studierenden Männern (insgesamt) hat sich seit dem WS 98/99 stetig erhöht.
Datenaufbereitung
Wie können Daten eingelesen werden
Es können verschiedene Datenvormate eingelesen werden, z.B CSV, XLSX
-
Daten aus einer CSV-Datei einlesen
Video Tutorial für CSV-Dateien
es gibt zwei Funktionen zum einlesen einer CSV-Datei
- read.csv wird verwendet wenn Dezimalzahlen mit einem Punkt "." getrennt werden und Spalten durch ein Komma ",".
- read.csv2 wird verwendet wenn Dezimalzahlen durch eine Komma "," getrennt werden und Spalten durch ein Semikolon ";".
In diesem Beispiel wird der dataframe daten_csv erstellt durch die Datei mit dem Namen daten.csv zusätzlich werden dann Fehlende Werte durch na="NA" aufgefüllt.
Wenn die Datei im Arbeitsverzeichnis ist
daten_csv <- read.csv2("daten.csv", na="NA")
Wenn die Datei auserhalb des Arbeitsverzeichnis ist
daten_csv <- read.csv2("C:/Dokumente/daten.csv", na="NA")
Wenn man den Pfad erst nach dem ausführen angeben will kann man auch
daten_csv <- read.csv2(file.choose(), na="NA")
nuzen dort wird nach dem ausführen ein Fenster geöffnet bei dem man die Datei dann im Explorer auswählen kann.
An die read.csv bzw read.csv2 können noch weitere Parameter Hinzugefügt werden z.B.
na="NA" Dadruch werden fehlende Werte spezifiziert damit R diese nicht für Berechnungen verwendet dec="," Dadurch wird das Trennzeichen für Dezimalzahlen festgelegt zum einlesen sep=";" Dadurch wird das Trennzeichen das die Werte in einer Zeile Seperiert festgelegt zum einlesen
-
Daten für eine XLSX Datei einlesen
Video Tutorial für XLSX-Dateien
Hier wird an stelle von read.csv bzw read.csv2 read_exel verwendet
davor muss aber mit
install.packages("readxl")
Das benötigte Packert installiert werden und mit
libary (readxl)
das Packet engebunden werden um die read Funktion verwenden zu können
hier gibt es aber nicht die Argumente wie bei csv auser
na="NA"
question("Jetzt bist du dran! Angenommen du möchtest eine .CSV Datei einlesen die im selben Arbeitsverzeichnis liegt, in der Dezimalzahlen mit einem . getrennt werden und fehlende Werte mit NA ausgefüllt werden sollen. Wie gehst du vor?",
answer('daten_csv <- read.csv("daten.csv")'),
answer('daten_csv <- read.csv2(file.choose(), na = "NA")'),
answer('daten_csv <- read.csv("daten.csv", na = "NA")', correct = TRUE),
answer('daten_csv <- read.csv2("daten.csv", na = "NA")')
)
Wie können Inkosistenzen und Leerstellen behoben werden
Fälle mit fehlende Werten in R löschen
Durch die Funktion na.omit() können Zeilen entfernt werden in denen Fehlerhafte Werte stehen.
Im Beispiel hier werden alle Zeilen mit na werten vom dataframe daten entfernt und im dataframe gesaueberte_daten abgelegt
gesaueberte_daten <- na.omit(daten)
Um fehlende Werte direkt bei der Berechnung zu behandeln kann na.rm benutzt werden. Wenn es auf TRUE gesetzt ist überspringt es NA werte. Folgende Funktionen können na.rm nutzen
colSums()
rowSums()
colMeans()
rowMeans()
Beispiel für die Anwendung von na.rm
narmtest <- read.csv("narmtest.csv", na="NA")
narmtest
rowSums(narmtest, na.rm = TRUE,)
Datenanalyse
Information: Die hier dargestellten Tabellen beinhalten zur Veranschaulichung jeweils nur die ersten 10 Zeilen. Unser Datensatz besteht aus 24 Zeilen.
Hier ist unser tatsächlicher Datensatz aus der Excel-Datei:
kable(head(data,10))
question("Jetzt bist du dran! Wie müssten wir den Befehl umändern, um nur mit der Anzahl der Deutschen Männlichen und Weiblichen Studend:innen weiterzuarbeiten?",
answer("selected_data <- data[3:2,])"),
answer("selected_data <- data[5:9,]"),
answer("selected_data <- data[ ,8:9]", correct = TRUE),
answer("selected_data <- data[ ,1:2]")
)
Eigenschaften der Daten
Nun können wir Eigenschaften wie Mittelwert, Median, Varianz und die Standartabweichung berechnen. Dazu nutzen wir die 8. und 9. Spalte. Diese enthalten die gesamte Anzahl der Männlichen und Weiblichen Student:innen der Jahre:
#echo = FALSE, da dieses Statement ansonst ausgegeben wird. Das würde naehmlich keinen Sinn machen, da das Quiz genau dieses Statement abfragen soll
selected_data <- data[ ,8:9]
kable(head(selected_data, 10))
Wir teilen die Daten in männlich und weiblich. Zusätzlich werden die Spalten etwas konvertiert:
data_male <- as.numeric(unlist(selected_data[-1 ,1]))
data_female <- as.numeric(unlist(selected_data[-1 ,2]))
print(data_male)
Und Berechnen:
Den Mittelwert:
print(paste("Mittelwert male: ", mean(data_male), "Mittelwert female: ", mean(data_female)))
Den Median:
print(paste("Median male: ", median(data_male), "Median female: ", median(data_female)))
Die Varianz:
print(paste("Varianz male: ", var(data_male), "Varianz female: ", var(data_female)))
und die Standartabweichung:
print(paste("Std. Abweichung male: ", sd(data_male), "Std. Abweichung female: ", sd(data_female)))
Hypothesentest
In der Datenbasis haben wir 2 Hypothesen aufgestellt:
- Die Anzahl der Ausländischen Studenten in Deutschland hat sich seit dem WS 00/01 verdoppelt.
- Der %-Anteil an studierenden Frauen (insgesamt) gegenüber studierenden Männern (insgesamt) hat sich seit dem WS 98/99 stetig erhöht.
Für die erste Hypothese müssen wir lediglich die Summe der Ausländischen Student:innen vom Wintersemester 2000 mit dem aktuellstem Wintersemester vergleichen und schauen, ob der Wert vom Aktuellen Semester größer oder gleich doppelt so groß ist wie vom altem Wintersemester:
old_ws <- as.numeric(data[2,7])
new_ws <- as.numeric(data[25,7])
faktor <- 2
old_ws_double <- old_ws * faktor
print(paste("Stimmt es, dass die Anzahl an ausländischen Student:innen sich seid dem WS 2000 mindestens verdoppelt hat: ", new_ws >= old_ws_double))
Für die 2. Hypothese können wir die Lineare Regression und die Koeffizienz berechnen.
daten <- data.frame(
Jahr = c(1998:2021),
Frauen = c(as.numeric(unlist(data[2:25 ,9]))),
Männer = c(as.numeric(unlist(data[2:25 ,8])))
)
kable(daten$Frauen)
daten$Frauen_Anteil <- daten$Frauen / (daten$Frauen + daten$Männer) * 100
daten$Männer_Anteil <- daten$Männer / (daten$Frauen + daten$Männer) * 100
trend_f <- lm(Frauen_Anteil ~ Jahr, data = daten)
trend_m <- lm(Männer_Anteil ~ Jahr, data = daten)
print(coef(trend_f))
print(coef(trend_m))
Ergebnispräsentation
In der Datenanalyse haben wir bei der 2. Hypothese geschaut, ob die Anzahl an Frauen im vergleich zu Männern stetig erhöt hat. Hierzu eine Visualisierung:
plot(daten$Jahr, daten$Frauen_Anteil, xlab = "Jahr", ylab = "% Anteil Frauen", main = "Trend der Frauenanteile")
abline(trend_f, col = "red")
plot(daten$Jahr, daten$Männer_Anteil, xlab = "Jahr", ylab = "% Anteil Männer", main = "Trend der Männeranteile")
abline(trend_m, col = "blue")
Wie man sieht ist es tatsächlich so, dass der Frauenanteil stetig gestiegen ist, im vergleich zum Männeranteil.
Teaminfos
Wer hat was erstellt/implementiert:
Martin Hustoles: Datenanalyse, Ergebnispräsentation
Marcel Kehrberg: Datenaufbereitung
Kevin Kirsten: Layout, Titelseite, Datenbasis