Si tengo dos listas A y B, las cuales son subconjuntos de una lista C mucho más grande, ¿cómo puedo determinar si el grado de superposición de A y B es mayor de lo que esperaría por casualidad?
¿Debería seleccionar aleatoriamente elementos de C de la misma longitud que las listas A y B y determinar esa superposición aleatoria, y hacer esto muchas veces para determinar algún tipo de valor p empírico? ¿Hay una mejor manera de probar esto?
statistical-significance
Estofado
fuente
fuente
Respuestas:
Si entiendo su pregunta correctamente, debe usar la distribución hipergeométrica . Esta distribución generalmente se asocia con los modelos de urna, es decir, hay bolas en una urna, están pintadas de rojo, y usted saca bolas de la urna. Entonces, si es el número de bolas en su muestra de que son rojas, tiene una distribución hipergeométrica.n y m X m X
Para su ejemplo específico, dejar que , y denotan las longitudes de sus tres listas y dejar que denota la coincidencia entre y . EntoncesnA nB nC nAB A B
Para calcular un valor p, puede usar este comando R:
Palabra de precaución. Recuerde múltiples pruebas, es decir, si tiene muchas listas A y B , entonces necesitará ajustar sus valores p con una corrección. Por ejemplo, las correcciones FDR o Bonferroni.
fuente
La respuesta de csgillespie parece correcta, excepto por una cosa: da la probabilidad de ver estrictamente más de n_A_B en la superposición, P (x> n_A_B), pero creo que OP quiere el valor P (x> = n_A_B). Podrías obtener este último por
fuente
lower.tail=FALSE
. De lo contrario, los valores p muy pequeños (<1e-16) se truncan.