Gibt es einen Zusammenhang zwischen “Rauchen” und “Gesundheit”? Berechnen Sie das Odds Ratio von Gesundheit (zu Krankheit) von Nichtrauchern (im Verhältnis zu Rauchern!) in diesen fiktiven Daten.
Raucher | krank | gesund |
---|---|---|
TRUE | 24 | 1619 |
FALSE | 173 | 1321 |
z1 <- 1321
z2 <- 173
z3 <- 1619
z4 <- 24
Chance_Raucher_gesund <- (z1/z2)
Chance_NRaucher_gesund <- (z3/z4)
OR <- Chance_NRaucher_gesund / Chance_Raucher_gesund
OR
## [1] 8.834437
Die Chance Chance von “gesund zu krank” ist bei Nicht-Rauchern fast 9 mal so hoch wie bei Rauchern.
Werten Sie die Häufigkeiten (der Stufen) folgender Variablen aus wie unten beschrieben.
Datensatz: mtcars
.
Variablen:
am
cyl
vs
library("tidyverse")
data("mtcars")
mtcars %>%
group_by(am) %>%
summarise(zeilen_n = n())
## # A tibble: 2 × 2
## am zeilen_n
## <dbl> <int>
## 1 0 19
## 2 1 13
Der Befehle n()
gibt die Anzahl der Zeilen (Reihen)
zurück. Da in einem Dataframe alle Zeilen gleich lang sind, brauchen wir
keine Spalte anzugeben.
Alternativ könnte man auch schreiben:
mtcars %>%
count(am)
## am n
## 1 0 19
## 2 1 13
Das ist haargenau der gleiche Effekt wie die vorherige Syntax.
Üblich ist auch, eine Kontingenztabelle so darzustellen:
mtcars %>%
count(am, cyl)
## am cyl n
## 1 0 4 3
## 2 0 6 4
## 3 0 8 12
## 4 1 4 8
## 5 1 6 3
## 6 1 8 2
table(mtcars$am, mtcars$cyl)
##
## 4 6 8
## 0 3 4 12
## 1 8 3 2
Wir sehen, dass wir Gruppen haben, in denen sich die Beobachtungen aufteilen.
mtcars %>%
count(am, cyl, vs)
## am cyl vs n
## 1 0 4 1 3
## 2 0 6 1 4
## 3 0 8 0 12
## 4 1 4 0 1
## 5 1 4 1 7
## [ reached 'max' / getOption("max.print") -- omitted 2 rows ]
Das sind drei Variablen mit Gruppen.
Da einige der 12 Gruppen in den Daten nicht vorkommen, sind sie in der Auszählung der Häufigkeiten nicht aufgenommen; in den Daten gibt es nur 7 der 12 Gruppen.
Betrachten Sie die Balkendiagramme. Welche Balkendiagramm zeigt den stärksten Zusammenhang?
Viele Quellen berichten Klimadaten unserer Erde, z.B. auch National Aeronautics and Space Administration - Goddard Institute for Space Studies.
Von dieser Quelle beziehen wir diesen Datensatz.
Die Datensatz sind auf der Webseite wie folgt beschrieben:
Tables of Global and Hemispheric Monthly Means and Zonal Annual Means
Combined Land-Surface Air and Sea-Surface Water Temperature Anomalies (Land-Ocean Temperature Index, L-OTI)
The following are plain-text files in tabular format of temperature anomalies, i.e. deviations from the corresponding 1951-1980 means.
Global-mean monthly, seasonal, and annual means, 1880-present, updated through most recent month: TXT, CSV
Starten Sie zunächst das R-Paket tidyverse
falls noch
nicht geschehen.
library(tidyverse)
Importieren Sie dann die Daten:
data_path <- "https://data.giss.nasa.gov/gistemp/tabledata_v4/GLB.Ts+dSST.csv"
d <- read_csv(data_path, skip = 1)
Wir lassen die 1. Zeile des Datensatzes aus (Argument
skip
), da dort Metadaten stehen, also keine Daten,
sondern Informationen (Daten) zu den eigentlichen Daten.
Aufgabe
Berechnen Sie die folgende Statistiken pro Dekade:
Hinweise:
Dekade berechnen:
d <-
d %>%
mutate(decade = round(Year/10))
Statistiken pro Dekade:
d_summarized <-
d %>%
group_by(decade) %>%
summarise(temp_mean = mean(Jan),
temp_sd = sd(Jan))
d_summarized
decade | temp_mean | temp_sd |
---|---|---|
188 | −0.19 | 0.24 |
189 | −0.43 | 0.22 |
190 | −0.26 | 0.16 |
191 | −0.39 | 0.22 |
192 | −0.28 | 0.15 |
193 | −0.14 | 0.21 |
194 | 0.03 | 0.21 |
195 | −0.05 | 0.18 |
196 | 0.03 | 0.15 |
197 | −0.07 | 0.17 |
198 | 0.21 | 0.19 |
199 | 0.36 | 0.13 |
200 | 0.52 | 0.19 |
201 | 0.64 | 0.20 |
202 | 0.96 | 0.14 |
Zur Veranschaulichung visualisieren wir die Ergebnisse:
Viele Quellen berichten Klimadaten unserer Erde, z.B. auch National Aeronautics and Space Administration - Goddard Institute for Space Studies.
Von dieser Quelle beziehen wir diesen Datensatz.
Die Datensatz sind auf der Webseite wie folgt beschrieben:
Tables of Global and Hemispheric Monthly Means and Zonal Annual Means
Combined Land-Surface Air and Sea-Surface Water Temperature Anomalies (Land-Ocean Temperature Index, L-OTI)
The following are plain-text files in tabular format of temperature anomalies, i.e. deviations from the corresponding 1951-1980 means.
Global-mean monthly, seasonal, and annual means, 1880-present, updated through most recent month: TXT, CSV
Starten Sie zunächst das R-Paket tidyverse
falls noch
nicht geschehen.
library(tidyverse)
Importieren Sie dann die Daten:
data_path <- "https://data.giss.nasa.gov/gistemp/tabledata_v4/GLB.Ts+dSST.csv"
d <- read_csv(data_path, skip = 1)
Wir lassen die 1. Zeile des Datensatzes aus (Argument
skip
), da dort Metadaten stehen, also keine Daten,
sondern Informationen (Daten) zu den eigentlichen Daten.
Aufgaben
Hinweise:
Dekade berechnen:
d <-
d %>%
mutate(decade = round(Year/10))
Korrelation:
d %>%
summarise(temp_cor = cor(Jan, Feb))
## # A tibble: 1 × 1
## temp_cor
## <dbl>
## 1 0.940
Korrelation pro Dekade:
d_summarized <-
d %>%
group_by(decade) %>%
summarise(temp_cor = cor(Jan, Feb))
decade | temp_cor |
---|---|
188 | 0.88 |
189 | 0.79 |
190 | 0.52 |
191 | 0.84 |
192 | 0.82 |
193 | 0.72 |
194 | 0.50 |
195 | 0.78 |
196 | 0.56 |
197 | 0.79 |
198 | 0.80 |
199 | 0.54 |
200 | 0.57 |
201 | 0.67 |
202 | 0.95 |
Die Korrelation der Temperaturen und damit die Ähnlichkeit der Muster hat im Laufe der Dekaden immer mal wieder geschwankt.
Viele Quellen berichten Klimadaten unserer Erde, z.B. auch National Aeronautics and Space Administration - Goddard Institute for Space Studies.
Von dieser Quelle beziehen wir diesen Datensatz.
Die Datensatz sind auf der Webseite wie folgt beschrieben:
Tables of Global and Hemispheric Monthly Means and Zonal Annual Means
Combined Land-Surface Air and Sea-Surface Water Temperature Anomalies (Land-Ocean Temperature Index, L-OTI)
The following are plain-text files in tabular format of temperature anomalies, i.e. deviations from the corresponding 1951-1980 means.
Global-mean monthly, seasonal, and annual means, 1880-present, updated through most recent month: TXT, CSV
Starten Sie zunächst das R-Paket tidyverse
falls noch
nicht geschehen.
library(tidyverse)
Importieren Sie dann die Daten:
data_path <- "https://data.giss.nasa.gov/gistemp/tabledata_v4/GLB.Ts+dSST.csv"
d <- read_csv(data_path, skip = 1)
Wir lassen die 1. Zeile des Datensatzes aus (Argument
skip
), da dort Metadaten stehen, also keine Daten,
sondern Informationen (Daten) zu den eigentlichen Daten.
Aufgaben
temp_is_above
), die ausgibt, ob die Temperatur über oder
unter dem Durchschnitt liegt (d.h. eine negative oder positive
Abweichung ist). Nutzen Sie als Ausprägungen die Werte “yes” und
“no”.temp_is_above
“yes” aufweist
pro Jahrhundert (“erhöhter Temperatur”).Für “Wenn-Dann-Abfragen” eignet sich folgender R-Befehl (als “Pseudocode” dargestellt):
d %>%
mutate(neue_spalte = case_when(
erste_bedingung_bzw_wenn_teil ~ dann_teil1,
zweite_bedingung_bzw_zweiter_wenn_teil ~ dann_teil2
))
temp_is_above
erstellen:
d <-
d %>%
mutate(temp_is_above = case_when(
Jan > 0 ~ "yes",
Jan <= 0 ~ "no"
))
Jahrhundert berechnen:
d <-
d %>%
mutate(century = case_when(
Year < 1900 ~ "19th",
Year >= 1900 ~ "20th"
))
Erhöhte Werte der Januar-Temperatur pro Jahrhundert berechnen:
d_summarized <-
d %>%
group_by(century) %>%
count(temp_is_above)
d_summarized
## # A tibble: 4 × 3
## # Groups: century [2]
## century temp_is_above n
## <chr> <chr> <int>
## 1 19th no 19
## 2 19th yes 1
## 3 20th no 56
## 4 20th yes 67
Der Befehl count()
zählt aus, wie häufig die
Ausprägungen der angegebenen Variablen X
sind, m.a.W. er
gibt die Verteilung von X
wieder.
Es macht vermutlich Sinn, noch die Anteile (relative Häufigkeiten) zu den absoluten Häufigkeiten zu ergänzen:
d_summarized %>%
mutate(prop = n / sum(n))
## # A tibble: 4 × 4
## # Groups: century [2]
## century temp_is_above n prop
## <chr> <chr> <int> <dbl>
## 1 19th no 19 0.95
## 2 19th yes 1 0.05
## 3 20th no 56 0.455
## 4 20th yes 67 0.545
Odds Ratio berechnen:
Wir bezeichnen mit c19
(für “Chance 1”) das Verhältnis
von erhöhter Temperatur zu nicht erhöhter Temperatur im 19.
Jahrhundert.
c19 <- 1 / 19
Mit c20
bezeichnen wir die analoge Chance für das 20.
Jahrhundert:
c20 <- 56 / 67
Das Verhältnis der beiden Chancen gibt das Chancenverhältnis (Odds Ratio, OR):
c19 / c20
## [1] 0.06296992
Genauso gut kann man das OR von c20
zu c19
ausrechnen, der Effekt bleibt identisch:
c20 / c19
## [1] 15.8806
In beiden Fällen ist es ein Faktor von knapp 16.
Welcher Korrelationswert (Pearson) beschreibt die Korrelation in den Daten am besten?
C. Die Daten wurden aus unkorrelierten Populationen (jeweils normalverteilt) gezogen, also .
Hinweis: Griechische Buchstaben werden hier verwendet, um Variablen aus Populationen zu beschreiben (Parameter), lateinische Buchstaben werden für Stichproben verwendet.
Welcher Korrelationswert (Pearson) beschreibt die Korrelation in den Daten am besten?
Die Korrelation in der zugehörigen (bivariaten) Population beträgt -0.9.
In der Stichprobe kann der zugehörige Wert (etwas abweichen).
Das ist genauso, wie wenn man sagt, dass der “mittlere deutsche Mann” 1,80m groß sei, aber wenn Sie eine Stichprobe ziehen, muss der Mittelwert ja auch nicht (notwendigerweise) exakt bei 1,80m lliegen.