Ce titre de note est tout à fait digne des Monty Python. C’est aussi un problème statistique (je sais, je suis un peu monomaniaque en ce moment…) assez rigolo.
Imaginons qu’une guerre moderne oppose, disons les bleus contre les rouges. Les rouges planifient une attaque massive qui va reposer essentiellement sur l’utilisation de blindés, mais ils savent que les bleus ont mis en production depuis quelques mois un char d’assaut qui surpasse tous les leurs.
Le point crucial, pour les rouges, est de savoir combien les bleus pourront aligner de ces chars de nouvelle génération lors de cette attaque.
Problème, de nombreux espions Bothan sont morts sans pouvoir ramener cette information.
Les espions rouges connaissent néanmoins la date de début de leur production, et aussi savent que chaque char d’assaut possède un numéro de série unique qui s’incrémente de 1 à chaque char produit: par exemple 1, 2, 3, ….
Les rouges ont réussi à capturer (« aléatoirement ») 5 chars plus ou moins intacts, avec 5 numéros de série. Par exemple 5, 48, 69, 110, et 16.
Pouvons-nous en déduire le nombre total de chars de nouvelle génération produits par les bleus, et ainsi leur production mensuelle?
Et bien, comme vous pouvez vous en douter, on peut estimer ce chiffre (avec une marge d’erreur potentiellement très raisonnable).
La formule à utiliser est même remarquablement simple:
n=m(1 + (1/k)) – 1
n est l’estimation du nombre de chars produits, k le nombre d’exemplaires capturés, et m le numéro de série le plus élevé observé sur ces exemplaires.
Dans notre cas, n=110(1+(1/5))-1 soit 131 blindés. Si la production a commencé il y a 2 mois, les bleus produisent donc environ 65 blindés par mois.
Bon, arrivés à ce point, vous devez vous dire que c’est n’importe quoi, que vous ayez ou pas des connaissances en statistiques, car ce chiffre est invérifiable.
(Ceux qui connaissent les statistiques peuvent me jeter des pierres, je ne fais pas bien mieux qu’un singe savant).
C’est là que cette histoire peut devenir drôle.
Imaginons que les bleus aient produit effectivement 342 chars. Imaginons que les rouges aient été un peu meilleurs, et qu’ils aient capturé 25 chars (plus l’échantillon capturé est important, meilleure est la précision).
Je vais demander à R de me donner 25 numéros de série aléatoires, parmi une population en comprenant 342.
En langage R, ça donne cela:
Les lignes 1 et 2 permettent de créer une population pop de 342 numéros de série qui se suivent.
La ligne 3 permet d’extraire de pop un échantillon x de 25 numéros, que voici:
Les lignes 4 et 5 définissent m et k.
Les deux dernières définissent n (est.n) qui est ici de…337.
Pas mal, non?
(pour ceux qui dorment, la bonne réponse est 342.)
Ok, vous ne me croyez toujours pas?
Je vais demander à R de créer 10.000 échantillons aléatoires x de 25 numéros tirés de pop (pop=342, k=25):
La moyenne observée des populations prédites sur ces 10.000 échantillons est de… 342.07.
😉
Un petit coup de hist(sim.est.n) pour avoir un histogramme:
(L’histogramme est pourri mais je suis incapable de configurer R pour le rendre acceptable.)
On peut aussi voir que la formule du problème du char d’assaut allemand (ce n’est pas son vrai nom, mais vous verrez à la fin pourquoi le char est allemand, et pas bleu) peut donner une approximation raisonnable de la population de pop en considérant la corrélation entre des populations pop et ces mêmes populations estimées par la formule, sur de nombreux essais.
Pour avoir une plus jolie corrélation, j’ai utilisé les paramètres suivants: k=25, pop autour de 100 et 1000 essais:
Pour en savoir plus sur le problème du char allemand (et pourquoi ce nom):
- Le site d’ où j’ai tiré les codes de R.
-
Randall Munroe (xkcd) fait allusion succinctement à ce problème dans cette note.