Zu den Daten

Wir brauchen die gleichen Daten wie in der Übung zu den Proportionen.

Die folgende \(2 \times 2\)-Tabelle zeigt die Daten einer Studie, welche durchgeführt wurde, um die Wirksamkeit von Aspirin zur Prävention eines frühzeitigen Todes nach einem Herzinfarkt zu evaluieren. Hier findest du weitere Informationen zu den Daten.

##          outcome
## treatment survived death
##   placebo      354    52
##   aspirin      725    85

Du kannst dir diese Tabelle in R selbst erstellen:

# Matrix anhand der gegebenen Werte erstellen
m <- matrix(c(354, 52, 725, 85), byrow = TRUE, ncol = 2)

# Zeilen und Spalten benennen
rownames(m) <- c("placebo", "aspirin")
colnames(m) <- c("survived", "died")

# aus einer Matrix eine Tabelle machen
tab <- as.table(m)
tab
##         survived died
## placebo      354   52
## aspirin      725   85

Manchmal möchte man auf Grundlage einer \(2 \times 2\)-Tabelle Einzeldaten mit denselben Zellhäufigkeiten erzeugen (z. B. um Grafiken zu erstellen oder Regressionen zu rechnen). Dazu gibt es eine praktische Funktion aus dem Paket rstatix.

library(rstatix)
d.aspirin <- counts_to_cases(tab)

# Variablen des erstellten Dataframes benennen
names(d.aspirin) <- c("gruppe", "outcome")
psych::headTail(d.aspirin)
##       gruppe  outcome
## 1    placebo survived
## 2    placebo survived
## 3    placebo survived
## 4    placebo survived
## ...     <NA>     <NA>
## 1213 aspirin     died
## 1214 aspirin     died
## 1215 aspirin     died
## 1216 aspirin     died

Odds Ratio

Mit der Funktion prop.test() hast du in der Übung zu den Proportionen untersucht, ob sich die Differenz der Proportionen von zwei Gruppen von 0 unterscheidet. Man könnte auch sagen, du hast untersucht, ob es einen Zusammenhang zwischen den Variablen gruppe und outcome gibt. Um Zusammenhänge zwischen zwei dichotomen Variablen zu untersuchen, gibt es noch weitere Möglichkeiten. Eine Möglichkeit ist das Odds Ratio.

Aufgaben

  1. Was ist beim aktuellen Beispiel das “Ereignis” und was ist die “Exposition”?
  2. Um das Odds Ratio zu berechnen, kannst du die Funktion oddsratio() aus dem Paket epitools verwenden. Schau im Hilfemenü mit ?oddsratio zuerst nach, wie die \(2 \times 2\)-Tabelle ausgerichtet sein muss. Entspricht die \(2 \times 2\)-Tabelle diesen Vorgaben?
  3. Berechne das Odds Ratio für das Ereignis “Sterben” von Aspirin versus Placebo.
  4. Interpretiere das Odds Ratio.
  5. Wie sind das 95%-Konfidenzintervall und der P-Wert dieses Odds Ratios zu interpretieren? Wie lautet die Nullhypothese zu diesem P-Wert?
  6. Was ist das Odds Ratio für das Ereignis “Überleben” von Placebo versus Aspirin?

Lösungen

Das Ereignis ist outcome == "died" und die Exposition ist gruppe == "aspirin".


Wenn man die \(2 \times 2\)-Tabelle aus dem Datensatz erstellt, sieht diese wie folgt aus:

tab <- table(d.aspirin$gruppe, d.aspirin$outcome)
tab
##          
##           survived died
##   placebo      354   52
##   aspirin      725   85

Die Anordnung entspricht den Vorgaben der Funktion. Mit rev = "rows", "columns" oder "both" lässt sich die Reihenfolge der Zeilen, der Spalten oder beider umkehren. Wird nur eine Reihenfolge umgekehrt, erhält man den Kehrwert des Odds Ratios; werden beide umgekehrt, bleibt es unverändert.

Aus dem Hilfemenü:

If you are providing a 2x2 table the following table is preferred:

                    disease=0   disease=1
    exposed=0 (ref)    n00         n01
    exposed=1          n10         n11

Nun werden das OR, sein 95%-Konfidenzintervall und die zugehörigen P-Werte berechnet:

library(epitools)
oddsratio(tab)
## $data
##          
##           survived died Total
##   placebo      354   52   406
##   aspirin      725   85   810
##   Total       1079  137  1216
## 
## $measure
##          odds ratio with 95% C.I.
##            estimate     lower    upper
##   placebo 1.0000000        NA       NA
##   aspirin 0.7974502 0.5535838 1.158314
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   placebo         NA           NA         NA
##   aspirin  0.2321007    0.2485889   0.228752
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Das geschätzte Odds Ratio ist 0.7975. Die geschätzten Odds für einen Tod in der Aspiringruppe betragen 79.75 % der entsprechenden Odds in der Placebogruppe. Sie sind somit um 20.25 % niedriger. Diese Aussage bezieht sich auf die Odds, nicht auf das Sterberisiko.

Das 95%-Konfidenzintervall sagt uns, dass unsere beobachtete Stichprobe mit einem wahren OR (in der Population) zwischen 0.55 und 1.16 kompatibel ist. Die 95 % beziehen sich auf das Verfahren: Bei wiederholter Stichprobenziehung unter denselben Modellannahmen würden ungefähr 95 % der so konstruierten Intervalle das wahre OR überdecken. \(H_0\) lautet: \(OR = 1\). Ein Wert von 1 ist also durchaus kompatibel mit den Daten. Auch höhere Sterbeodds in der Aspiringruppe sind mit dem Intervall vereinbar (\(OR > 1\)). Der \(\chi^2\)-Test testet, ob \(OR = 1\), was hier gleichen Sterberisiken in beiden Gruppen entspricht. Wenn wir den P-Wert vom \(\chi^2\)-Test anschauen, beträgt dieser 22.88 %. Es gibt wenig Evidenz gegen \(H_0\).

Technische Anmerkung: Der zuvor verwendete Test prop.test() wendet standardmässig eine Stetigkeitskorrektur an. Würden wir diesen Test ohne diese Korrektur durchführen (correct = FALSE), wäre sein P-Wert mit dem in oddsratio() ausgegebenen unkorrigierten Chi-Quadrat-P-Wert identisch.

prop.test(x=c(354,725),n=c(354+52,725+85),correct=FALSE)$p.value
## [1] 0.228752

Was ist das Odds Ratio, um in der Placebo-Gruppe (relativ zur Aspirin-Gruppe) zu überleben?

Odds Ratios bleiben beim gleichzeitigen Umkehren der Gruppen- und Ereignisreferenz unverändert. Demnach ist das Odds Ratio, um in der Placebo-Gruppe zu überleben das Gleiche wie das Odds Ratio, um in der Aspirin-Gruppe zu sterben. Siehe die Outputs unten: obwohl die Tabelle umgekehrt angeordnet ist, bleibt das OR gleich:

oddsratio(tab) # Wie oben
## $data
##          
##           survived died Total
##   placebo      354   52   406
##   aspirin      725   85   810
##   Total       1079  137  1216
## 
## $measure
##          odds ratio with 95% C.I.
##            estimate     lower    upper
##   placebo 1.0000000        NA       NA
##   aspirin 0.7974502 0.5535838 1.158314
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   placebo         NA           NA         NA
##   aspirin  0.2321007    0.2485889   0.228752
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
oddsratio(tab, rev = "both") # Umgekehrte Anordnung der Tabelle
## $data
##          
##           died survived Total
##   aspirin   85      725   810
##   placebo   52      354   406
##   Total    137     1079  1216
## 
## $measure
##          odds ratio with 95% C.I.
##            estimate     lower    upper
##   aspirin 1.0000000        NA       NA
##   placebo 0.7974502 0.5535838 1.158314
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   aspirin         NA           NA         NA
##   placebo  0.2321007    0.2485889   0.228752
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"

Risk Ratio

Eine weitere Möglichkeit, um einen Zusammenhang zwischen zwei dichotomen Variablen zu untersuchen, ist das Risk Ratio. Voraussetzung ist natürlich, dass wir überhaupt über Risiken sprechen können. Für die Interpretation als Risikoverhältnis müssen die Ereignisrisiken in beiden Gruppen über einen definierten Zeitraum schätzbar sein, beispielsweise in einer Kohortenstudie oder einer randomisierten kontrollierten Studie (RCT). Bei einer Fall-Kontroll-Studie sind sie aus den erhobenen Fall- und Kontrollzahlen im Allgemeinen nicht direkt schätzbar. Für unser Beispiel nehmen wir einen gemeinsamen Beobachtungszeitraum und eine vollständige Erfassung des Ereignisstatus an.

Aufgaben

Wir arbeiten mit den bisherigen Daten weiter.

  1. Verwende die Funktion riskratio() aus dem Paket epitools, um das Risk Ratio für das Ereignis “Sterben” von Aspirin versus Placebo zu berechnen. Oben haben wir bereits sichergestellt, dass die Tabelle richtig orientiert ist.
  2. Was sagt uns dieses Risk Ratio, dessen 95%-Konfidenzintervall und dessen P-Wert?
  3. Was ist das Risk Ratio für das Ereignis “Überleben” von Placebo versus Aspirin?

Lösungen

  1. Verwende die Funktion riskratio() aus dem Paket epitools, um das Risk Ratio zu berechnen. Oben haben wir bereits sichergestellt, dass die Tabelle richtig orientiert ist.
riskratio(tab)
## $data
##          
##           survived died Total
##   placebo      354   52   406
##   aspirin      725   85   810
##   Total       1079  137  1216
## 
## $measure
##          risk ratio with 95% C.I.
##            estimate     lower    upper
##   placebo 1.0000000        NA       NA
##   aspirin 0.8193257 0.5926804 1.132642
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   placebo         NA           NA         NA
##   aspirin  0.2321007    0.2485889   0.228752
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

  1. Was sagt uns dieses Risk Ratio, dessen 95%-Konfidenzintervall und dessen P-Wert?

Das Risk Ratio beträgt 0.82. Das geschätzte Risiko für einen frühzeitigen Tod nach einem Herzinfarkt ist in der Aspiringruppe relativ zur Placebogruppe um etwa 18 % niedriger. Es beträgt somit etwa 82 % des geschätzten Risikos in der Placebogruppe.

Das 95%-Konfidenzintervall sagt uns, dass unsere beobachtete Stichprobe mit einem wahren RR (in der Population) zwischen 0.59 und 1.13 kompatibel ist. Die 95 % beziehen sich auf das Verfahren: Bei wiederholter Stichprobenziehung unter denselben Modellannahmen würden ungefähr 95 % der so konstruierten Intervalle das wahre RR überdecken. Ein Wert von 1 ist also durchaus kompatibel mit den Daten. Auch ein höheres Sterberisiko in der Aspiringruppe ist mit dem Intervall vereinbar (\(RR > 1\)). Der \(\chi^2\)-Test prüft, ob \(RR = 1\), was hier gleichen Sterberisiken in beiden Gruppen entspricht (unsere Nullhypothese). Wenn wir den P-Wert vom \(\chi^2\)-Test anschauen, beträgt dieser rund 0.228. Auf dem 5%-Niveau wird \(H_0\) nicht verworfen. Dies belegt keine Gleichheit der Risiken.

Anmerkung: Der zuvor verwendete Test prop.test() wendet standardmässig eine Stetigkeitskorrektur an. Würden wir diesen Test ohne diese Korrektur durchführen (correct = FALSE), wäre sein P-Wert mit dem in riskratio() ausgegebenen unkorrigierten Chi-Quadrat-P-Wert identisch.


  1. Was ist das Risk Ratio, um in der Placebo-Gruppe relativ zur Aspirin-Gruppe zu überleben?

Risk Ratios bleiben beim gleichzeitigen Umkehren der Gruppen- und Ereignisreferenz im Allgemeinen nicht unverändert. Demnach ist das Risk Ratio, um in der Placebo-Gruppe (relativ zu Aspirin) zu überleben nicht das Gleiche wie das Risk Ratio, um in der Aspirin-Gruppe (relativ zu Placebo) zu sterben. Siehe die Outputs unten: die Tabelle wurde umgekehrt angeordnet und das Risk Ratio (aber nicht der P-Wert) verändert sich:

riskratio(tab) # Wie oben
## $data
##          
##           survived died Total
##   placebo      354   52   406
##   aspirin      725   85   810
##   Total       1079  137  1216
## 
## $measure
##          risk ratio with 95% C.I.
##            estimate     lower    upper
##   placebo 1.0000000        NA       NA
##   aspirin 0.8193257 0.5926804 1.132642
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   placebo         NA           NA         NA
##   aspirin  0.2321007    0.2485889   0.228752
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
riskratio(tab, rev = "both") # Umgekehrte Anordnung der Tabelle
## $data
##          
##           died survived Total
##   aspirin   85      725   810
##   placebo   52      354   406
##   Total    137     1079  1216
## 
## $measure
##          risk ratio with 95% C.I.
##            estimate     lower   upper
##   aspirin 1.0000000        NA      NA
##   placebo 0.9741464 0.9321088 1.01808
## 
## $p.value
##          two-sided
##           midp.exact fisher.exact chi.square
##   aspirin         NA           NA         NA
##   placebo  0.2321007    0.2485889   0.228752
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"

Zusatzübung

Aufgabe

In der Studie von Graf et al. (2020) steht im Resultateteil Folgendes: “Der Anteil gestürzter Patientinnen und Patienten mit Verwirrtheitssymptomen (n = 514) lag mit 12,3 % (n = 63) 4,4- mal höher als bei Patientinnen und Patienten ohne Verwirrtheitssymptome (n = 1417) mit 2,8 % (n = 39).” Zu diesem Vergleich geben die Autoren weder einen P-Wert noch ein 95%-Konfidenzintervall für das RR von 4.4 an. Berechne diese Werte.

Lösung

Wir erstellen die Daten anhand der Angaben aus dem Text:

group <- c(rep("delir", 514), rep("control", 1417))
fall <- c(rep("yes", 63), rep("no",514-63), rep("yes", 39), rep("no", 1417-39))

Anhand der beiden Vektoren können wir die \(2 \times 2\)-Tabelle erstellen:

table(group,fall)
##          fall
## group       no  yes
##   control 1378   39
##   delir    451   63

Nun kann diese Tabelle verwendet werden, um mit riskratio() den P-Wert und das 95%-Konfidenzintervall für das RR zu berechnen.

library(epitools)
riskratio(table(group,fall))
## $data
##          fall
## group       no yes Total
##   control 1378  39  1417
##   delir    451  63   514
##   Total   1829 102  1931
## 
## $measure
##          risk ratio with 95% C.I.
## group     estimate    lower    upper
##   control 1.000000       NA       NA
##   delir   4.453307 3.026076 6.553685
## 
## $p.value
##          two-sided
## group       midp.exact fisher.exact   chi.square
##   control           NA           NA           NA
##   delir   2.087219e-14 2.466358e-14 1.552347e-16
## 
## $correction
## [1] FALSE
## 
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"