Einführendes Beispiel zum Stichproben-Mittelwert

Für diese Aufgabe sollte schnell gehen da Sie keinen Code schreiben, sondern lediglich den vorgegebene Code ausführen und sich das Ergbnis anschauen sollen.

Mit dem folgenden Code reduzieren wir die NHANES-Tabelle zunächste auf nur die erwachsenen Männer, für die die Körpergröße vorliegt.

suppressPackageStartupMessages(
  library( tidyverse ) )

read_csv( "data_on_git/nhanes.csv" ) %>%
filter( age >= 18, gender=="male", !is.na(height) ) -> nhanes_men_only

nhanes_men_only
# A tibble: 2,630 × 6
   subjectId gender   age height weight ethnicity  
       <dbl> <chr>  <dbl>  <dbl>  <dbl> <chr>      
 1     93706 male      18   176.   66.3 NH Asian   
 2     93711 male      56   171.   62.1 NH Asian   
 3     93712 male      18   173.   58.9 Mexican    
 4     93713 male      67   179.   74.9 NH White   
 5     93715 male      71   171.   65.6 Other/Mixed
 6     93716 male      61   159.   77.7 NH Asian   
 7     93717 male      22   174.   74.4 NH White   
 8     93718 male      45   157.   54.4 NH Black   
 9     93723 male      64   170.   64.9 NH White   
10     93727 male      70   162.   62.7 NH Asian   
# ℹ 2,620 more rows

Wir bestimmen den Mittelwert der Körpergröße aller dieser Männer

nhanes_men_only %>% summarise( mean(height) )
# A tibble: 1 × 1
  `mean(height)`
           <dbl>
1           173.

Dann wählen wir mit sample_n 10 Zeilen zufällig aus. Jedesmal, wenn Sie den Code ausführen, werden andere Zeilen ausgewählt.

nhanes_men_only %>% sample_n( 10 )
# A tibble: 10 × 6
   subjectId gender   age height weight ethnicity     
       <dbl> <chr>  <dbl>  <dbl>  <dbl> <chr>         
 1    100710 male      33   184.  113   Other Hispanic
 2     93971 male      40   169.  109.  NH Black      
 3    100422 male      66   182.   65.7 NH Black      
 4     96513 male      24   181.   56.3 NH White      
 5     96739 male      20   174.   95.1 NH Asian      
 6     94010 male      71   183.   87.6 NH White      
 7    102183 male      68   182.   93.6 NH White      
 8     98689 male      35   171.   89.2 NH White      
 9    100613 male      26   188.  106.  Other/Mixed   
10     98679 male      65   171.   70   Mexican       

Bestimmen Sie mit summarise und mean den Mittelwert dieser 10 Männer.

nhanes_men_only %>% sample_n( 10 ) %>% summarise( mean(height) )
# A tibble: 1 × 1
  `mean(height)`
           <dbl>
1           174.

Führen Sie diesen Code 15 mal aus. Notieren Sie jeweils (gerne auf Papier), wie stark der Mittelwert über die 10 Männer jeweils abweicht vom Mittelwert aus der gesamten Tabelle mit allen Männern.

Wiederholen Sie dies nun nochmals, aber ziehen Sie diesmal jeweils 100 statt nur 10 zufällig ausgewählte Zeilen. Notieren Sie wieder die Abweichungen der Stichproben-Mittelwerte vom gesamt-Mittelwert.

Da wir beim zweiten mal größere Stichproben genommen haben (100 Männer statt nur 10) sollte der jeweilige Mittelwert dem “wahren” Gesamt-Mittelwert näher liegen. Ist das der Fall? Wenn ja, um welchen Faktor hat sich die “Genauigkeit” in etwa verbessert?

Erinnern Sie sich an Ihre Mathe-Vorlesung. Welchen Faktor würden Sie erwarten?


Falls es Ihnen zu umständlich ist, die Werte auf Papier zu notieren, hier (für fortgeschrittene R-Nutzer), wie es mit R geht:

Unser Code erzeugt eine Tabelle mit einer Spalte und einer Zeile:

nhanes_men_only %>% sample_n( 10 ) %>% summarise( mean=mean(height) )
# A tibble: 1 × 1
   mean
  <dbl>
1  174.

Mit map_dfr können wir diesen Code mehrmals (hier: 15 mal) ausführen lassen, und die 1x1-Tabellen zu einer langen Tabelle zusammen fügen lassen:

map_dfr( 1:15, ~ { nhanes_men_only %>% sample_n( 10 ) %>% summarise( mean=mean(height) )  } )
# A tibble: 15 × 1
    mean
   <dbl>
 1  173.
 2  175.
 3  169.
 4  174.
 5  173.
 6  172.
 7  175.
 8  174.
 9  171.
10  173.
11  170.
12  176.
13  175.
14  174.
15  172.

Hier wurde der Code in den geschweiften Klammern 15 mal ausgeführt. Jedes mal wurde eine Tabelle mit einer Zeile erzeugt, und alle diese Tabellen wurden zu einer Tabelle mit 15 Zeilen zusammen gefügt.

Nun können wir z.B. die Standardabweichung dieser 15 Werte berechnen lassen.