En la tradicional paradoja del cumpleaños, la pregunta es "cuáles son las posibilidades de que dos o más personas en un grupo de personas compartan un cumpleaños". Estoy atrapado en un problema que es una extensión de esto.
En lugar de saber la probabilidad de que dos personas compartan un cumpleaños, necesito extender la pregunta para saber cuál es la probabilidad de que o más personas compartan un cumpleaños. Con puede hacer esto calculando la probabilidad de que no haya dos personas compartiendo un cumpleaños y restando eso de , pero no creo que pueda extender esta lógica a números mayores de .
Para complicar aún más esto, también necesito una solución que funcione para números muy grandes para (millones) (miles).
probability
combinatorics
birthday-paradox
Simon Andrews
fuente
fuente
Respuestas:
Este es un problema de conteo: hay posibles asignaciones de b cumpleaños para n personas. De ellos, que q ( k ; n , b ) sea el número de tareas para las cuales no hay cumpleaños compartido por más de k personas, pero al menos un cumpleaños es compartido por k personas. La probabilidad que buscamos se puede encontrar sumando q ( k ; n , b ) para los valores apropiados de k y multiplicando el resultado por b - n .bn b n q(k;n,b) k k q(k;n,b) k b−n
Estos recuentos se pueden encontrar exactamente para valores de menores que varios cientos. Sin embargo, no seguirán ninguna fórmula directa: tenemos que considerar los patrones de las formas en que se pueden asignar los cumpleaños . Ilustraré esto en lugar de proporcionar una demostración general. Sea n = 4 (esta es la situación interesante más pequeña). Las posibilidades son:n n=4
En general, el código es una tupla de recuentos cuyos k th estipula elemento cuántas fechas de nacimiento distintas son compartidos por exactamente k personas. Así, en particular,{a[1],a[2],…} kth k
Tenga en cuenta, incluso en este caso simple, que hay dos formas de alcanzar el máximo de dos personas por cumpleaños: una con el código y otra con el código { 2 , 1 } .{0,2} {2,1}
Podemos contar directamente el número de posibles asignaciones de cumpleaños correspondientes a cualquier código dado. Este número es producto de tres términos. Uno es un coeficiente multinomial; cuenta el número de formas de dividir personas en un [ 1 ] grupos de 1 , un [ 2 ] grupos de 2 , y así sucesivamente. ¡Debido a que la secuencia de grupos no importa, tenemos que dividir este coeficiente multinomial por un [ 1 ] ! a [ 2 ] ! ⋯n a[1] 1 a[2] 2 a[1]!a[2]!⋯ ; su recíproco es el segundo término. Finalmente, alinee los grupos y asígneles un cumpleaños a cada uno: hay candidatos para el primer grupo, b - 1 para el segundo, y así sucesivamente. Estos valores tienen que multiplicarse juntos, formando el tercer término. Es igual al "producto factorial" b ( a [ 1 ] + a [ 2 ] + ⋯ ) donde b ( m ) significa b ( b - 1 ) ⋯ ( b - m + 1b b−1 b(a[1]+a[2]+⋯) b(m) .b(b−1)⋯(b−m+1)
Hay una recursión obvia y bastante simple que relaciona el recuento de un patrón con el recuento del patrón { a [ 1 ] , ... , a [ k - 1 ] } . Esto permite el cálculo rápido de los recuentos para valores modestos de n . Específicamente, una [ k ] representa una [ k ] fecha de nacimiento compartida exactamente por k{a[1],…,a[k]} {a[1],…,a[k−1]} n a[k] a[k] k personas cada uno. Después de esto grupos de k personas han sido extraídos de las n personas, que se pueden hacer en x maneras distintas (por ejemplo), queda por contar el número de maneras de lograr el patrón { un [ 1 ] , ... , a [ k - 1 ] } entre las personas restantes. Multiplicar esto por x da la recursividad.a[k] k n x {a[1],…,a[k−1]} x
Dudo que haya una fórmula de forma cerrada para , que se obtiene sumando los recuentos de todas las particiones de n cuyo término máximo es igual a k . Permítanme ofrecer algunos ejemplos:q(k;n,b) n k
Con (cinco cumpleaños posibles) yn = 4 (cuatro personas), obtenemosb=5 n=4
De ahí, por ejemplo, la posibilidad de que tres o más personas de cada cuatro compartan el mismo "cumpleaños" (de posibles fechas) es igual a ( 80 + 5 ) / 625 = 0.136 .5 (80+5)/625=0.136
Como otro ejemplo, tomar y n = 23 . Estos son los valores de q ( k ; 23 , 365 ) para la k más pequeña (solo para seis sig figs):b=365 n=23 q(k;23,365) k
Usando esta técnica, podemos calcular fácilmente que hay aproximadamente un 50% de posibilidades de (al menos) una colisión de cumpleaños a tres bandas entre 87 personas, una probabilidad del 50% de una colisión a cuatro bandas entre 187 y una probabilidad del 50% de Una colisión de cinco vías entre 310 personas. Ese último cálculo comienza a tomar unos segundos (en Mathematica, de todos modos) porque el número de particiones a considerar comienza a aumentar. Para sustancialmente mayor necesitamos una aproximación.n
Se obtiene una aproximación por medio de la distribución de Poisson con expectativa , porque podemos ver una asignación de cumpleaños que surge de b variables Poisson casi (pero no del todo) independientes, cada una con expectativa n / b : la variable para cualquier cumpleaños posible dado describe cuántas de las n personas tienen ese cumpleaños. Por lo tanto, la distribución del máximo es aproximadamente F ( k ) b donde F es el CDF de Poisson. Este no es un argumento riguroso, así que hagamos una pequeña prueba. La aproximación para n = 23 , bn/b b n/b n F(k)b F n=23 dab=365
Al comparar con lo anterior, puede ver que las probabilidades relativas pueden ser pobres cuando son pequeñas, pero las probabilidades absolutas se aproximan razonablemente a aproximadamente 0.5%. Las pruebas con un amplio rango de y b sugieren que la aproximación generalmente es tan buena.n b
Para concluir, consideremos la pregunta original: tome (el número de observaciones) yb = 1n=10,000 (el número de posibles "estructuras", aproximadamente). La distribución aproximada para el número máximo de "cumpleaños compartidos" esb=1000000
(Este es un cálculo rápido). Claramente, observar una estructura 10 veces de cada 10,000 sería muy significativo. Debido a que y b son grandes, espero que la aproximación funcione bastante bien aquí.n b
Por cierto, como Shane insinuó, las simulaciones pueden proporcionar comprobaciones útiles. Se crea una simulación de Mathematica con una función como
simulate[n_, b_] := Max[Last[Transpose[Tally[RandomInteger[{0, b - 1}, n]]]]];
que luego se itera y resume, como en este ejemplo que ejecuta 10,000 iteraciones de , b = 1n=10000 caso:b=1000000
Tally[Table[simulate[10000, 1000000], {n, 1, 10000}]] // TableForm
Su salida es
Estas frecuencias coinciden estrechamente con las predichas por la aproximación de Poisson.
fuente
Siempre es posible resolver este problema con una solución monte-carlo, aunque eso está lejos de ser el más eficiente. Aquí hay un ejemplo simple del problema de 2 personas en R (de una presentación que hice el año pasado ; usé esto como un ejemplo de código ineficiente), que podría ajustarse fácilmente para dar cuenta de más de 2:
fuente
Este es un intento de una solución general. Puede haber algunos errores, ¡así que úselo con precaución!
Primero alguna notación:
sea la probabilidad de que x o más personas compartan un cumpleaños entre n personas,P(x,n) x n
sea la probabilidad de queexactamente y personas compartan un cumpleaños entre n personas.P(y|n) y n
Notas:
El abuso de la notación como Se está utilizando de dos maneras diferentes.P(.)
Por definición, no puede tomar el valor de 1 ya que no tiene ningún sentido e y = 0 puede interpretarse en el sentido de que nadie comparte un cumpleaños común.y y
Entonces la probabilidad requerida viene dada por:
Ahora,
Step 2: Since they share a birthday it can be any of the 365 days in a year. So, we basically have 365 choices which gives us(365365)y .
Step 3: The remainingn−y people should not share a birthday with the first y people or with each other. This reasoning gives us ∏k=n−yk=1(1−k365) .
You can check that forx = 2 the above collapses to the standard birthday paradox solution.
fuente