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
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.
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?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:
##
## 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:
## $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.
## [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:
## $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"
## $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"
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.
Wir arbeiten mit den bisherigen Daten weiter.
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.riskratio() aus dem Paket
epitools, um das Risk Ratio zu berechnen. Oben haben wir
bereits sichergestellt, dass die Tabelle richtig orientiert ist.## $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"
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.
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:
## $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"
## $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"
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.
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:
## 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.
## $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"