Dans le paradoxe d'anniversaire traditionnel, la question est "quelles sont les chances que deux personnes ou plus dans un groupe de personnes partagent un anniversaire". Je suis coincé sur un problème qui en est une extension.
Au lieu de connaître la probabilité que deux personnes partagent un anniversaire, je dois étendre la question pour savoir quelle est la probabilité que ou plusieurs personnes partagent un anniversaire. Avec vous pouvez le faire en calculant la probabilité que deux personnes ne partagent pas un anniversaire et soustraient cela de , mais je ne pense pas pouvoir étendre cette logique à un plus grand nombre de .
Pour compliquer davantage cela, j'ai également besoin d'une solution qui fonctionnera pour de très grands nombres pour (millions) et (milliers).
la source
Réponses:
C'est un problème de comptage: il y a affectations possibles de anniversaires à personnes. Parmi ceux-ci, soit le nombre d'affectations pour lesquelles aucun anniversaire n'est partagé par plus de personnes mais au moins un anniversaire est réellement partagé par personnes. La probabilité que nous recherchons peut être trouvée en additionnant les pour les valeurs appropriées de et en multipliant le résultat par . b n q ( k ; n , b ) k k q ( k ; n , b ) k b - nbn b n q(k;n,b) k k q(k;n,b) k b−n
Ces comptes peuvent être trouvés exactement pour des valeurs de inférieures à plusieurs centaines. Cependant, ils ne suivront aucune formule simple: nous devons considérer les modèles de manière dont les anniversaires peuvent être attribués . Je vais illustrer cela au lieu de fournir une démonstration générale. Soit (c'est la plus petite situation intéressante). Les possibilités sont:n = 4n n=4
Généralement, le code est un tuple de décomptes dont l' élément stipule combien de dates de naissance distinctes sont partagées par exactement personnes. Ainsi, en particulier,k ème k{a[1],a[2],…} kth k
Notez, même dans ce cas simple, qu'il existe deux façons d'atteindre le maximum de deux personnes par anniversaire: une avec le code et une autre avec le code .{ 2 , 1 }{0,2} {2,1}
Nous pouvons compter directement le nombre d'affectations d'anniversaire possibles correspondant à un code donné. Ce nombre est le produit de trois termes. L'un est un coefficient multinomial; il compte le nombre de façons de partitionner personnes en groupes de , groupes de , etc. Parce que la séquence de groupes n'a pas d'importance, nous devons diviser ce coefficient multinomial par ; sa réciproque est le deuxième terme. Enfin, alignez les groupes et attribuez-leur chacun un anniversaire: il y a candidats pour le premier groupe,a [ 1 ] 1 a [ 2 ] 2 a [ 1 ] ! un [ 2 ] ! ⋯ b b - 1 b ( a [ 1 ] + a [ 2 ] + ⋯ ) b ( m ) b ( b - 1 ) ⋯ ( b - m + 1 )n a[1] 1 a[2] 2 a[1]!a[2]!⋯ b b−1 pour le second, et ainsi de suite. Ces valeurs doivent être multipliées ensemble, formant le troisième terme. Il est égal au "produit factoriel" où signifie .b(a[1]+a[2]+⋯) b(m) b(b−1)⋯(b−m+1)
Il existe une récursivité évidente et assez simple reliant le nombre pour un modèle au nombre pour le modèle . Cela permet un calcul rapide des comptes pour des valeurs modestes de . Plus précisément, représente dates de naissance partagées par exactement personnes chacune. Une fois que ces groupes de personnes ont été tirés des personnes, ce qui peut être fait de façons distinctes (disons), il reste à compter le nombre de façons de réaliser le modèle{ a [ 1 ] , … , a [ k - 1 ] } n a [ k ] a [ k ] k a [ k ] k n x { a [ 1 ] , ... , un [ k - 1 ] } x{a[1],…,a[k]} {a[1],…,a[k−1]} n a[k] a[k] k a[k] k n x {a[1],…,a[k−1]} parmi les personnes restantes. La multiplication par donne la récursivité.x
Je doute qu'il existe une formule de forme fermée pour , qui est obtenue en additionnant les comptes pour toutes les partitions de dont le terme maximum est égal à . Permettez-moi de vous donner quelques exemples:q(k;n,b) n k
Avec (cinq anniversaires possibles) et (quatre personnes), on obtientb=5 n=4
D'où, par exemple, la chance que trois personnes ou plus sur quatre partagent le même "anniversaire" (sur dates possibles) égale .5 (80+5)/625=0.136
Comme autre exemple, prenons et . Voici les valeurs de pour le plus petit (à six figues sig uniquement):b=365 n=23 q(k;23,365) k
En utilisant cette technique, nous pouvons facilement calculer qu'il y a environ 50% de chances (au moins) d'une collision anniversaire à trois voies parmi 87 personnes, une chance de 50% d'une collision à quatre voies parmi 187 personnes et une probabilité de 50% de une collision à cinq voies entre 310 personnes. Ce dernier calcul commence à prendre quelques secondes (dans Mathematica, de toute façon) car le nombre de partitions à considérer commence à devenir important. Pour sensiblement plus grand, nous avons besoin d'une approximation.n
Une approximation est obtenue au moyen de la distribution de Poisson avec l'espérance , car nous pouvons voir une affectation d'anniversaire comme découlant de variables de Poisson indépendantes (mais pas tout à fait) chacune avec une espérance : la variable pour tout anniversaire possible donné décrit combien de personnes ont cet anniversaire. La distribution du maximum est donc approximativement où est le CDF de Poisson. Ce n'est pas un argument rigoureux, alors faisons un petit test. L'approximation pour , donnen/b b n/b n F(k)b F n=23 b=365
En comparant avec ce qui précède, vous pouvez voir que les probabilités relatives peuvent être médiocres quand elles sont petites, mais les probabilités absolues sont raisonnablement bien approchées à environ 0,5%. Les tests avec une large gamme de et suggèrent que l'approximation concerne généralement ce bien.n b
Pour conclure, considérons la question initiale: prendre (le nombre d'observations) et (le nombre de "structures" possibles). La distribution approximative du nombre maximum de "anniversaires partagés" estn=10,000 b=1000000
(Il s'agit d'un calcul rapide.) Il est clair qu'observer une structure 10 fois sur 10 000 serait très significatif. Parce que et sont tous deux grands, je m'attends à ce que l'approximation fonctionne assez bien ici.n b
Par ailleurs, comme Shane l'a laissé entendre, les simulations peuvent fournir des vérifications utiles. Une simulation Mathematica est créée avec une fonction comme
simulate[n_, b_] := Max[Last[Transpose[Tally[RandomInteger[{0, b - 1}, n]]]]];
qui est ensuite itéré et résumé, comme dans cet exemple qui exécute 10 000 itérations du cas , :n=10000 b=1000000
Tally[Table[simulate[10000, 1000000], {n, 1, 10000}]] // TableForm
Sa sortie est
Ces fréquences correspondent étroitement à celles prédites par l'approximation de Poisson.
la source
Il est toujours possible de résoudre ce problème avec une solution monte-carlo, bien que ce soit loin d'être le plus efficace. Voici un exemple simple du problème de 2 personnes dans R (à partir d' une présentation que j'ai faite l'année dernière ; j'ai utilisé cela comme un exemple de code inefficace), qui pourrait être facilement ajusté pour représenter plus de 2:
la source
Il s'agit d'une tentative de solution générale. Il peut y avoir des erreurs, alors utilisez-les avec prudence!
Première notation:
Remarques:
L'abus de notation comme Est utilisé de deux manières différentes.P(.)
Par définition, ne peut pas prendre la valeur 1 car cela n'a aucun sens et = 0 peut être interprété comme signifiant que personne ne partage un anniversaire commun.y y
La probabilité requise est alors donnée par:
À présent,
Voici la logique: vous avez besoin de la probabilité qu'exactement personnes partagent un anniversaire.y
Étape 1: vous pouvez sélectionner personnes de façons.y (ny)
Étape 2: Puisqu'ils partagent un anniversaire, il peut s'agir de l'un des 365 jours d'une année. Donc, nous avons essentiellement 365 choix qui nous donne .(365365)y
Étape 3: Les personnes restantes ne devraient pas partager d'anniversaire avec les premières personnes ou entre elles. Ce raisonnement nous donne .n−y y ∏k=n−yk=1(1−k365)
Vous pouvez vérifier que pour = 2, ce qui précède se réduit à la solution de paradoxe d'anniversaire standard.x
la source