Übungszettel als PDF-Datei zum Drucken
Übungszettel mit Lösungen
Lösungszettel als PDF-Datei zum Drucken
Der gesamte Übugszettel als .Rmd-Datei (Zum Downloaden: Rechtsklick > Speichern unter…)
Datei > Neue Datei > R Markdown...
eine neue R Markdown Datei erstellen. Den Text unter dem Setup Chunk (ab Zeile 11) können Sie löschen. Unter diesem Link können Sie auch unsere Vorlage-Datei herunterladen.Da es sich um eine praktische Übung handelt, können wir Ihnen nicht alle neuen Befehle einzeln vorstellen. Stattdessen finden Sie hier Verweise auf sinnvolle Ressourcen, in denen Sie für die Bearbeitung unserer Aufgaben nachschlagen können.
Ressource | Beschreibung |
---|---|
Field, Kapitel 7 (7.1 - 7.5, 7.9) | Buchkapitel, das Schritt für Schritt erklärt, worum es geht, und wie man Regressionen in R durchführt. Große Empfehlung! |
R for Data Science | Einsteiger-Buch von R-Gott Hadley Wickham. Hier wird topaktuell in die Arbeit mit R, insbesondere zur Datenaufbereitung und Visualisierung, eingeführt. |
R Tutorial | Schritt-für-Schritt Einführung in das Arbeiten mit R von Christian Treffenstädt. Nützlich, falls Sie grundlegende Dinge noch einmal nachschlagen möchten |
tidyverse
und fügen Sie eine entsprechende Code-Zeile an den Beginn Ihres Dokuments ein.starwars.csv
unter dem Namen sw_data
in R ein.Bitte folgen Sie den Anweisungen im Aufgabentext.
Bitte folgen Sie den Anweisungen im Aufgabentext.
library(tidyverse)
Anmerkung: library()
und require()
sind beides Befehle zum Laden von Paketen. require()
ist prinzipiell für die Verwendung innerhalb von Funktionen gedacht. Siehe ?library
oder ?require
für Details.
# syntax for locally stored data file
# sw_data <- read_csv("data/starwars.csv")
sw_data <- read_csv("http://md.psych.bio.uni-goettingen.de/mv/data/div/starwars.csv")
##
## ── Column specification ─────────────────────────────────────────────────────────────────────────────────────────────────────
## cols(
## name = col_character(),
## height = col_double(),
## mass = col_double(),
## hair_color = col_character(),
## skin_color = col_character(),
## eye_color = col_character(),
## birth_year = col_double(),
## gender = col_character(),
## homeworld = col_character(),
## species = col_character()
## )
sw_data2
welcher keine fehlenden Werte auf den Variablen gender
und height
enthält.height
für jedes Geschlecht angeben.sw_data3
welcher keine fehlenden Werte auf den Variablen gender
und height
enthält und in welchem nur noch die Geschlechter “male” und “female” vorkommensw_data2 <- sw_data %>%
drop_na(height, gender)
mybarplot <- ggplot(sw_data2, aes(x = gender, y = height)) +
stat_summary(fun = mean, geom = "bar")
mybarplot
mybarplot <- ggplot(sw_data2, aes(x = gender, y = height, fill = gender)) +
stat_summary(fun = mean, geom = "bar") +
stat_summary(fun.data = mean_cl_normal, geom = "errorbar", width = 0.2) +
labs(title = "Körpergröße in Abhänigkeit vom Geschlecht")
mybarplot
table(sw_data2$gender)
##
## female hermaphrodite male none
## 17 1 59 1
sw_data2 %>%
group_by(gender) %>%
summarise(mean(height), median(height), var(height))
## # A tibble: 4 x 4
## gender `mean(height)` `median(height)` `var(height)`
## <chr> <dbl> <dbl> <dbl>
## 1 female 165. 166 530.
## 2 hermaphrodite 175 175 NA
## 3 male 179. 183 1253.
## 4 none 200 200 NA
sw_data3 <- sw_data %>%
drop_na(height, gender) %>%
filter(gender == "male" | gender == "female")
table(sw_data3$gender)
##
## female male
## 17 59
table(sw_data2$gender)
##
## female hermaphrodite male none
## 17 1 59 1
t.test()
um zu überprüfen, ob die Mittelwerte der Körpergröße zwischen Männern und Frauen signifikant voneinander abweichen. Nehmen Sie dafür (einfachhalber) Varianzhomogenität und Unabhängigkeit der Stichproben an. Testen Sie zweiseitig.t.test(sw_data3$height ~ sw_data3$gender,
alternative = c("two.sided"),
paired = FALSE,
var.equal = TRUE)
##
## Two Sample t-test
##
## data: sw_data3$height by sw_data3$gender
## t = -1.5104, df = 74, p-value = 0.1352
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -31.928219 4.394819
## sample estimates:
## mean in group female mean in group male
## 165.4706 179.2373
# Die Annahme der gleichen Varianzen und einer ggf. normalverteilten abhänigen Variable
# ist übrigens diskutabel. Wir vertiefen das an dieser Stelle nicht. Hinweise geben aber:
# ggplot(sw_data3, aes(y = height, x = gender)) +
# geom_boxplot()
# ggplot(sw_data3, aes(height)) +
# geom_histogram(fill = "white", color = "grey30") +
# facet_wrap(~ gender)
Bei einem p-Wert > 0.05 lehnen wir die Nullhypothese nicht ab. Wir gehen von keinem signifikanten Mittelwertsunterschied aus.
Ganz genau genommen testet der Test, ob die Mittelwertsdifferenz signifikant von Null verschieden ist. Dies ist hier nicht der Fall.
mymeans <- sw_data3 %>%
group_by(gender) %>%
summarise(Means = mean(height))
mymeans
## # A tibble: 2 x 2
## gender Means
## <chr> <dbl>
## 1 female 165.
## 2 male 179.
abs(mymeans$Means[1] - mymeans$Means[2])
## [1] 13.7667
height
und Prädiktor gender
.mymodel <- lm(formula = height ~ gender, data = sw_data3)
summary(mymodel)
##
## Call:
## lm(formula = height ~ gender, data = sw_data3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -113.237 -4.737 3.763 12.838 84.763
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 165.471 8.031 20.60 <2e-16 ***
## gendermale 13.767 9.115 1.51 0.135
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 33.11 on 74 degrees of freedom
## Multiple R-squared: 0.02991, Adjusted R-squared: 0.0168
## F-statistic: 2.281 on 1 and 74 DF, p-value: 0.1352
mymodel$coefficients
## (Intercept) gendermale
## 165.4706 13.7667
mymeans
## # A tibble: 2 x 2
## gender Means
## <chr> <dbl>
## 1 female 165.
## 2 male 179.
mymeans$Means
## [1] 165.4706 179.2373
abs(mymeans$Means[1] - mymeans$Means[2])
## [1] 13.7667
sum(mymodel$coefficients)
## [1] 179.2373
Der Intercept entspricht dem Mittelwert der Körpergröße der Frauen. Der Slope entspricht der Mittelwertsdifferenz. Intercept + Slope entspricht dem Mittelwert der Männer.
t.test(sw_data3$height ~ sw_data3$gender,
alternative = c("two.sided"),
paired = FALSE,
var.equal = TRUE)
##
## Two Sample t-test
##
## data: sw_data3$height by sw_data3$gender
## t = -1.5104, df = 74, p-value = 0.1352
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -31.928219 4.394819
## sample estimates:
## mean in group female mean in group male
## 165.4706 179.2373
summary(mymodel)
##
## Call:
## lm(formula = height ~ gender, data = sw_data3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -113.237 -4.737 3.763 12.838 84.763
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 165.471 8.031 20.60 <2e-16 ***
## gendermale 13.767 9.115 1.51 0.135
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 33.11 on 74 degrees of freedom
## Multiple R-squared: 0.02991, Adjusted R-squared: 0.0168
## F-statistic: 2.281 on 1 and 74 DF, p-value: 0.1352
Der Absolutbetrag der t-Werte ist gleich. Auch die p-Werte sind identisch. In beiden Fällen testen wir ob die Mittelwertsdifferenz signifikant von Null verschieden ist.
Annotation: This exercise sheet bases in part on exercises, that you can find in the textbook Dicovering Statistics Using R (Field, Miles & Field, 2012). They were modified for the purpose of this sheet and the R-code was actualized.
Field, A., Miles, J., & Field, Z. (2012). Discovering Statistics Using R. London: SAGE Publications Ltd.
Version: 20 Mai, 2021 09:05