Bien qu'Henry ait déjà donné un moyen de calculer exactement le nombre en comptant toutes les partitions, il pourrait être intéressant de connaître deux méthodes approximatives.
De plus, il existe un calcul exact alternatif basé sur des variables distribuées conditionnelles de Poisson.
Simulation informatique
Vous ne pourrez pas facilement calculer toutes les possibilités de $ 12 ^ {18} $ (et il ne sera pas facile de faire évoluer le problème), mais vous pouvez demander à un ordinateur de simuler au hasard un sous-ensemble des méthodes possibles et d’obtenir une distribution à partir de ces simulations.
# fonction pour échantillonner 18 mois de naissance
# et obtenez le nombre maximum de mois similaires
monthample <- fonction () {
x <- échantillon (1: 12,18, replace = TRUE) # échantillon
n <- max (table (x)) # obtenir le maximum
retour (n)
}
# échantillonner un million de fois
y <- répliquer (10 ^ 6, mois échantillon ())
# obtenir la fréquence à l'aide d'un histogramme
h<-hist (y, pauses = seq (-0.5,18.5,1))
Approximation avec Poissonation
La fréquence du nombre d'anniversaires dans un mois donné est approximativement distribuée Poisson / binomiale. Sur cette base, nous pouvons calculer la probabilité que le nombre d'anniversaires dans un mois particulier ne dépasse pas une certaine valeur, et en prenant la puissance de douze, nous calculons la probabilité que cela se produise pendant les douze mois.
Remarque: ici on néglige le fait que le nombre d'anniversaires est corrélé donc ce n'est évidemment pas exact.
# approximation avec distribution de Poisson
t <- 0:18
z <- ppois (t, 1,5) ^ 12 # P (max < = t)
dz <- diff (z) # P (max = t + 1)
Calcul avec la représentation de Bruce Levin
Dans les commentaires, Whuber a pointé le paquet pmultinom. Ce paquet est basé sur Bruce Levin 1981 'A Representation for Multinomial Cumulative Distribution Functions' dans Ann. Statist. Volume 9 . Le résultat des mois de naissance (qui est plus précisément distribué selon une distribution multinomiale) est représenté comme des variables distribuées de Poisson indépendantes. Mais contrairement au calcul naïf mentionné précédemment, la distribution de ces variables distribuées de Poisson est considérée comme conditionnelle sur la somme totale égale à $ n = 18 $ .
Nous avons donc calculé ci-dessus $$ P (X_1, X_2, \ ldots, X_ {12} \ leq 4) = P (X_1 \ leq 4) \ cdot P (X_1 \ leq 4) \ cdot \ ldots \ cdot P (X_ {12} \ leq 4) $$ mais nous aurions dû calculer la probabilité conditionnelle pour que les variables distribuées de Poisson soient toutes égales ou inférieures que $$ P (X_1, X_2, \ ldots, X_ {12} \ leq 4 \ vert X_1 + X_2 + \ ldots + X_ {12} = 18) $$ qui introduit un terme supplémentaire basé sur la règle de Bayes.
$$ P (\ forall i: X_i \ leq 4 \ vert \ sum X_i = 18) = P (\ forall i: X_i \ leq 4) \ frac {P ( \ sum X_i = 18 \ vert \ forall i: X_i \ leq 4)} {P (\ sum X_i = 18)} $$
Ce facteur de correction est le rapport de la probabilité qu'une somme de variables distribuées de Poisson tronquées égale 18 $ P (\ sum X_i = 18 \ vert \ forall i: X_i \ leq 4 ) $ , et la probabilité qu'une somme de variables régulières de Poisson distribuées soit égale à 18, $ P (\ sum X_i = 18) $ . Pour un petit nombre de mois de naissance et de personnes dans le groupe, cette distribution tronquée peut être calculée manuellement
# facteur de correction par Bruce Levin
correction <- fonction (y) {
Nptrunc (y) [19] / dpois (18,18)
}
Nptrunc <- fonction (lim) {
# distribution de Poisson tronquée
ptrunc <- dpois (0: lim, 1.5) / sum (dpois (0: lim, 1.5))
## vecteur avec probabilités
outvec <- rep (0, lim * 12 + 1)
outvec [1] <- 1
#convolve 12 fois par mois
pour (i en 1:12) {
newvec <- rep (0, lim * 12 + 1)
pour (k en 1: (lim + 1)) {
newvec <- newvec + ptrunc [k] * c (rep (0, k-1), outvec [1: (lim * 12 + 1- (k-1))])
}
outvec <- newvec
}
outvec
}
z2 <- ppois (t, 1.5) ^ 12 * Vectoriser (correction) (t) # P (max< = t)
z2 [1: 2] <- c (0,0)
dz2 <- diff (z2) # P (max = t + 1)
Résultats
Ces approximations donnent les résultats suivants
> ### simulation
Somme d'> (y> = 4) / 10 ^ 6
[1] 0,577536
Calcul > ###
> 1-z [4]
[1] 0,5572514
> ### calcul exact
> 1-z2 [4]
[1] 0,5771871