Fisher-Exakttest auf gepaarte Daten


9

Bei Fällen mit Lungenkrebs und übereinstimmenden Kontrollen (ohne Lungenkrebs) (Übereinstimmung basierend auf Alter, Geschlecht usw.). Um Beweise für die Auswirkung des Rauchens auf Lungenkrebs zu finden, habe ich den genauen Fisher-Test in der Kontingenztabelle verwendet. Dies berücksichtigte jedoch nicht, dass die Kontrollen und Fälle übereinstimmten. 4040

Also habe ich mich gefragt, ob es eine Möglichkeit gibt, den exakten Fisher-Test zu verwenden, der die Übereinstimmung zwischen den beiden Gruppen berücksichtigt.

Antworten:


8

Sie benötigen den McNemar-Test ( http://en.wikipedia.org/wiki/McNemar%27s_test , http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3346204/ ). Es folgt ein Beispiel:

1300 Punkte und 1300 übereinstimmende Kontrollen werden untersucht. Der Raucherstatus wird wie folgt angegeben:

             Normal   
           |no  |yes|
Cancer|No  |1000|40 |
      |Yes |200 |60 |

Jeder Eintrag in der Tabelle enthält Informationen zu einem CASE-CONTROL-PAAR: 1000 bedeutet in 1000 Fall-Kontroll-Paaren, keiner war Raucher. 40 ist die Anzahl der Fall-Kontroll-Paare, bei denen die Kontrolle Raucher war und bei Krebspatienten nicht, und so weiter. Der folgende R-Code kann verwendet werden, um diese Tabelle zu generieren und den McNemar-Test durchzuführen.

mat = as.table(rbind(c(1000, 40), c( 200, 60) ))
colnames(mat) <- rownames(mat) <- c("Nonsmoker", "Smoker")
names(dimnames(mat)) = c("Cancer", "Normal")
mat
#                  Normal
#              Nonsmoker Smoker
# Cancer
#  Nonsmoker      1000     40
#  Smoker          200     60


mcnemar.test(mat)

#        McNemar's Chi-squared test with continuity correction
#
#data:  mat
#McNemar's chi-squared = 105.34, df = 1, p-value < 2.2e-16

Der McNemar-Test wird auch verwendet, um die Auswirkung einer Intervention auf eine binäre Ergebnisvariable zu bewerten. Das Vorher-Nachher-Ergebnispaar wird wie oben angegeben und getestet.

Bearbeiten: Erweitern des Beispiels von @gung, wenn der Raucherstatus in Ihrem Datenrahmen mydf wie folgt aufgeführt ist:

pairID  cancer  control
1       1       1
2       1       1
3       1       0
...

Der McNemars-Test kann mit folgenden R-Befehlen durchgeführt werden:

> tt = with(mydf, table(cancer, control))
> tt
      control
cancer 0 1
     0 5 1
     1 3 2

> mcnemar.test(tt)

        McNemar`s Chi-squared test with continuity correction

data:  tt
McNemar`s chi-squared = 0.25, df = 1, p-value = 0.6171

Welchen Test verwenden Sie für mehrere Kontrollen pro Fall, beispielsweise 10 Kontrollen pro Fall?
eXpander

Dies würde eine separate Frage und Diskussion verdienen. Ich denke, man kann jeden Fall mit dem Mittelwert seiner Kontrollen koppeln und dann kann McNemars Test verwendet werden.
rnso

5

Sie haben Recht, dass der genaue Test von Fisher für Ihre Daten ungeeignet ist. Sie müssen Ihre Kontingenztabelle neu erstellen. Die neue Tabelle ist für Paare gedacht , daher werden anscheinend halb so viele Daten dargestellt (in Ihrem Fall 40 statt 80). Stellen Sie sich zum Beispiel vor, Ihre Daten sehen so aus (jeder Satz gepaarter Probanden befindet sich in einer eigenen Zeile und 1weist auf einen Raucher hin):

cancer  control
1       1
1       1
1       0
1       0
1       0
0       1
0       0
0       0
0       0
0       0
0       0

Dann könnte Ihre alte Kontingenztabelle gewesen sein:

       cancer  control
smoker 5       3
non    6       8

Ihre neue Kontingenztabelle sieht folgendermaßen aus:

            control
cancer    smoker  non           
  smoker  2       3
  non     1       5

Die erste Kontingenztabelle summierte sich auf 22 (die Anzahl der Gesamtfächer in Ihrer Studie), die zweite Kontingenztabelle summierte sich auf 11 (die Anzahl der übereinstimmenden Paare).

Wenn Ihre Daten auf diese Weise dargestellt werden, interessiert Sie, ob die Randanteile gleich sind. Der Test dafür ist McNemars Test . Ich habe McNemars Test hier und hier erklärt .


1
Beachten Sie, dass der McNemar-Test für dichotome Daten dem Vorzeichentest entspricht. Das OP kann daher einen Vorzeichentest verwenden (ggf. mit Permutation oder Monte-Carlo-Signifikanztest).
ttnphns

1
@ttnphns, ich diskutiere das in den verknüpften Threads, in denen ich McNemars Test im Detail erkläre.
Gung - Reinstate Monica

1

Es sollte nicht erforderlich sein, einen gepaarten Test zu verwenden. Die Übereinstimmung der Populationen stellt fest, dass die Verteilung der Kovaraiten (Alter, ...) in den beiden Populationen gleich ist, so dass das Bild nicht "verzerrt" wird.

Der Test vergleicht die Mittelwerte der Populationen, so dass eine Paarung von Individuen nicht erforderlich ist. Dies ist nur für "wiederholte" Messungen erforderlich, z. B. zum Vergleichen von Menas vor und nach der Behandlung derselben Population.


0

Ja und nein:

Wahrscheinlich fällt Ihr Fall unter den Fall Pearce (2015) : Der Punkt im Artikel ist, dass die Variablen, die Sie zur Auswahl der Kontrolle verwenden, in der Studie und nicht im Test kontrolliert werden sollten. Das könnte aufgrund der N = 80 schwierig sein.

Ich hoffe das hilft :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.