Wie berechne ich, ob der Grad der Überlappung zwischen zwei Listen signifikant ist?


9

Wenn ich zwei Listen A und B habe, die beide Teilmengen einer viel größeren Liste C sind, wie kann ich feststellen, ob der Grad der Überlappung von A und B größer ist, als ich zufällig erwarten würde?

Sollte ich nur zufällig Elemente aus C mit den gleichen Längen wie die Listen A und B auswählen und diese zufällige Überlappung bestimmen und dies viele Male tun, um eine Art oder einen empirischen p-Wert zu bestimmen? Gibt es einen besseren Weg, dies zu testen?


Sie sollten Colins Antwort verwenden, aber Ihre Idee, eine Monte-Carlo-Simulation durchzuführen, ist auch richtig.

Antworten:


9

nymXmX

nAnBnCnABAB

nABHG(nA,nC,nB)

Um einen p-Wert zu berechnen, können Sie diesen R-Befehl verwenden:

#Some example values
n_A = 100;n_B = 200; n_C = 500; n_A_B = 50
1-phyper(n_A_B, n_B, n_C-n_B, n_A)
[1] 0.008626697

Wort der Vorsicht. Denken Sie an mehrere Tests, dh wenn Sie viele A- und B- Listen haben, müssen Sie Ihre p-Werte mit einer Korrektur anpassen. Zum Beispiel die FDR- oder Bonferroni-Korrekturen.


2

Die Antwort von csgillespie scheint bis auf eines richtig zu sein: Sie gibt die Wahrscheinlichkeit an, in der Überlappung P (x> n_A_B) streng mehr als n_A_B zu sehen, aber ich denke, OP möchte den p-Wert P (x> = n_A_B). Sie könnten Letzteres durch bekommen

n_A = 100;n_B = 200; n_C = 500; n_A_B = 50
phyper(n_A_B - 1, n_A, n_C-n_A, n_B, lower.tail = FALSE) 

+1 für lower.tail=FALSE. Ansonsten werden sehr kleine p-Werte (<1e-16) abgeschnitten.
Backlin
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.