Die folgende 2x2 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 zum den Daten.
## outcome
## treatment survived death
## placebo 354 52
## aspirin 725 85
Du kannst dir diese Tabelle in R
selber “nachbauen”:
# Matrix anhand der gegebenen Werte erstellen
<- matrix(c(354, 52, 725, 85), byrow = TRUE, ncol = 2)
m # Reihen und Spalten benenen
rownames(m) <- c("placebo", "aspirin")
colnames(m) <- c("survived", "died")
# aus einer Matrix eine Tabelle machen
<- as.table(m)
tab tab
## survived died
## placebo 354 52
## aspirin 725 85
Manchmal möchte man auf Grundlage einer 2x2 Tabelle die nicht
aggregierten Daten zurückgewinnen (z.B. um Grafiken zu erstellen). Dazu
gibt es eine praktische Funktion aus dem Paket rstatix
.
library(rstatix)
<- counts_to_cases(tab)
d.aspirin # Variablen des erstellen DF's benennen
names(d.aspirin) <- c("gruppe", "outcome")
head(d.aspirin)
## gruppe outcome
## 1 placebo survived
## 2 placebo survived
## 3 placebo survived
## 4 placebo survived
## 5 placebo survived
## 6 placebo survived
Verwende für die Aufgaben die oben gezeigte Tabelle.
Berechne anhand der Normalapproximation für beide Gruppen die Proportion und ein dazugehörigens 95% CI der Personen, welche gestorben sind.
Vergleiche die manuellen Berechnungen mit dem Resultat der in
R
implementierten Funktion prop.test()
.
Interpretiere!
Wir basieren die Berechnungen auf den folgenden Angaben:
tab
## survived died
## placebo 354 52
## aspirin 725 85
Anhand der Tabelle berechnen wir zuerst die Proportion, den Standardfehler und schliesslich das 95% CI. Beachten Sie dass
\[ SE_{\hat{\pi}} = \sqrt{\frac{\hat{\pi}(1-\hat{\pi})}{n}}. \]
<- tab[, 2] # Todesfälle pro Gruppe
cases <- tab[, 1] + tab[, 2] # n pro Gruppe
n <- cases/n # Proportion pro Gruppe
prop <- sqrt((prop * (1-prop))/n) # Standardfehler pro Gruppe
se.prop <- prop-1.96*se.prop
CI.lower <- prop+1.96*se.prop
CI.upper cbind(CI.lower, CI.upper)
## CI.lower CI.upper
## placebo 0.09557231 0.1605853
## aspirin 0.08383222 0.1260443
Mit prop.test()
erhalten wir die folgenden
Resultate.
Placebo:
prop.test(x = cases["placebo"], n = n["placebo"])
##
## 1-sample proportions test with continuity correction
##
## data: cases["placebo"] out of n["placebo"], null probability 0.5
## X-squared = 223.16, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.09793556 0.16545553
## sample estimates:
## p
## 0.1280788
Aspirin:
prop.test(x = cases["aspirin"], n = n["aspirin"])
##
## 1-sample proportions test with continuity correction
##
## data: cases["aspirin"] out of n["aspirin"], null probability 0.5
## X-squared = 504.1, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.08510476 0.12860969
## sample estimates:
## p
## 0.1049383
Die Proportionen betragen 12.81% (Placebo), bzw. 10.49% (Aspirin).
Weil das n relativ gross ist, führt die Berechnung unter der
Normalapproximation fast zum gleichen Ergebnis wie die
prop.test()
Funktion. Wie sehen, dass sich die 95% CIs der
beiden Gruppen überlappen. Aus diesem Grund wissen wir bereits jetzt,
dass auf dem 5%-Niveau keine Evidenz vorliegt, dass sich die beiden
Proportionen unterscheiden.
Standardmässig testet prop.test()
, ob sich die
Proportion von 0.5 unterscheidet. In diesem Fall interessiert uns dieser
Test (und folglich der P-Wert nicht). Mit dem Argument
p = …
könnte man \(H_0\)
individuell anpassen. Es kommt bei Proportionen jedoch häufig vor, dass
man primär an einem 95% CI interessiert ist.
Es wird weiterhin mit der 2x2 Tabelle von oben gerechnet.
Berechnen Sie die Proportionsdifferenz zwischen der Placebo- und der Aspiringruppe und berechnen Sie mit Hilfe der Normalapproximation ein 95% CI und einen P-Wert für diese Differenz.
Wiederholen Sie die Berechnungen mit Hilfe der
prop.test()
Funktion. Vergleichen und Interpretieren
Sie.
Wir berechnen die Differenz und den Standardfehler für diese Differenz:\[ SE_{\hat{\pi_1}-\hat{\pi_2}} = \sqrt{SE_{\hat{\pi_1}}^2 + SE_{\hat{\pi_2}}^2} \]
Ob Sie Placebo-Aspirin oder Aspirin-Placebo rechnen, spielt keine Rolle, solange die Interpretation sinngemäss erfolgt.
<- prop["placebo"] - prop["aspirin"]
prop.diff <- sqrt(se.prop["placebo"]^2 + se.prop["aspirin"]^2)
se.prop.diff <- prop.diff-1.96*se.prop.diff
CI.diff.lower <- prop.diff+1.96*se.prop.diff
CI.diff.upper cbind(CI.diff.lower, CI.diff.upper)
## CI.diff.lower CI.diff.upper
## placebo -0.01561689 0.06189798
Den P-Wert berechnen wir via z-Transformation:
<- prop.diff/se.prop.diff
z <- 2*pnorm(-abs(z))
p p
## placebo
## 0.2419047
Mit der prop.test() Funktion sind die Ergebniss sehr ähnlich:
prop.test(x = cases, n = n)
##
## 2-sample test for equality of proportions with continuity correction
##
## data: cases out of n
## X-squared = 1.2264, df = 1, p-value = 0.2681
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.01746498 0.06374608
## sample estimates:
## prop 1 prop 2
## 0.1280788 0.1049383
Die Proportion der Personen, welche gestorben sind, ist in der Aspiringruppe 2.3% tiefer. Dies Entspricht der Risk Difference (RD). Wir vertrauen zu 95% darauf, dass die wahre RD im Intervall [-0.017; 0.064] liegt. Das 95% CI sagt uns, dass die RD sowohl negativ wie positiv sein kann. Die Evidenz gegen \(H_0\) ist also schwach. Dies bestätigt der hohe P-Wert: Die Wahrscheinlichkeit für einen Unterschied von 2.3% (oder einen extremeren) unter der Annahme, dass \(H_0\) stimmt, ist 26.81%.