Jika saya memiliki dua daftar A dan B, keduanya merupakan himpunan bagian dari daftar C yang jauh lebih besar, bagaimana saya bisa menentukan apakah tingkat tumpang tindih A dan B lebih besar daripada yang saya harapkan secara kebetulan?
Haruskah saya memilih elemen secara acak dari C dengan panjang yang sama dengan daftar A dan B dan menentukan tumpang tindih acak itu, dan melakukan ini berkali-kali untuk menentukan beberapa jenis atau nilai p empiris? Apakah ada cara yang lebih baik untuk menguji ini?
Jawaban:
Jika saya memahami pertanyaan Anda dengan benar, Anda perlu menggunakan distribusi Hypergeometric . Distribusi ini biasanya dikaitkan dengan model guci, yaitu adan bola dalam guci, y dicat merah, dan Anda menggambar m bola dari guci. Lalu jikaX adalah jumlah bola dalam sampel Anda m itu merah, X memiliki distribusi hyper-geometric.
Untuk contoh spesifik Anda, biarkannA , nB dan nC menunjukkan panjang tiga daftar Anda dan biarkan nAB menunjukkan tumpang tindih antara A dan B . Kemudian
Untuk menghitung nilai p, Anda bisa menggunakan perintah R ini:
Kata hati-hati Ingat beberapa pengujian, yaitu jika Anda memiliki banyak daftar A dan B , maka Anda perlu menyesuaikan nilai-p Anda dengan koreksi. Misalnya saja koreksi FDR atau Bonferroni.
sumber
Jawaban csgillespie tampaknya benar kecuali untuk satu hal: itu memberikan kemungkinan melihat lebih dari n_A_B di overlap, P (x> n_A_B), tapi saya pikir OP ingin pvalue P (x> = n_A_B). Anda bisa mendapatkan yang terakhir
sumber
lower.tail=FALSE
. Nilai p yang sangat kecil (<1e-16) terpotong sebaliknya.