Esse é um problema de contagem: existem possíveis atribuições de aniversários para pessoas. Dessas, seja o número de atribuições para as quais nenhum aniversário é compartilhado por mais de pessoas, mas pelo menos um aniversário é realmente compartilhado por pessoas. A probabilidade que procuramos pode ser encontrada somando para valores apropriados de e multiplicando o resultado por . b n q ( k ; n , b ) k k q ( k ; n , b ) k b - nbnbnq(k;n,b)kkq(k;n,b)kb−n
Essas contagens podem ser encontradas exatamente para valores de inferiores a várias centenas. No entanto, eles não seguirão nenhuma fórmula direta: precisamos considerar os padrões de maneiras pelas quais os aniversários podem ser atribuídos . Ilustrarei isso em vez de fornecer uma demonstração geral. Seja (esta é a menor situação interessante). As possibilidades são:n = 4nn=4
- Cada pessoa tem um aniversário único; o código é {4}.
- Exatamente duas pessoas compartilham um aniversário; o código é {2,1}.
- Duas pessoas têm um aniversário e as outras duas têm outro; o código é {0,2}.
- Três pessoas compartilham um aniversário; o código é {1,0,1}.
- Quatro pessoas compartilham um aniversário; o código é {0,0,0,1}.
Geralmente, o código é uma tupla de contagens cujo elemento estipula quantas datas de nascimento distintas são compartilhadas por exatamente pessoas. Assim, em particular,k th k{a[1],a[2],…}kthk
1a[1]+2a[2]+...+ka[k]+…=n.
Observe, mesmo neste caso simples, que existem duas maneiras pelas quais é atingido o máximo de duas pessoas por aniversário: uma com o código e outra com o código .{ 2 , 1 }{0,2}{2,1}
Podemos contar diretamente o número possível de atribuições de aniversário correspondentes a qualquer código. Este número é o produto de três termos. Um é um coeficiente multinomial; conta o número de maneiras de particionar pessoas em grupo de , grupo de e assim por diante. Como a sequência de grupos não importa, temos que dividir esse coeficiente multinomial por ; seu recíproco é o segundo termo. Por fim, alinhe os grupos e atribua a cada um aniversário: há candidatos para o primeiro grupo,a [ 1 ] 1 a [ 2 ] 2 a [ 1 ] ! a [ 2 ]na[1]1a[2]2b b - 1 b ( a [ 1 ] + a [ 2 ] + ⋯ ) b ( m ) b ( b - 1 ) ⋯ ( b - m + 1 )a[1]!a[2]!⋯bb−1para o segundo e assim por diante. Esses valores devem ser multiplicados juntos, formando o terceiro termo. É igual ao "produto fatorial" onde significa .b(a[1]+a[2]+⋯)b(m)b(b−1)⋯(b−m+1)
Existe uma recursão óbvia e bastante simples relacionando a contagem de um padrão à contagem do padrão . Isso permite o cálculo rápido das contagens para valores modestos de . Especificamente, representa as datas de nascimento de compartilhadas por exatamente pessoas cada. Depois que esses grupos de pessoas foram retirados das pessoas, o que pode ser feito de maneiras distintas (digamos), resta contar o número de maneiras de alcançar o padrão{ a [ 1 ] , … , a [ k - 1 ] } n{a[1],…,a[k]}{a[1],…,a[k−1]}na [ k ] k um [ k ] k n X { um [ 1 ] , ... , um [ k - 1 ] } xa[k]a[k]ka[k]knx{a[1],…,a[k−1]}entre as pessoas restantes. Multiplicar por fornece a recursão.x
Duvido que exista uma fórmula de forma fechada para , que é obtida somando as contagens para todas as partições de cujo termo máximo é igual a . Deixe-me oferecer alguns exemplos:n kq(k;n,b)nk
Com (cinco possíveis aniversários) (quatro pessoas), obtemosn = 4b=5n=4
q(1)q(2)q(3)q(4)=q(1;4,5)=360+60=120=420=80=5.
Daí, por exemplo, a chance de três ou mais pessoas em quatro compartilharem o mesmo "aniversário" (em datas possíveis) é igual a .( 80 + 5 ) / 625 = 0,1365(80+5)/625=0.136
Como outro exemplo, tomar e . Aqui estão os valores de para o menor (até seis sig figs):b=365n=23q(k;23,365)k
k=1:k=2:k=3:k=4:k=5:k=6:k=7:k=8:0.492700.4945920.01253080.0001728441.80449E−61.48722E−89.92255E−115.45195E−13.
Usando essa técnica, podemos calcular prontamente que há cerca de 50% de chance de (pelo menos) uma colisão de três anos entre 87 pessoas, 50% de chance de uma colisão de quatro vias entre 187 e 50% de chance de uma colisão de cinco vias entre 310 pessoas. Esse último cálculo começa a demorar alguns segundos (no Mathematica, pelo menos) porque o número de partições a considerar começa a aumentar. Para substancialmente maior , precisamos de uma aproximação.n
Uma aproximação é obtida por meio da distribuição de Poisson com expectativa , porque podemos ver uma atribuição de aniversário como decorrente de variáveis Poisson quase (mas não completamente) independentes, cada uma com expectativa : a variável para qualquer aniversário possível descreve quantas das pessoas têm esse aniversário. A distribuição do máximo é, portanto, aproximadamente onde é o CDF de Poisson. Este não é um argumento rigoroso, então vamos fazer um pequeno teste. A aproximação para , fornecen/bbn/bnF(k)bFn=23b=365
k=1:k=2:k=3:k=4:0.4987830.4968030.0141870.000225115.
Comparando com o anterior, você pode ver que as probabilidades relativas podem ser ruins quando são pequenas, mas as probabilidades absolutas são razoavelmente bem aproximadas de cerca de 0,5%. Testar com uma ampla gama de e sugere que a aproximação geralmente é sobre esse bem.nb
Para finalizar, vamos considerar a pergunta original: pegue (o número de observações) (o número possível de "estruturas", aproximadamente). A distribuição aproximada para o número máximo de "aniversários compartilhados" én=10,000b=1000000
k=1:k=2:k=3:k=4:k>4:00.8475+0.1520+0.0004+<1E−6.
(Este é um cálculo rápido.) Claramente, observar uma estrutura 10 vezes em 10.000 seria altamente significativo. Como e são grandes, espero que a aproximação funcione muito bem aqui.nb
Aliás, como Shane sugeriu, as simulações podem fornecer verificações úteis. Uma simulação do Mathematica é criada com uma função como
simulate[n_, b_] := Max[Last[Transpose[Tally[RandomInteger[{0, b - 1}, n]]]]];
que é iterado e resumido, como neste exemplo, que executa 10.000 iterações do caso , :n=10000b=1000000
Tally[Table[simulate[10000, 1000000], {n, 1, 10000}]] // TableForm
Sua saída é
2 8503
3 1493
4 4
Essas frequências concordam estreitamente com as previstas pela aproximação de Poisson.