Letzte Änderung am 24. May 2024 um 16:13:17

“Wer von seinem Tag nicht zwei Drittel für sich hat, ist ein Sklave.” — Friedrich Nietzsche

Was macht der Anteilstest?

Ein Anteilstest vergleicht die Anteile zweier oder mehrerer Gruppen. Da Anteile Wahrscheinlichkeiten sind, vergleicht der Anteilstest damit Wahrscheinlichkeiten des Auftretens eines Ereignisses.

Der Test auf Anteile oder auch Anteilstest, ist ein eher selten genutzter Test. Warum ist das so? Wir wollen hier Testen, ob sich das prozentuale Auftreten eines Ereignisses in der einen Gruppe \(p_1\) von der in einer anderen Gruppe \(p_2\) unterscheidet. Damit Testen wir nicht auf absolute Anteile sondern auf relative Anteile. Neben dem Test auf absolute Anteile, wie der \(\mathcal{X}^2\)-Test es rechnet, wollen wir manchmal auch relative Anteile testen. Also haben wir nicht 8 kranke Erdbeeren gezählt sondern 8 kranke Erdbeeren von insgesamt 12 Erdbeeren. Damit sind dann 66% bzw. 0.66 kranke Erdbeeren vorhanden. Wir rechnen also mit Wahrscheinlichkeiten, also eng. proportions. Wichtig ist zu wissen, dass wir trotz allem erst die Anzahl an beschädigten Erdbeeren \(x\) sowie die absolute Anzahl an Erdbeeren \(n\) brauchen. Das wird jetzt aber gleich in den folgenden Beispielen etwas klarer. Im Prinzip ist der Anteilstest also eine andere Art den \(\mathcal{X}^2\)-Test zu rechnen.

Dieses Kapitel wollen wir dann in drei Teile aufteilen. Als erstes schauen wir uns den klassischen Zweigruppentest an. Dieser Zweigruppentest unterscheidet sich nicht großartig von der Idee der anderen Zweigruppentests. Wir vergleichen hier nur zwei Wahrscheinlichkeiten.

Dann wollen wir uns noch einen anderen Fall anschauen, indem wir eine gemessene Wahrscheinlichkeit in einer Gruppe zu einem Referenzwert vergleichen. Dieser Fall ist bei den anderen statistischen Maßzahlen eher selten. Wir vergleichen eher selten einen beobachteten Mittelwert zu einem Referenzmittelwert.

Am Ende schauen wir uns dann noch den Gruppenvergleich mit mehreren Gruppen an. Das haben wir in den anderen Gruppenvergleichen etwas ausgelagert, aber der Vergleich von mehreren Wahrscheinlichkeiten ist eben etwas spezieller.

Gehen wir also im Folgenden einmal verscheidene Vergleich von relativen Anteilen oder auch Wahrscheinlichkeiten durch.

36.1 Genutzte R Pakete

Wir wollen folgende R Pakete in diesem Kapitel nutzen.

R Code [zeigen / verbergen]
pacman::p_load(tidyverse, parameters, rstatix, scales, 
               rcompanion, multcompView, multcomp, conflicted)
conflicts_prefer(dplyr::select)

Am Ende des Kapitels findest du nochmal den gesamten R Code in einem Rutsch zum selber durchführen oder aber kopieren.

36.2 Hypothesen

Manchmal wird es klarer, was ein Test eigentlich macht, wenn wir uns die Hypothesen anschauen. In unserem Fall testen wir, ob sich die Wahrscheinlichkeit für das Auftreten eines Ereignisses in der ersten Gruppe von der Wahrscheinlichkeit des Auftretens eines Ereignisses in der zweiten Gruppe unterschiedet. Als Beispiel können wir an eine Infektionswahrscheinlichkeit oder aber Anteil von beschädigten Erdbeeren denken. Unterscheiden sich also die Wahrscheinlichkeit \(p_1\) von der Wahrscheinlichkeit \(p_2\)? Wir erhalten damit also folgende Nullhypothese und Alternativhypothese.

\[ H_0: \; p_1 = p_2 \]

\[ H_A: \; p_1 \neq p_2 \]

Beim Anteilstest haben wir recht häufig den Fall vorliegen, dass wir nicht zwei Gruppen miteinander vergleichen wollen sondern Testen wollen, ob eine beobachtete Wahrscheinlichkeit sich von einem Referenzwert unterscheidet. Wir wollen also wissen, ob sich die Wahrscheinlichkeit \(35\%\) signifikant von \(50\%\) unterscheidet. Daher sieht unsere Nullhypothese und die entsprechende Alternative etwas anders aus. Ich gehe hier von einem recht häufigen Referenzwert von \(0.5\) also \(50\%\) aus.

\[ H_0: \; p_1 = 0.5 \]

\[ H_A: \; p_1 \neq 0.5 \]

Wir betrachten hier gleich beide Fälle, beginnen aber mit dem klassischen Zweigruppenvergleich. Dann schauen wir uns den Test gegen einen Referenzwert an bevor wir dann den Gruppenvergleich mit mehreren Gruppen betrachten.

36.3 Der Anteilstest

Im Folgenden also einmal die verschiedenen Arten zu Testen, ob sich eine Wahrscheinlichkeit für ein Ereignis in verschiedenen Fällen voneinander unterscheidet. Wir nutzen hierzu ein Beispiel zur Ernte von Erdbeeren. Praktisch kannst du dir aber jeden anderen Fall überlegen indem eben eine Erfolgs- oder Misserfolgswahrscheinlichkeit berechnet werden soll. Auch würde eine Rate passen, wie die Keimfähigkeit.

36.3.1 Vergleich zweier Anteile

Beginnen wir mit der Erdbeerernte. Wir haben zwei brandneue Robotertypen zum Ernten von Erdbeeren vorliegen. Einmal die Marke Picky und einmal den Roboter Colly. Wir wollen jetzt wieder bestimmen, wie viel Erdbeeren bei der Ernte beschädigt werden. Erdbeeren sind ja auch ein sehr weiches Obst. Wir vergleichen hier also wieder zwei Anteile miteinander. Der Roboter Picky beschädigt 76 von 100 Erdbeeren und der Roboter Colly beschädigt 91 von 100 Erdbeeren. Das sind ganz schön miese Werte, aber was will man machen, wir haben jetzt nur die beiden Roboter vorliegen. Die Frage ist nun, ob sich die beiden Roboter in der Häufigkeit der beschädigten Erdbeeren unterscheiden. Wir können hier eine 2x2 Kreuztabelle in der Tabelle 36.3 aufmachen und die jeweiligen Anteile berechnen. Picky beschädigt 76% der Erdbeeren und Colly ganze 91%.

Tabelle 36.1— Eine 2x2 Tabelle für die zwei Ernteroboter und der beschädigten Erdbeeren. Dargestellt sind die beobachteten Werte.
Damaged
Yes (1) No (0)
Robot Picky \(76\) \(24\) \(\mathbf{100}\)
Colly \(91\) \(9\) \(\mathbf{100}\)
\(\mathbf{167}\) \(\mathbf{33}\) \(n = 200\)

Wir können die erwarteten Anteile jetzt wie schon bekannt berechnen oder aber wir nutzen folgende Formel um \(\hat{p}\), die Wahrscheinlichkeit für ein Ereignis, zu berechnen. Wir nutzen dann \(\hat{p}\) um die erwarteten Werte \(E\) aus zurechnen. Dafür addieren wir alle beobachteten \(x\) zusammen und teilen diese Summe durch die gesamte Anzahl an Beobachtungen.

\[ \hat{p} = \cfrac{\sum x}{\sum n} = \cfrac{79 + 91}{100 + 100} = \cfrac{170}{200} = 0.85 \]

Im Folgenden die Rechenschritte nochmal in R aufgedröselt zum besseren nachvollziehen. Wie auch schon im obigen Beispiel berechnen wir erst die beobachten Anteil \(O\) sowie die erwartenden Anteile \(E\). Dann nutzen wir die Formel des \(\mathcal{X}^2\)-Test um die \(\mathcal{X}^2\)-Statistik zu berechnen.

R Code [zeigen / verbergen]
x <- c(76, 91)
n <- c(100, 100)
p <- sum(x)/sum(n)
O <- cbind(x, n - x)
E <- cbind(n * p, n * (1 - p))
sum((abs(O - E))^2/E)
[1] 8.165487

Auch hier vergleichen wir nochmal unser händisches Ergebnis mit dem Ergebnis der R Funktion prop.test(). Der Funktion übergeben wir dann einmal die beobachteten Anteile \(x\) sowie dann die jeweils Gesamtanzahlen \(n\). Wichtig ist hier, dass wir als 95% Konfidenzintervall die Differenz der beiden Wahrscheinlichkeiten erhalten.

R Code [zeigen / verbergen]
prop.test(x = c(76, 91), n = c(100, 100), correct = FALSE) 

    2-sample test for equality of proportions without continuity correction

data:  c(76, 91) out of c(100, 100)
X-squared = 8.1655, df = 1, p-value = 0.00427
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.25076198 -0.04923802
sample estimates:
prop 1 prop 2 
  0.76   0.91 

Wir wir sehen unterscheiden sich die beiden Anteile signifikant von \(76/100\) gleich 76% von \(91/100\) gleich 91%. Damit sollten wir den Roboter Picky nehmen, denn da werden prozentual weniger Erdbeeren zermanscht. Ob das jetzt gut oder schlecht ist 76% Erdbeeren zu zerstören ist aber wieder eine Frage, die die Statistik an dieser Stelle nicht beantworten kann.

36.3.2 Vergleich gegen einen Referenzwert

Nehmen wir ein Weiteres aber etwas konstruiertes Beispiel zur Erdbeerernte. Wir haben einen neuen Roboter entwickelt, der Erdbeeren erntet. Nun stellen wir fest, dass von 100 Erdbeeren 76 heile sind. Jetzt lesen wir im Handbuch, dass der Ernteroboter eigentlich 84% der Erdbeeren heile ernten sollte. Sind jetzt 76 von 100, also 76%, signifikant unterschiedlich von 84%? Oder können wir die Nullhypothese der Gleichheit zwischen den beiden Wahrscheinlichkeiten nicht ablehnen? Damit können wir den Test auf Anteile nutzen, wenn wir eine beobachtete Wahrscheinlichkeit oder Anteil \(p_1\) gegen eine gegebene Wahrscheinlichkeit oder Anteil als Referenzwert \(p_0\) vergleichen wollen.

In unserem Fall haben wir mit \(p_1\) die Wahrscheinlichkeit vorliegen, dass die Erdbeeren in unserem Experiment heile sind. Wir wissen also, dass \(p_1 = \cfrac{x}{n} = \cfrac{76}{100} = 0.76 = 76\%\) ist. Damit ist die Wahrscheinlichkeit \(p_1\) auch die beobachte Wahrscheinlichkeit. Wir erwarten auf der anderen Seite die Wahrscheinlichkeit \(p_0 = 0.84 = 84\%\) als Referenzwert. Die Roboterfirma hat uns ja zugesagt, dass 84% der Erdbeeren heile bleiben sollen.

Wir berechnen jetzt einmal die beobachten Werte. Zum einen haben wir \(x=76\) heile Erdbeeren von \(n=100\) Erdbeeren gezählt. Damit ergeben sich dann \(x = 76\) heile Erdbeeren und \(24\) beschädigte Erdbeeren. Die Summe muss ja am Ende wieder 100 Erdbeeren ergeben.

\[ \begin{aligned} O &= \begin{pmatrix} x &|& n - x \end{pmatrix} = \begin{pmatrix} 76 &|& 100 - 76 \end{pmatrix} \\ & = \begin{pmatrix} 76 &|& 24 \end{pmatrix} \end{aligned} \]

Dann müssen wir uns noch die Frage stellen, welche Anzahl an heilen Erdbeeren hätten wir erwartet? In diesem Fall ja 84% heile Erdbeeren. Das macht dann bei 100 Erdbeeren \(0.84 \cdot 100 = 84\) heile Erdbeeren und \((1 - 0.84) \cdot 100 = 16\) beschädigte Erdbeeren.

\[ \begin{aligned} E &= \begin{pmatrix} n \cdot p &|& n \cdot (1 - p) \end{pmatrix} = \begin{pmatrix} 100 \cdot 0.84 &|& 100 \cdot (1 - 0.84) \end{pmatrix} \\ & = \begin{pmatrix} 84 &|& 16 \end{pmatrix} \end{aligned} \]

Jetzt müssen wir nur noch die beobachteten Anteile mit den zu erwarteten Anteilen durch die \(\mathcal{X}^2\)-Formel in Kontext setzten. Wir subtrahieren von jedem beobachten Anteil den zu erwartenden Anteil, quadrieren und addieren auf. Dann erhalten wir die \(\mathcal{X}^2\)-Statistik.

\[ \chi^2_{D} = \sum\cfrac{(O-E)^2}{E} = \cfrac{(76 - 84)^2}{84} + \cfrac{(24 - 16)^2}{16} = 4.76 \]

Wir können diese einfache Berechnung dann auch schnell nochmal in R durchführen. Wir setzten dafür einfach x, n und p fest und berechnen dann die beobachten Anteile \(O\) sowwie die zu erwartenden Anteile \(E\). Wir berechnen dann hier auch den gleichen Wert für \(\mathcal{X}^2\)-Statistik.

R Code [zeigen / verbergen]
x <- 76
n <- 100
p <- 0.84
O <- cbind(x, n - x)
E <- cbind(n * p, n * (1 - p))
sum((abs(O - E))^2/E)
[1] 4.761905

Und wie immer gibt es auch eine Funktion prop.test(), die uns ermöglicht einen beobachteten Anteil x/n zu einem erwarteten Anteil p zu vergleichen. Auch hier sehen wir, dass sich die \(\mathcal{X}^2\)-Statistik aus der R Funktion nicht von unser berechneten \(\mathcal{X}^2\)-Statistik unterscheidet.

R Code [zeigen / verbergen]
prop.test(x = 76, n = 100, p = 0.84, correct = FALSE) 

    1-sample proportions test without continuity correction

data:  76 out of 100, null probability 0.84
X-squared = 4.7619, df = 1, p-value = 0.0291
alternative hypothesis: true p is not equal to 0.84
95 percent confidence interval:
 0.6676766 0.8330867
sample estimates:
   p 
0.76 

Wie immer können wir auch einen etwas komplexeren mathematischen Ansatz wählen und die Yateskorrektur verwenden. Dann sind natürlich die Formeln alle etwas anders und wir kirgen nicht die gleichen Zahlen raus.

Was ist die Yates Korrektur, die wir mit correct = TRUE auswählen? Die Korrektur von Yates subtrahiert von jedem Summanden des Chi-Quadrat-Tests 0.5, so dass die Chi-Quadrat-Statistik geringer ausfällt.

36.3.3 Gruppenvergleich

Im Folgenden haben wir jetzt nicht mehr zwei Gruppen, die wir miteinander vergleichen wollen, sondern mehrere Behandlungen als Gruppen. Wir haben uns in einem Experiment die beschädigten Erdbeeren nach vier neue Erntearten, A bis D, angeschaut. Beide Vektoren können wir dann in die Funktion prop.test() stecken.

R Code [zeigen / verbergen]
damaged  <- c(A = 105, B = 100, C = 139, D = 96)
berries <- c(106, 113, 156, 102)
prop.test(damaged, berries)

    4-sample test for equality of proportions without continuity correction

data:  damaged out of berries
X-squared = 11.747, df = 3, p-value = 0.008303
alternative hypothesis: two.sided
sample estimates:
   prop 1    prop 2    prop 3    prop 4 
0.9905660 0.8849558 0.8910256 0.9411765 

Wir erhalten dann einen \(p\)-Wert für die Signifikanz von 0.0056 wieder. Was testen wir hier eigentlich? Unsere Nullhypothese ist, dass alle paarweisen Wahrscheinlichkeiten zwischen den Gruppen gleich sind. Wie wir sehen ist es nicht der Fall, dass die Nullhypothese wahr ist. Wir haben hier vier Wahrscheinlichkeiten vorliegen und mindestens zwei unterscheiden sich. Welche das sind, ist wieder die Frage. Hierzu nutzen wir dann gleich die Funktion pairwise.prop.test(). Wir immer geht die Ausgabe auch schöner und aufgeräumter.

R Code [zeigen / verbergen]
prop.test(damaged, berries) |> 
  model_parameters()
4-sample test for equality of proportions without continuity correction

Proportion                        | Chi2(3) |     p
---------------------------------------------------
99.06% / 88.50% / 89.10% / 94.12% |   11.75 | 0.008

Alternative hypothesis: two.sided

Warum ist ein Test auf Anteile ein \(\mathcal{X}^2\)-Test? Hierfür brauchen wir noch die Informationen zu den nicht beschädigten Erdbeeren.

R Code [zeigen / verbergen]
non_damaged <- berries - damaged 
non_damaged
 A  B  C  D 
 1 13 17  6 

Nun können wir uns erstmal eine Tabelle bauen auf der wir dann den \(\mathcal{X}^2\)-Test und den prop.test() rechnen können. Der \(\mathcal{X}^2\)-Test ist nicht nur auf eine 2x2 Kreuztabelle beschränkt. Wir können in einem \(\mathcal{X}^2\)-Test auch andere \(n \times m\) Tabellen testen. Auf der anderen Seite ist der prop.test() auf eine \(n \times 2\) Tabelle beschränkt. Es müssen also immer zwei Spalten sein.

R Code [zeigen / verbergen]
damaged_tab <- cbind(damaged, non_damaged) |> 
  as.table()
damaged_tab
  damaged non_damaged
A     105           1
B     100          13
C     139          17
D      96           6

Wir erhalten die Tabelle 36.2 mit den beobachteten Werten sowie die Tabelle 36.3 mit den erwarteten Werten. Die Berechnung der erwarteten Werte kennen wir schon aus dem klassischen \(\mathcal{X}^2\)-Test. Hier machen wir die Berechnungen nur auf einer größeren Tabelle.

Tabelle 36.2— Eine 4x2 Tabelle für die vier Erntearten und der beschädigten Erdbeeren. Dargestellt sind die beobachteten Werte.
Damaged
Yes (1) No (0)
damaged non_damaged berries
Group A \(105\) \(1\) \(\mathbf{106}\)
B \(100\) \(13\) \(\mathbf{113}\)
C \(139\) \(17\) \(\mathbf{156}\)
D \(96\) \(6\) \(\mathbf{102}\)
\(\mathbf{440}\) \(\mathbf{37}\) \(n = 477\)

Jetzt können wir auch die Anteile der beschädigten Erdbeeren von allen Erdbeeren berechnen pro Ernteart berechnen.

\[ \begin{aligned} Pr(A) &= \cfrac{105}{106} = 0.9906 = 99.06\%\\ Pr(B) &= \cfrac{100}{113} = 0.8850 = 88.50\%\\ Pr(C) &= \cfrac{139}{156} = 0.8910 = 89.10\%\\ Pr(D) &= \cfrac{96}{102} = 0.9411 = 94.12\% \end{aligned} \]

Tabelle 36.3— Eine 4x2 Tabelle für die vier Erntearten und der beschädigten Erdbeeren. Dargestellt sind die zu erwartenden Werte, die sich aus den Randsummen ergeben würden.
Damaged
Yes (1) No (0)
damaged non_damaged berries
Group A \(\cfrac{440 \cdot 106}{477} = 97.78\) \(\cfrac{37 \cdot 106}{477} = 8.22\) \(\mathbf{106}\)
B \(\cfrac{440 \cdot 113}{477} = 104.23\) \(\cfrac{37 \cdot 113}{477} = 8.77\) \(\mathbf{113}\)
C \(\cfrac{440 \cdot 156}{477} = 143.90\) \(\cfrac{37 \cdot 156}{477} = 12.10\) \(\mathbf{156}\)
D \(\cfrac{440 \cdot 102}{477} = 94.09\) \(\cfrac{37 \cdot 102}{477} = 7.91\) \(\mathbf{102}\)
\(\mathbf{440}\) \(\mathbf{37}\) \(n = 477\)

Schauen wir uns nun an, ob es einen Unterschied zwischen den vier Erntearten A bis D für die Erdbeeren gibt. Einmal nutzen wir hierfür die Funktion chisq.test() und einmal die Funktion prop.test().

R Code [zeigen / verbergen]
chisq.test(damaged_tab) |> 
  model_parameters()
Pearson's Chi-squared test

Chi2(3) |     p
---------------
11.75   | 0.008
R Code [zeigen / verbergen]
prop.test(damaged_tab) |> 
  model_parameters()
4-sample test for equality of proportions without continuity correction

Proportion                        | Chi2(3) |     p
---------------------------------------------------
99.06% / 88.50% / 89.10% / 94.12% |   11.75 | 0.008

Alternative hypothesis: two.sided

Nachdem wir beide Funktionen gerechnet haben, sehen wir, dass beide Tests auf der \(\mathcal{X}^2\) Statistik basieren. Das macht ja auch Sinn, denn wir rechnen ja die Proportions indem wir die beobachteten Werte durch die Gesamtzahl berechnen. Hier haben wir im Prinzip die gleiche Idee wie schon in den beiden obigen Beispielen umgesetzt. Wir können daher den \(\mathcal{X}^2\)-Test auch einmal per Hand rechnen und kommen auf fast die gleiche \(\mathcal{X}^2\)-Statistik. Wir haben eine leichte andere Statistik, da wir hier mehr runden.

\[ \begin{aligned} \chi^2_{D} &= \cfrac{(105 - 97.78)^2}{97.78} + \cfrac{(1 - 8.22)^2}{8.22} + \\ &\phantom{=}\;\; \cfrac{(100 - 104.23)^2}{104.23} + \cfrac{(13 - 8.77)^2}{8.77} + \\ &\phantom{=}\;\; \cfrac{(139 - 143.90)^2}{143.90} + \cfrac{(17 - 12.10)^2}{12.10} + \\ &\phantom{=}\;\; \cfrac{(96 - 94.09)^2}{94.09} + \cfrac{(6 - 7.91)^2}{7.91} = 11.74 \approx 10.04 \end{aligned} \]

Wir wissen nun, dass es mindestens einen paarweisen Unterschied zwischen den Wahrscheinlichkeiten für eine Beschädigung der Erdbeeren der vier Behandlungen gibt.

Führen wir den Test nochmal detaillierter mit der Funktion prop_test() aus dem R Paket {rstatix} durch. Es handelt sich hier um eine Alternative zu der Standardfunktion prop.test(). Das Ergebnis ist das Gleiche, aber die Aufarbeitung der Ausgabe ist anders und manchmal etwas besser weiterverarbeiteten.

Der Zugang ist etwas anders, deshalb bauen wir uns erstmal eine Tabelle mit den beschädigten und nicht beschädigten Erdbeeren. Dann benennen wir uns noch die Tabelle etwas um, damit haben wir dann einen besseren Überblick. Eigentlich unnötig, aber wir wollen uns hier ja auch mal mit der Programmierung beschäftigen.

R Code [zeigen / verbergen]
damaged_tab <- rbind(damaged, non_damaged) |> 
  as.table()
dimnames(damaged_tab) <- list(
  Infected = c("yes", "no"),
  Groups = c("A", "B", "C", "D")
)
damaged_tab 
        Groups
Infected   A   B   C   D
     yes 105 100 139  96
     no    1  13  17   6

Dann können wir die Funktion prop_test() nutzen um den Test zu rechnen. Wir erhalten hier viele Informationen und müssen dann schauen, was wir dann brauchen. Dafür nutzen wir dann die Funktion select() und mutieren dann die Variablen in der Form, wie wir die Variablen haben wollen.

R Code [zeigen / verbergen]
prop_test(damaged_tab, detailed = TRUE) |> 
  select(matches("estimate"), p) |> 
  mutate(p = pvalue(p)) |> 
  mutate_if(is.numeric, round, 2)
# A tibble: 1 × 5
  estimate1 estimate2 estimate3 estimate4 p    
      <dbl>     <dbl>     <dbl>     <dbl> <chr>
1      0.99      0.88      0.89      0.94 0.008

Wir erhalten auch hier das gleiche Ergebnis. War auch zu erwarten, denn im Kern sind die beiden Funktionen prop.test() und prop_test() gleich. Nun können wir uns einmal den paarweisen Vergleich anschauen. Wir wollen dann im Anschluß noch das Compact letter display für die Darstellung der paarweisen Vergleiche berechnen. Dafür brauchen wir dann noch folgende R Pakete. Du kannst mehr über das Compact letter display in dem Kapitel Multiple Vergleiche oder Post-hoc Tests erfahren.

Die Standardfunktion für die paarweisen Vergleiche von Anteilen in R ist die Funktion pairwise.prop.test(). Wir wollen hier einmal die \(p\)-Werte nicht adjustieren, deshalb schreiben wir auch p.adjust.method = "none".

R Code [zeigen / verbergen]
pairwise.prop.test(damaged, berries, 
                   p.adjust.method = "none") 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  damaged out of berries 

  A      B      C     
B 0.0035 -      -     
C 0.0040 1.0000 -     
D 0.1118 0.2264 0.2466

P value adjustment method: none 

Wir können auch die Funktion pairwise_prop_test() aus dem R Paket {rstatix} nutzen. Hier haben wir dann eine andere Ausgabe der Vergleiche. Manchmal ist diese Art der Ausgabe der Ergebnisse etwas übersichtlicher. Wir nutzen dann noch die Funktion pvalue() um die \(p\)-Werte einmal besser zu formatieren.

R Code [zeigen / verbergen]
pairwise_prop_test(damaged_tab, 
                   p.adjust.method = "none") |> 
  mutate(p = pvalue(p.adj))
# A tibble: 6 × 5
  group1 group2 p        p.adj p.adj.signif
  <chr>  <chr>  <chr>    <dbl> <chr>       
1 A      B      0.004  0.00354 **          
2 A      C      0.004  0.00401 **          
3 B      C      >0.999 1       ns          
4 A      D      0.112  0.112   ns          
5 B      D      0.226  0.226   ns          
6 C      D      0.247  0.247   ns          

Dann benutzen wir noch die Funktion multcompLetters() um uns das Compact letter display wiedergeben zu lassen.

R Code [zeigen / verbergen]
pairwise.prop.test(damaged, berries, 
                   p.adjust.method = "none") |> 
  pluck("p.value") |> 
  fullPTable() |> 
  multcompLetters() |> 
  pluck("Letters")
   A    B    C    D 
 "a"  "b"  "b" "ab" 

Hier sehen wir dann auch den Unterschied zwischen den beiden Funktionen. Wir können für die Funktion pairwise_prop_test() etwas einfacher das Compact letter display berechnen lassen. Wir müssen uns nur eine neue Spalte contrast mit den Vergleichen bauen.

R Code [zeigen / verbergen]
pairwise_prop_test(damaged_tab, 
                   p.adjust.method = "none") |> 
  mutate(contrast = str_c(group1, "-", group2)) |> 
  pull(p, contrast) |> 
  multcompLetters() 
   A    B    C    D 
 "a"  "b"  "b" "ab" 

Am Ende sehen wir, dass sich die Behandlung \(A\) von den Behandlungen \(B\) und \(C\) unterscheidet, da sich die Behandlungen nicht den gleichen Buchstaben teilen. Die Behandlung \(A\) unterscheidet sich aber nicht von der Behandlung \(D\). In dieser Art und Weise können wir dann alle Behandlungen durchgehen. Du kannst mehr über das Compact letter display in dem Kapitel Multiple Vergleiche oder Post-hoc Tests erfahren.