Übung 4#

1. Ablesen der empirischen Verteilungsfunktion#

In der nächsten Grafik sehen Sie eine empirische Verteilungsfunktion. Beantworten Sie zur zugehörigen Stichprobe vom Umfang 80 die folgenden Fragen:

  1. Wie viele Werte der Stichporobe gleich 5?

  2. Wie viele Werte der Stichprobe sind gleich 2?

  3. Wie viele Werte der Stichprobe sind größer als 3?

  4. Bestimmen Sie den Modalwert der Stichprobe.

  5. Berechnen Sie den Mittelwert und die Varianz der Stichprobe. (Lösung: 3.9, 2.926582)

2. Säulendiagramm und Kreisdiagramm#

Betrachten Sie den Datensatz HairEyeColor. Dieser ist vom Typ table und ist als 3-dimensionale (Häufigkeits-)Tabelle zu verstehen.

  1. Verschaffen Sie sich einen Überblick über den Aufbau von HairEyeColor. Nutzen Sie zum Beispiel str() oder HairEyeColor[1,,] oder HairEyeColor[,,1] oder … .

  2. Erstellen Sie ein Kreisdiagramm mit den Häufigkeiten der Haarfarben der Frauen. Passen Sie den Titel an. (Tipp: rowSums() und colSums())

  3. Erstellen Sie ein Säulendiagramm mit den Häufigkeiten der Haarfarben unter allen Personen. Passen Sie den Titel an.

    Zusatz: Schreiben Sie über jede Säule die exakte Anzahl. Nutzen Sie dazu die Funktion text().

  4. Erstellen Sie ein gestapeltes Säulendiagramm, in dem die Häufigkeiten der Haarfarben unter allen Personen angezeigt werden. Diese Säulen sollen in Abschnitte entsprechend der Augenfarben unterteilt werden.

  5. Stellen Sie die Daten aus 5. mit einem gruppierten Säulendiagramm dar.

  6. Was passiert, wenn Sie den Befehl as.data.frame() nutzen um HairEyeColor in einen data.frame zu überführen?

# Platz zum Rechnen

3. Konzentrationsmaße#

Die beiden Bäckereiketten Bäckerei Laugenland und Bäckerei Knack-Korn haben in Dresden verschiedene Filialen. Bäckerei Laugenland hat 12 Filialen und Bäckerei Knack-Korn hat 8 Filialen. Die Umsätze der einzelnen Filialen im letzten Monat sind hier aufgelistet:

Bäckerei Laugenland (Umsätze in 1.000 €):

\[24, 30, 28, 35, 40, 22, 25, 38, 34, 29, 33, 27\]

Bäckerei Knack-Korn (Umsätze in 1.000 €):

\[18, 22, 7, 25, 30, 19, 21, 46\]

Wir möchten (mit Hilfe von R) die Konzentration der Umsätze in den beiden Bäckereiketten untersuchen.

  1. Skizzieren Sie die beiden Lorenzkurven (gemeinsam in ein Diagramm).

  2. Berechnen Sie die beiden normierten Gini-Koeffizienten. (0.1108, 0.2675)

  3. Berechnen Sie jeweils den Herfindahl-Index. (0.08597, 0.14995)

# Platz zum Rechnen

4. Datensätze einlesen#

CSV- und TXT-Dateien#

CSV (Comma Separated Values) und TXT (Textdateien) sind einfache Formate, um tabellarische Daten zu speichern. Sie bestehen aus Zeilen und Spalten, ähnlich wie in einer Tabelle.

Zeilen entsprechen in der Regel Beobachtungen (z. B. eine Person, ein Produkt, ein Zeitpunkt).

Spalten stehen meist für Variablen oder Merkmale (z. B. Alter, Preis, Datum).

Trennung der Daten#

  • Spaltentrenner: (Separator/Delimiter):

    • In CSV-Dateien: meist Komma (,) Name,Alter,Gehalt

    • In TXT-Dateien: oft Tabulator (\t) oder Semikolon (;) Name;Alter;Gehalt

  • Zeilentrenner:

    Normalerweise ein Zeilenumbruch (\n), also eine neue Zeile.

  • Dezimaltrenner:

    In deutschsprachigen Dateien ist oft das Komma , als Dezimaltrenner üblich (z. B. 3,14).

    In englischsprachigen Dateien ist es meistens der Punkt . (z. B. 3.14).

Einlesen von CSV-/TXT-Dateien in R mit read.table()#

In R können solche Dateien mit read.table() eingelesen werden:

daten <- read.table("datei.csv", header = TRUE, sep = ",", dec = ".")

Die wichtigsten Argumente:

  • file: Pfad zur Datei (z. B. „daten.csv“)

  • header = TRUE: erste Zeile enthält Spaltennamen

  • sep=: Spaltentrenner

    • "," falls , der Spaltentrenner ist (oft bei CSV)

    • ";" falls ; der Spaltentrenner ist (oft bei Excel-CSV)

    • "\t" falls die Spalten mit Tabulator getrennt sind

  • dec =: Dezimaltrenner

    • "." falls in der einzulesenden Datei die englische Schreibweise für Dezimalzahlen genutzt wird

    • "," falls in der einzulesenden Datei die deutsche Schreibweise für Dezimalzahlen genutzt wird

Beispiele:

  1. Deutsche CSV mit Semikolon und Komma als Dezimaltrenner:

    daten <- read.table("daten.csv", header = TRUE, sep = ";", dec = ",")
    
  2. TXT mit Tabulator als Trenner:

    daten <- read.table("daten.txt", header = TRUE, sep = "\t", dec = ".")
    

XLS- und XLSX-Dateien#

In Mircosoft Excel oder ähnlichen Programmen werden die Dateien oft im Format xls oder xlsx abgelegt. Um solche Dateien in R einzulesen benötigt man das Paket readxl.

library("readxl")

Die Funktion zum Einlesen dieser Dateien heißt read_excel(). Die wichtigsten Argument sind:

  • path: Pfad zur Datei, z. B. „daten.xlsx“

  • sheet: zum Festlegen, welches Tabellenblatt eingelesen werden soll. Angabe dur Name („Tabelle1“) oder Nummer (1)

  • range: zum Festlegen des einzulesenden Zellbereichs, z.B. „A1:D10“

  • col_names: Soll die erste Zeile als Spaltennamen verwendet werden? (TRUE/FALSE)

  • col_types: Manuelle Angabe der Spaltentypen, z.B. c(„text“, „numeric“, „date“)

  • na: Welche Zeichen sollen als fehlende Werte (NA) erkannt werden?

Das Format der eingelesen Daten ist dann tibble. Dies ist vergleichbar mit einem data.frame bietet allerdings ein paar mehr Möglichkeiten. Wollen sie dies wieder in ein data.frame transformieren, nutzen Sie as.data.frame().

Beispiele

  1. Standardimport (erstes Blatt, erste Zeile als Spaltennamen):

    daten <- read_excel("daten.xlsx")
    
  2. Bestimmtes Tabellenblatt nach Name:

    daten <- read_excel("daten.xlsx", sheet = "Umfrage2024")
    
  3. Tabellenblatt nach Nummer (z. B. zweites Blatt):

    daten <- read_excel("daten.xlsx", sheet = 2)
    
  4. Nur bestimmten Zellbereich einlesen:

    daten <- read_excel("daten.xlsx", range = "B3:E15")
    
  5. Erste Zeile nicht als Spaltennamen verwenden:

    daten <- read_excel("daten.xlsx", col_names = FALSE)
    
  6. Fehlwerte definieren (z. B. leere Zellen oder „-„):

    daten <- read_excel("daten.xlsx", na = c("", "-"))
    

Aufgaben#

Speichern Sie die Dateien

supermarket-sales.xlsx, sleep_health_lifestyle.txt, screentime.txt und air_pollution_china.csv

aus dem Ordner

in Ihrem Home-Verzeichnis.

Beachten Sie beim Einlesen der Dateien, ob Sie die richtigen Argumente genutzt haben. Schauen Sie sich die Dateien eingelesenen Datein mit head() und str() an um dies zu prüfen.

  1. Lesen Sie die Datei supermarket-sales.xlsx ein. Schauen Sie diese zuvor in einer Tabellenkalkulationsprogramm an, um herauszufinden auf welchem sheet und in welchen Element der Tabelle die Daten zu finden sind.

  2. Berechnen Sie den Mittelwert und die Standardabweichung der Spalte Retail Price (USD). (Lösung: 84.419, 57.044)

  3. Lesen Sie die Datei sleep_health_lifestyle.txt ein. Verwenden Sie die Argumente header=,sep= und dec= um entsprechende Werte richtig zu setzen.

  4. Berechnen Sie den Mittelwert der Schlafdauer. (Lösung: 7.132)

  5. Erstellen Sie 4 Boxplots der Schlafdauer (einen für jede BMI-Kategorie)

  6. Lesen Sie die Datei screentime.txt ein.

  7. Geben Sie die mittlere Bildschirmzeit für Male und Female an. (Lösung: 3.07 und 2.92)

  8. Lesen Sie die Datei air_pollution_china.csv ein.

  9. Berechnen Sie Mittelwert und Varianz der Spalte PM10..µg.m... (Lösung: 158.82 und 6547.27)

# Platz zum Rechnen