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). Dazu gibt es eine praktische
Funktion aus dem Paket rstatix.
library(rstatix)
df.aspirin <- counts_to_cases(tab)
# Variablen des erstellten Dataframes benennen
names(df.aspirin) <- c("gruppe", "outcome")
head(df.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
tab.
Berechne anhand der Normalapproximation für beide Gruppen jeweils die Proportion \(\hat{\pi}\) der Personen, die gestorben sind, sowie ein zugehöriges 95%-Konfidenzintervall. Der Standardfehler ist
\[ SE_{\hat{\pi}} = \sqrt{\frac{\hat{\pi}(1-\hat{\pi})}{n}}, \]
Vergleiche die manuellen Berechnungen mit dem Resultat der in
R implementierten Funktion prop.test().
Interpretiere!
Wir stützen die Berechnungen auf die folgenden Angaben:
## survived died
## placebo 354 52
## aspirin 725 85
Anhand der Tabelle berechnen wir zuerst die Proportion, den Standardfehler und schliesslich das 95%-Konfidenzintervall. Dabei gilt:
\[ SE_{\hat{\pi}} = \sqrt{\frac{\hat{\pi}(1-\hat{\pi})}{n}}. \]
cases <- tab[, 2] # Todesfälle pro Gruppe
n <- tab[, 1] + tab[, 2] # n pro Gruppe
prop <- cases/n # Proportion pro Gruppe
se.prop <- sqrt((prop * (1-prop))/n) # Standardfehler pro Gruppe
CI.lower <- prop-1.96*se.prop
CI.upper <- prop+1.96*se.prop
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:
##
## 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:
##
## 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
Bemerkung: Für einen Binomialanteil gibt es verschiedene
Konfidenzintervalle. Das oben mithilfe der Normalapproximation
berechnete Intervall heisst Wald-Intervall und wird in
der folgenden Tabelle als asymptotic bezeichnet. Für einen
einzelnen Anteil berechnet prop.test() ein
Score-Intervall (Wilson-Intervall), standardmässig mit
Stetigkeitskorrektur. Die Methoden werden später genauer behandelt.
## method x n mean lower upper
## 1 asymptotic 85 810 0.1049383 0.08383261 0.1260439
## 2 prop.test 85 810 0.1049383 0.08510476 0.1286097
Die Proportionen betragen also 12.81 % (Placebo) bzw. 10.49 % (Aspirin).
Da die Gruppengrössen und die Anzahlen der Todesfälle und
Überlebenden ausreichend gross sind, liefern das Wald-Intervall und die
Funktion prop.test() hier ähnliche Ergebnisse. Wir sehen,
dass sich die 95%-Konfidenzintervalle der beiden Gruppen überlappen. Das
bedeutet jedoch nicht zwingend, dass die Differenz der Proportionen
statistisch nicht signifikant ist, da der Standardfehler der Differenz
ein anderer ist als die Standardfehler der Einzelproportionen.
Für einen einzelnen Anteil testet prop.test()
standardmässig, ob sich die Proportion von 0.5 unterscheidet (\(H_0: \pi = 0.5\)). In diesem Fall
interessiert uns dieser Test (und folglich sein 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 der Präzision der
Schätzung interessiert ist, die sich anhand eines
95%-Konfidenzintervalls beurteilen lässt.
Es wird weiterhin mit der \(2 \times 2\)-Tabelle von oben gerechnet.
Berechne die Proportionsdifferenz zwischen der Placebo- und der Aspiringruppe und berechne mithilfe der Normalapproximation ein 95%-Konfidenzintervall und einen P-Wert für diese Differenz.
Wiederhole die Berechnungen mithilfe der Funktion
prop.test(). Vergleiche und interpretiere die
Ergebnisse.
Wir berechnen die Differenz
\[ \hat{\pi}_1-\hat{\pi}_2 \]
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}. \]
Die Reihenfolge der Gruppen bestimmt das Vorzeichen der Differenz und die Orientierung des Konfidenzintervalls. Interpretiere die Ergebnisse entsprechend der gewählten Reihenfolge. Der zweiseitige P-Wert bleibt bei einer Umkehrung der Reihenfolge unverändert.
prop.diff <- prop["placebo"] - prop["aspirin"]
se.prop.diff <- sqrt(se.prop["placebo"]^2 + se.prop["aspirin"]^2)
CI.diff.lower <- prop.diff-1.96*se.prop.diff
CI.diff.upper <- prop.diff+1.96*se.prop.diff
cbind(CI.diff.lower, CI.diff.upper)## CI.diff.lower CI.diff.upper
## placebo -0.01561689 0.06189798
Den zweiseitigen P-Wert für \(H_0: \pi_1 - \pi_2 = 0\) berechnen wir mit einem Wald-Test anhand der standardnormalapproximierten Teststatistik:
## placebo
## 0.2419047
Die Funktion prop.test() liefert ähnliche Ergebnisse.
Für die Differenz zweier Anteile berechnet sie ein
Wald-Intervall mit Stetigkeitskorrektur. Ihr Test
verwendet unter der Nullhypothese einen gemeinsam geschätzten Anteil;
der obige Wald-Test verwendet dagegen die separat geschätzten Anteile
zur Berechnung des Standardfehlers.
Ohne Stetigkeitskorrektur entspricht der Test von
prop.test() hier einem Score-Test, dessen
quadratische Teststatistik exakt mit der
Pearson-Chi-Quadrat-Teststatistik übereinstimmt. Das Konfidenzintervall
der Anteilsdifferenz wird dagegen nach dem Wald-Verfahren berechnet; nur
für einen einzelnen Anteil liefert prop.test() ein Score-
beziehungsweise Wilson-Intervall. Mit correct = FALSE
entfällt die Stetigkeitskorrektur, der Unterschied zwischen den
Standardfehlern des Score- und des manuellen Wald-Tests bleibt jedoch
bestehen. Die Herleitung erläutert der folgende Exkurs; die Grundlagen
der Likelihood-Inferenz behandeln wir später.
##
## 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
Der beobachtete Anteil der verstorbenen Personen ist in der
Aspiringruppe um etwa 2.3 Prozentpunkte niedriger. Für die Differenz
Placebo minus Aspirin liefert prop.test() ein
95%-Konfidenzintervall von etwa [-0.017; 0.064], also von −1.7 bis 6.4
Prozentpunkten. Unter den Modellannahmen sind damit sowohl negative als
auch positive Differenzen mit den Daten vereinbar. Das Intervall enthält
0; der zweiseitige Test ist auf dem 5%-Niveau nicht statistisch
signifikant. Der P-Wert von 26.81 % ist unter \(H_0\) die Wahrscheinlichkeit einer
mindestens so grossen Teststatistik wie der beobachteten. Er ist keine
Wahrscheinlichkeit dafür, dass \(H_0\)
zutrifft. Ein 95%-Konfidenzverfahren überdeckt bei wiederholter
Stichprobenziehung unter denselben Modellannahmen in ungefähr 95 % der
Fälle den wahren Parameter.