# Hausaufgaben zur 3. Vorlesung ###### tags: `Vl Datenanalyse 21/22` ### Aufgabe 1: Simulierte Würfel In dieser ersten Aufgabe führe ich Sie durch die Schritte. Somit mag sie leicht erscheinen; probieren Sie das aber bitte trotzdem alles selbst und spicken Sie auf die Lösung (s.u.) nur, wenn Sie wirklich nicht weiter kommen. In der Vorlesung haben wir die Funktion `sample` kennen gelernt: `sample( x, n )` wählt `n` Elemente zufällig aus dem Vektor `x` aus. Wir können damit einen Würfel simulieren: `sample( 1:6, 1 )`. Wenn Sie zwei Würfel simulieren möchten, schreiben Sie `sample( 1:6, 2, replace=TRUE )`. Probieren Sie das aus. Warum braucht es das `replace=TRUE`? (Tipp: Falls Sie in der Schule Stochastik hatten, erinnern Sie sich an den Begriff des "Ziehens mit Zurücklegen" ("drawing with re-placement").) In den meisten Brettspielen zählt man die Augen der Würfel zusammen. Wenn wir die Funktion von eben in ein `sum( ... )` einschließen, erhalten wir die Augensumme. Wenn wir nun auch noch dies in ein `replicate( 1000, sum( ... ) )` einschließen, dann weisen wir R an, 1000 mal zu simulieren, dass wir zwei Würfel werfen und die Augenzahl jeweils zusammen zählen. Erzeugen Sie sich so einen Vektor `augensumme` der Länge 1000, der 1000 mal die Augensumme von jeweils 2 Würfen enthält. Stellen Sie durch ein Histogramm dar, welche Augensummen wie häufig vorkommen. Hier werden Sie auf ein kleines technisches Problem stoßen: Da `ggplot` nicht mit "nackten" Vektoren umgehen kann, sondern nur mit Tabellen ("tibbles"), müssen Sie den Vektor `augensumme` erst in eine Tabelle mit einer einzelnen Spalte umformen. Dies erreichen Sie mit `tibble( augensumme )`. Achten Sie beim Histogramm darauf, für die Anzahl der Bins einen geeigneten Wert zu wählen. Falls Sie *Die Siedler von Catan* kennen: Was hat dieses Histogramm zu tun mit der Größe der Zahlen auf den runden Chips im Brettspiel? Hier ist die Lösung mit R-Code, falls Sie festhängen: https://hackmd.io/@simon-anders/HJ8l1w-wt (Aber bitte erst selbst versuchen, bevor Sie auf den Link klicken.) ### Aufgabe 2: Zentraler Grenzwertsatz -- von Würfeln zur Normalverteilung In Aufgabe 1 haben wir ein Histogramm erstellt für die Verteilung der Augensummen von Würfen mit *zwei* Würfeln. Erstellen Sie solche Histogramme auch für die Augenzahl eines einzelnen Würfels, sowie für die Augensummen von 3, 4, 5, 10, 20 und 50 Würfen. Simulieren Sie jeweils 10,000 Würfe. Sie sollten erkennen: Mit zunehmender Würfelzahl ähnelt das Histogramm mehr und mehr der Gaußschen Normalverteilung. Bestimmen Sie auch Mittelwert und Standardabweichung der Augensumme in Abhängigkeit von der Anzahl der Würfel. Vergleichen Sie die numerischen Ergebnisse, die Sie erhalten, wenn Sie `mean` auf den Vektor `augensumme` anwenden, mit der Ihrer theoretschen Erwartung für die mittlere Augensumme eines Wurfes. ### Aufgabe 3: Die 68–95–99.7-Regel Sicher erinnern Sie sich (aus der Schule oder aus der Mathe-Vorlesung) an die 68-95-99.7-Regel: Bei normalverteilten Daten liegen 68% der Werte innerhalb eines Bereichs von plus/minus einer Standardabweichung (kurz: $\pm 1\sigma$) um den Mittelwert $\mu$, 95% der Werte liegen innerhalb von $\pm 2\sigma$ um $\mu$ und für 99.7% der Werte $x$ ist die Abweichung von $\mu$ kleiner als $3\sigma$, also $|x-\mu|<3\sigma$. Man kann das auch so sagen: Wir berechnen aus den Werten $x$ die zugehörigen sog. $z$-Werte: $z=(x-\mu)/\sigma$. Nun fragen wir: für welchen Anteil der Werte ist $|z|<\sigma$? für welchen Anteil $|z|<2\sigma$? und wie oft ist $|z|<3\sigma$? Probieren Sie das mit dem `augensumme`-Vektor aus: Erzeugen Sie, wie oben, einen solchen Vektor mit Augensummen (für eine Anzahl an Würfeln, die groß genug ist, damit das Histogramm schön glockenförmig normalverteilt aussieht), und machen Sie daraus eine Tabelle ("tibble") mit einer Spalte (wie beim Histogramm). Fügen Sie nun eine zweite Spalte `z` hinzu, mit den zu den Augensummen $x$ gehörigen $z$-Werten. Fügen Sie dann eine dritte Spalte hinzu, mit folgendem Befehl: ``` ... %>% mutate( zbin = cut( abs(z), c( 0, 1, 2, 3, Inf ) ) ) ``` Was bewirkt `cut`? Warum das `abs`? Wenn Sie sich das Ergebnis ansehen, werden Sie sicher erkennen, dass wir nun die Augensummen in Kategorien eingeteilt haben, je danach, ob sie höchstens eine, zwei, drei, oder mehr Standardabweichungen vom Mittelwert abweichen. Mittels `group_by` können wir die Zeilen der Tabelle in entsprechende Gruppen einteilen. Wenn Sie dann mit `summarize( n() )` fragen, wie viele Zeilen in jeder Gruppe liegen, dann können Sie überprüfen, wie genau die 68-95-99.5-Regel erfüllt ist. Was ergibt sich? ### Aufgabe 4: Ein Plot mit Konfidenzbändern Sie erinnern sich an diesen Plot der mittleren Körpergrößen in den NHANES-Daten in Abhängigkeit vom Lebensalter: ![](https://i.imgur.com/hMTxGT8.png) Erstellen Sie diesen Plot nochmals selbst aus den NHANES-Daten. Berechnen Sie dann für jeden Datenpunkt (d.h., für jeden der Mittelwerte der Körpergrößen pro Alter/Geschlecht) den Standardfehler des Mittelwerts (SEM). Sie sollten eine Tabelle wie diese erhalten: ``` # A tibble: 158 × 6 # Groups: age [79] age gender mean_height sd_height n sem_height <dbl> <chr> <dbl> <dbl> <int> <dbl> 1 2 female 89.5 4.56 101 0.454 2 2 male 91.7 4.37 96 0.446 3 3 female 97.7 4.71 74 0.548 4 3 male 99.8 4.18 83 0.459 5 4 female 106. 5.67 93 0.588 6 4 male 106. 4.48 75 0.517 7 5 female 112. 6.02 87 0.645 8 5 male 114. 5.86 79 0.659 9 6 female 119. 5.97 75 0.689 10 6 male 121. 5.30 72 0.624 # … with 148 more rows ``` Gelingt es Ihnen, den folgenden Plot zu erstellen, in dem statt der Mittelwerte die 68%-Konfidenzintervalle (also, die Intervalle von `mean_height-sem_height` zu `mean_height+sem_height`) dargestellt sind? Schlagen Sie dazu nach, wie man `geom_ribbon` verwendet. ![](https://i.imgur.com/yWr1euM.png)