Compter les animaux sans les voir tous : la capture-recapture Grand Oral · mathématiques, SVT, HGGSP Un support de connaissances pour construire sa propre question

← Tous les textes du Grand Oral

MathsSVTHGGSP

Combien y a-t-il de poissons dans un étang, de loups dans les Alpes, de baleines dans l'Atlantique Nord ? On ne peut pas les compter un par un : ils se cachent, ils bougent, et l'on ne sait jamais si l'on n'a pas compté deux fois le même. Les écologues utilisent depuis plus d'un siècle une idée très simple : marquer quelques animaux, les relâcher, puis regarder quelle proportion d'animaux marqués on retrouve dans une seconde capture.

Derrière cette idée de proportionnalité se cachent les probabilités de terminale : loi binomiale, espérance, inégalité de Bienaymé-Tchebychev, et même une étude de fonction par la dérivée. La même méthode a servi à Laplace pour estimer la population de la France en 1802, et sert aujourd'hui à estimer des populations humaines « cachées ».

Ce texte rassemble ces connaissances. Il ne propose pas de Grand Oral tout fait : à chacun d'y choisir une direction et d'y construire sa question.

Sommaire
  1. L'idée : marquer, relâcher, recapturer
  2. Un modèle probabiliste : la loi binomiale
  3. Pourquoi cette estimation ? Le maximum de vraisemblance
  4. Quelle confiance accorder au résultat ?
  5. Pêcher mille fois : simulation
  6. Les hypothèses et les biais
  7. Laplace et la population de la France
  8. En écologie aujourd'hui
  9. Des populations humaines cachées
  10. Des directions pour construire sa question
L'idée : marquer, relâcher, recapturer Un exemple à la main

Un étang contient un nombre inconnu $N$ de poissons. Un premier jour, on en pêche $M = 200$, on fixe sur chacun une petite marque, et on les relâche. On attend quelques jours qu'ils se mélangent aux autres.

Un second jour, on pêche $n = 150$ poissons, et l'on compte parmi eux $X = 30$ poissons marqués.

Si les poissons marqués sont bien mélangés, la proportion de marqués dans la seconde pêche doit être proche de leur proportion dans l'étang :

$$\frac{30}{150} \approx \frac{200}{N}.$$

Or $\frac{30}{150} = 0{,}2$, donc $\frac{200}{N} \approx 0{,}2$, ce qui donne $N \approx \frac{200}{0{,}2} = 1\,000$. Un poisson sur cinq est marqué, donc l'étang contient environ cinq fois plus de poissons qu'on n'en a marqué.

La formule de Lincoln-Petersen

Dans le cas général, on marque $M$ animaux, on en recapture $n$, et l'on trouve $X$ marqués parmi eux. L'égalité des proportions $\frac{X}{n} \approx \frac{M}{N}$ donne l'estimation

$$\widehat{N} = \frac{M \times n}{X}.$$

(On note $\widehat{N}$, « $N$ chapeau », pour rappeler que c'est une estimation et non la vraie valeur.) Elle porte le nom de deux biologistes : le Danois Carl Georg Johannes Petersen, qui marquait des plies (des poissons plats) à la fin du XIXe siècle, et l'Américain Frederick Lincoln, qui l'a appliquée en 1930 aux canards bagués dont les chasseurs renvoyaient les bagues.

Trois questions se posent aussitôt, et les mathématiques de terminale permettent d'y répondre :

  • pourquoi cette estimation plutôt qu'une autre ?
  • avec quelle précision : le vrai $N$ est-il plutôt entre $900$ et $1\,100$, ou entre $500$ et $10\,000$ ?
  • à quelles conditions la méthode est-elle valable ?
Un modèle probabiliste : la loi binomiale Les hypothèses du modèle

Pour la seconde pêche, faisons les hypothèses suivantes :

  • la population est fermée : entre les deux pêches, aucun poisson ne naît, ne meurt, n'arrive ni ne part, donc $N$ et $M$ ne changent pas ;
  • les marques ne se perdent pas, et tous les poissons, marqués ou non, ont la même chance d'être pris ;
  • on pêche les poissons un par un : on regarde chaque poisson pris, on note s'il est marqué, et on le relâche aussitôt. Les $n$ prises sont donc des épreuves identiques et indépendantes.

À chaque prise, la probabilité de tomber sur un poisson marqué est alors

$$p = \frac{M}{N}.$$

Chaque prise est une épreuve de Bernoulli de paramètre $p$ (succès : « le poisson est marqué »), et l'on en répète $n$ de façon indépendante. Le nombre $X$ de poissons marqués parmi les $n$ prises suit donc la loi binomiale $\mathcal{B}(n ; p)$ :

$$P(X = k) = \binom{n}{k} p^k (1 - p)^{n - k}.$$

Si l'on garde les poissons au lieu de les relâcher un par un, les prises ne sont plus indépendantes (la loi exacte s'appelle alors hypergéométrique) ; mais quand $n$ est petit devant $N$, la loi binomiale en reste une très bonne approximation.

Ce que dit l'espérance

Le cours donne $E(X) = np = \frac{nM}{N}$. Avec $N = 1\,000$, $M = 200$ et $n = 150$, on attend en moyenne $150 \times 0{,}2 = 30$ poissons marqués : c'est exactement ce qu'on a observé dans l'exemple. Mais $X$ est aléatoire. Avec ces valeurs, la probabilité d'obtenir exactement $30$ marqués n'est que

$$\begin{aligned} P(X = 30) &= \binom{150}{30} \times 0{,}2^{30} \times 0{,}8^{120} \\ &\approx 0{,}081. \end{aligned}$$

Une autre pêche aurait pu donner $25$ ou $36$ marqués, et donc une estimation de $1\,200$ ou d'environ $833$ poissons. Toute la question est de savoir de combien l'estimation risque de s'écarter de la vraie valeur.

La fréquence $F = \frac{X}{n}$ des marqués a pour espérance $p$, et la loi des grands nombres dit que plus $n$ est grand, plus il est probable que la fréquence $F$ soit proche de $p = \frac{M}{N}$. C'est ce qui justifie l'idée de départ : remplacer $\frac{M}{N}$ par la fréquence observée.

Pourquoi cette estimation ? Le maximum de vraisemblance

Retournons la question. On a observé $X = k$. Parmi toutes les valeurs possibles de $p$ (donc de $N$), laquelle rend cette observation la plus probable ? C'est le principe du maximum de vraisemblance, imaginé par le statisticien Ronald Fisher au début du XXe siècle. On étudie, pour $k$ et $n$ fixés, la fonction

$$f(p) = p^k (1 - p)^{n - k}, \quad p \in [0 ; 1],$$

qui est égale à $P(X = k)$ au facteur constant $\binom{n}{k}$ près.

Si $0 < k < n$, la fonction $f$ est maximale pour $p = \frac{k}{n}$

Étape 1 : la dérivée. $f$ est un produit $u \times v$ avec $u(p) = p^k$ et $v(p) = (1 - p)^{n-k}$. On a $u'(p) = k\,p^{k-1}$ et, par la dérivée d'une composée, $v'(p) = -(n - k)(1 - p)^{n-k-1}$. Donc $f' = u'v + uv'$ avec

$$u'(p)\,v(p) = k\,p^{k-1}(1-p)^{n-k}$$

et

$$\begin{aligned} &u(p)\,v'(p) \\ &= -(n-k)\,p^k(1-p)^{n-k-1}. \end{aligned}$$

Étape 2 : on factorise. Les deux termes contiennent $A = p^{k-1}(1-p)^{n-k-1}$, donc

$$f'(p) = A \times \big(k(1-p) - (n-k)p\big).$$

Dans la grande parenthèse,

$$\begin{aligned} & k(1-p) - (n-k)p \\ &= k - kp - np + kp \\ &= k - np. \end{aligned}$$

Donc $f'(p) = A \times (k - np)$.

Étape 3 : le signe. Sur $]0 ; 1[$, le facteur $A$ est strictement positif. Le signe de $f'(p)$ est donc celui de $k - np$ : positif si $p < \frac{k}{n}$, négatif si $p > \frac{k}{n}$.

Étape 4 : conclusion. $f$ est croissante sur $\left[0 ; \frac{k}{n}\right]$ et décroissante sur $\left[\frac{k}{n} ; 1\right]$ : elle atteint son maximum en $p = \frac{k}{n}$.

La valeur de $p$ qui rend l'observation la plus probable est donc la fréquence observée $\frac{k}{n}$, et comme $p = \frac{M}{N}$, la valeur de $N$ correspondante est $N = \frac{Mn}{k}$ : on retrouve exactement la formule de Lincoln-Petersen. L'intuition de la proportionnalité est confirmée par une étude de fonction.

La figure ci-dessous trace, pour $M = 200$ et $n = 150$, la probabilité d'observer $k$ poissons marqués en fonction du nombre $N$ de poissons de l'étang. Le curseur règle $k$.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var petit = {fontSize: 11, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var ax = {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}; board.create('segment', [[0, 0], [3250, 0]], ax); board.create('segment', [[0, 0], [0, 0.145]], ax); for (var t = 1000; t <= 3000; t += 1000) { board.create('segment', [[t, 0], [t, -0.004]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [t - 170, -0.012, String(t).replace('000', ' 000')], petit); } var yl = [[0.05, '0,05'], [0.1, '0,10']]; for (var i = 0; i < yl.length; i++) { board.create('segment', [[0, yl[i][0]], [-40, yl[i][0]]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [-560, yl[i][0], yl[i][1]], petit); } board.create('text', [2950, -0.026, 'N'], opt); var M = 200, n = 150; var sk = board.create('slider', [[150, -0.045], [1900, -0.045], [10, 30, 60]], {withLabel: false, snapWidth: 1}); board.create('text', [2050, -0.045, function () { return 'k = ' + Math.round(sk.Value()); }], opt); function lc(n, k) { var s = 0, j; for (j = 1; j <= k; j++) { s += Math.log(n - k + j) - Math.log(j); } return s; } function proba(N) { var k = Math.round(sk.Value()); if (N < M) { return 0; } var p = M / N; if (p >= 1) { return 0; } return Math.exp(lc(n, k) + k * Math.log(p) + (n - k) * Math.log(1 - p)); } var cb = board.create('curve', [[0], [0]], {strokeColor: '#1565c0', strokeWidth: 2, highlight: false}); cb.updateDataArray = function () { var X = [], Y = [], N; for (N = 202; N <= 3250; N += 4) { X.push(N); Y.push(proba(N)); } this.dataX = X; this.dataY = Y; }; function nmax() { return M * n / Math.round(sk.Value()); } board.create('segment', [[function () { return nmax(); }, 0], [function () { return nmax(); }, function () { return proba(nmax()); }]], {strokeColor: '#c62828', strokeWidth: 1.5, dash: 2, fixed: true, highlight: false}); board.create('point', [function () { return nmax(); }, function () { return proba(nmax()); }], {name: '', size: 3, color: '#c62828', fixed: true, highlight: false}); board.create('text', [-560, 0.185, function () { return 'M = 200 marqués, n = 150 pris, k = ' + Math.round(sk.Value()) + ' marqués'; }], opt); board.create('text', [-560, 0.165, function () { return 'maximum pour N = 200 × 150 / k ≈ ' + String(Math.round(nmax())).replace(/\B(?=(\d{3})+(?!\d))/g, ' '); }], {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false, color: '#c62828'}); En bleu, la probabilité $P(X = k)$ en fonction du nombre $N$ de poissons de l'étang. Elle est la plus grande pour $N = \frac{200 \times 150}{k}$ (en rouge). Plus $k$ est petit, plus le maximum est à droite et plus la courbe est étalée : peu de poissons marqués retrouvés donnent une estimation grande et très incertaine.
Quelle confiance accorder au résultat ? Un encadrement garanti par Bienaymé-Tchebychev

Notons $F = \frac{X}{n}$ la fréquence de marqués dans la seconde pêche. Par linéarité de l'espérance et propriété de la variance, $E(F) = \frac{E(X)}{n} = p$ et

$$\begin{aligned} V(F) &= \frac{V(X)}{n^2} = \frac{np(1-p)}{n^2} \\ &= \frac{p(1-p)}{n}. \end{aligned}$$ Avec une probabilité d'au moins $0{,}95$, la fréquence $F$ est à moins de $\sqrt{\frac{5}{n}}$ de $p$

Étape 1 : l'inégalité de Bienaymé-Tchebychev. Pour tout réel $\delta > 0$,

$$P\big(|F - p| \geqslant \delta\big) \leqslant \frac{V(F)}{\delta^2} = \frac{p(1-p)}{n\,\delta^2}.$$

Étape 2 : on majore $p(1-p)$, que l'on ne connaît pas. Pour tout réel $p$,

$$\begin{aligned} \frac{1}{4} - p(1-p) &= p^2 - p + \frac{1}{4} \\ &= \left(p - \frac{1}{2}\right)^2 \geqslant 0, \end{aligned}$$

donc $p(1-p) \leqslant \frac{1}{4}$, et $P\big(|F - p| \geqslant \delta\big) \leqslant \frac{1}{4n\delta^2}$.

Étape 3 : on choisit $\delta$. Avec $\delta = \sqrt{\frac{5}{n}}$, on a $\delta^2 = \frac{5}{n}$, donc $\frac{1}{4n\delta^2} = \frac{1}{20} = 0{,}05$. Ainsi $P\big(|F - p| \geqslant \delta\big) \leqslant 0{,}05$, et par l'événement contraire $P\big(|F - p| < \delta\big) \geqslant 0{,}95$.

On passe ensuite de $p$ à $N$ :

De l'encadrement de $p$ à l'encadrement de $N$

Étape 1. L'inégalité $|F - p| < \delta$ équivaut à $F - \delta < p < F + \delta$.

Étape 2. On suppose $F - \delta > 0$. La fonction $x \mapsto \frac{M}{x}$ est strictement décroissante sur $]0 ; +\infty[$ (sa dérivée $-\frac{M}{x^2}$ est négative) : elle inverse l'ordre. Comme $N = \frac{M}{p}$,

$$\frac{M}{F + \delta} < N < \frac{M}{F - \delta}.$$

Dans l'exemple, $F = 0{,}2$ et $\delta = \sqrt{\frac{5}{150}} \approx 0{,}183$, donc

$$\frac{200}{0{,}383} < N < \frac{200}{0{,}017},$$

c'est-à-dire, en arrondissant, $523 \leqslant N \leqslant 11\,477$. L'encadrement est garanti, mais il est très large : l'inégalité de Bienaymé-Tchebychev vaut pour toutes les lois, elle ne profite pas de ce que l'on sait de la loi binomiale. Remarquons aussi que l'encadrement n'est pas symétrique autour de $1\,000$ : c'est l'effet de la fonction inverse, qui étire les petites valeurs de $p$.

L'intervalle de confiance du lycée

Pour la loi binomiale, on utilise au lycée l'intervalle de confiance au niveau 95 % : $\left[F - \frac{1}{\sqrt{n}} ; F + \frac{1}{\sqrt{n}}\right]$ ; il est admis, et on l'emploie quand $n \geqslant 25$ et que $F$ est entre $0{,}2$ et $0{,}8$ (voir le texte La méthode de Monte-Carlo). Dans l'exemple, $\frac{1}{\sqrt{150}} \approx 0{,}082$ et le même raisonnement donne

$$\frac{200}{0{,}282} \leqslant N \leqslant \frac{200}{0{,}118},$$

soit environ $711 \leqslant N \leqslant 1\,689$. Pour resserrer l'encadrement, il faut un plus grand $n$ : la largeur $\frac{2}{\sqrt{n}}$ est divisée par $2$ quand $n$ est multiplié par $4$.

seconde pêchemarqués$F$$\frac{1}{\sqrt{n}}$encadrement de $N$
$n = 150$$30$$0{,}2$$0{,}082$$711$ à $1\,689$
$n = 600$$120$$0{,}2$$0{,}041$$831$ à $1\,256$

Le tableur ci-dessous fait ces calculs pour vos propres valeurs (modifiez les cellules jaunes et validez par Entrée).

Attention : si $F - \frac{1}{\sqrt{n}}$ est négatif, le « N maximum » affiché n'a pas de sens : l'encadrement ne donne alors aucune borne supérieure.

Pêcher mille fois : simulation Un étang à pêcher

Dans la figure suivante, l'étang contient en réalité $N = 1\,000$ poissons. Réglez le nombre $M$ de poissons marqués et le nombre $n$ de prises, puis pêchez. Chaque pêche donne une estimation (un point) et un intervalle (le segment) : vert s'il contient la vraie valeur, rouge sinon.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var petit = {fontSize: 11, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var bopt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false}; board.create('segment', [[0, 0], [3200, 0]], {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}); for (var t = 0; t <= 3000; t += 1000) { board.create('segment', [[t, 0], [t, -0.2]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [t - (t ? 190 : 30), -0.6, String(t).replace('000', ' 000')], petit); } board.create('segment', [[1000, 0], [1000, 5.5]], {strokeColor: '#2e7d32', strokeWidth: 1.5, dash: 2, fixed: true, highlight: false}); var sM = board.create('slider', [[150, -1.6], [2000, -1.6], [50, 200, 400]], {withLabel: false, snapWidth: 10}); var sn = board.create('slider', [[150, -2.7], [2000, -2.7], [50, 150, 600]], {withLabel: false, snapWidth: 10}); board.create('text', [2150, -1.6, function () { return 'M = ' + Math.round(sM.Value()); }], opt); board.create('text', [2150, -2.7, function () { return 'n = ' + Math.round(sn.Value()); }], opt); var g = 20251013; function alea() { g = (g * 16807) % 2147483647; return g / 2147483647; } var pts = [], tas = {}, nb = 0, dedans = 0, der = null, seg = null; function vider() { board.suspendUpdate(); for (var i = 0; i < pts.length; i++) { board.removeObject(pts[i]); } if (seg) { board.removeObject(seg); seg = null; } pts = []; tas = {}; nb = 0; dedans = 0; der = null; board.unsuspendUpdate(); } function pecher() { var M = Math.round(sM.Value()), n = Math.round(sn.Value()), p = M / 1000, X = 0, i; for (i = 0; i < n; i++) { if (alea() < p) { X++; } } var F = X / n, d = 1 / Math.sqrt(n); var est = X > 0 ? M * n / X : Infinity; var bas = M / (F + d), haut = F - d > 0 ? M / (F - d) : Infinity; var ok = bas <= 1000 && 1000 <= haut; nb++; if (ok) { dedans++; } der = {X: X, est: est, bas: bas, haut: haut, ok: ok}; board.suspendUpdate(); if (seg) { board.removeObject(seg); } seg = board.create('segment', [[Math.min(bas, 3200), 6.2], [Math.min(haut, 3200), 6.2]], {strokeColor: ok ? '#2e7d32' : '#c62828', strokeWidth: 4, fixed: true, highlight: false, lastArrow: haut > 3200}); if (est <= 3200) { var c = Math.floor(est / 80); tas[c] = (tas[c] || 0) + 1; if (tas[c] <= 26) { pts.push(board.create('point', [c * 80 + 40, 0.2 * tas[c]], {name: '', size: 2, color: ok ? '#2e7d32' : '#c62828', fixed: true, highlight: false, withLabel: false})); } } board.unsuspendUpdate(); } board.create('button', [-280, 10.2, 'Pêcher', function () { pecher(); board.update(); }], bopt); board.create('button', [620, 10.2, 'Pêcher 50 fois', function () { for (var i = 0; i < 50; i++) { pecher(); } board.update(); }], bopt); board.create('button', [2300, 10.2, 'Effacer', function () { vider(); board.update(); }], bopt); function nombre(x) { return isFinite(x) ? String(Math.round(x)).replace(/\B(?=(\d{3})+(?!\d))/g, ' ') : 'infini'; } board.create('text', [-280, 9.1, function () { return der ? 'Marqués repris : X = ' + der.X + ' ; estimation : ' + nombre(der.est) : 'Appuyez sur « Pêcher ».'; }], opt); board.create('text', [-280, 8.2, function () { return der ? 'Intervalle : de ' + nombre(der.bas) + ' à ' + nombre(der.haut) : ''; }], opt); board.create('text', [-280, 7.3, function () { return nb ? dedans + ' intervalles sur ' + nb + ' contiennent 1 000' : ''; }], {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false, color: '#2e7d32'}); L'étang contient vraiment $1\,000$ poissons (trait pointillé vert). Chaque point est une estimation $\frac{Mn}{X}$ ; le segment du haut est l'intervalle obtenu avec $\frac{1}{\sqrt{n}}$ lors de la dernière pêche. Avec peu de marqués, les estimations s'étalent vers la droite : la courbe en cloche des estimations n'est pas symétrique.
Le même travail en Python

Le programme suivant simule $1\,000$ secondes pêches dans un étang de $1\,000$ poissons, calcule à chaque fois l'estimation et l'intervalle, puis compte combien d'intervalles contiennent la vraie valeur, et quelle est la moyenne des estimations.

from random import random from math import sqrt N, M, n = 1000, 200, 150 # vraie population, marqués, prises p = M / N essais, dedans, somme, compte = 1000, 0, 0, 0 for e in range(essais): X = 0 for i in range(n): # n prises indépendantes if random() < p: X = X + 1 F = X / n d = 1 / sqrt(n) if X > 0: somme = somme + M * n / X compte = compte + 1 if F - d > 0 and M / (F + d) <= N <= M / (F - d): dedans = dedans + 1 print("intervalles contenant N :", dedans, "sur", essais) print("moyenne des estimations :", round(somme / compte))

On observe en général qu'environ $99$ intervalles sur $100$ contiennent la vraie valeur (l'intervalle à $\frac{1}{\sqrt{n}}$ est prudent quand $p$ est loin de $\frac{1}{2}$), et que la moyenne des estimations dépasse $1\,000$, autour de $1\,030$. L'estimation de Lincoln-Petersen surestime légèrement $N$ en moyenne : elle contient $\frac{1}{X}$, et la fonction inverse est convexe, si bien qu'un $X$ trop petit fait monter l'estimation plus qu'un $X$ trop grand ne la fait baisser. Le statisticien Douglas Chapman a proposé en 1951 une formule corrigée, $\frac{(M+1)(n+1)}{X+1} - 1$, qui atténue ce défaut et reste définie quand $X = 0$.

Les hypothèses et les biais

Le calcul suppose que la seconde pêche est un tirage au hasard dans une population qui n'a pas bougé. Sur le terrain, chaque hypothèse peut être fausse, et l'on peut prévoir dans quel sens l'estimation se trompe.

La méthode moderne capture souvent les animaux plusieurs fois, et ajuste des modèles probabilistes qui tiennent compte de ces effets. Mais l'idée de départ reste la proportion de Lincoln-Petersen.

Laplace et la population de la France Gravure en buste de Pierre-Simon de Laplace, en habit brodé. Pierre-Simon de Laplace (1749-1827). Gravure de James Posselwhite, domaine public, Wikimedia Commons.

Au XVIIIe siècle, personne ne sait combien la France compte d'habitants : un recensement complet est long, coûteux et peu fiable. Dans un mémoire publié en 1786 par l'Académie des sciences, Pierre-Simon de Laplace propose une autre voie. Les curés enregistrent toutes les naissances du royaume : on connaît donc assez bien le nombre total de naissances annuelles. Si l'on connaît aussi le rapport entre la population et les naissances, une multiplication suffit.

Le Consulat lui donne l'occasion d'appliquer l'idée. Dans trente départements répartis sur tout le territoire, on choisit des communes dont on dénombre soigneusement les habitants : $2\,037\,615$ au 22 septembre 1802. On y relève les naissances de 1800, 1801 et 1802 : $110\,312$ garçons et $105\,287$ filles, soit environ $71\,866$ naissances par an. Le rapport de la population aux naissances annuelles est donc

$$\frac{2\,037\,615}{71\,866} \approx 28{,}35.$$

En supposant un million de naissances annuelles en France, Laplace obtient une population d'environ $28{,}35 \times 1\,000\,000$, soit $28\,352\,845$ habitants.

C'est exactement la capture-recapture, en changeant les mots :

l'étangla France de Laplace
les $M$ poissons marquésle million de naissances de l'année, toutes enregistrées
la seconde pêcheles communes dénombrées
les marqués dans la pêcheles naissances dans ces communes
$N = \frac{M \times n}{X}$$\frac{1\,000\,000 \times 2\,037\,615}{71\,866}$

Laplace ne s'arrête pas là. Il se demande quelle est la probabilité que son résultat s'écarte de la vérité de plus d'une certaine quantité, et écrit dans son Essai philosophique sur les probabilités : « il y a près de trois cent mille à parier contre un que l'erreur de ce résultat n'est pas d'un demi-million ». C'est l'un des premiers calculs d'un niveau de confiance pour une estimation statistique. Le calcul suppose bien sûr que les communes choisies sont représentatives de la France entière, ce que Laplace cherchait à garantir en les répartissant sur tout le territoire.

En écologie aujourd'hui Marquer sans toucher : les marques naturelles Nageoire caudale d'une baleine à bosse sortant de l'eau, avec un motif de taches blanches et noires sur la face inférieure. La queue d'une baleine à bosse, au Costa Rica. Le motif noir et blanc de la face inférieure est propre à chaque individu : une photographie suffit à le « marquer ». Photo : Giles Laurent, CC BY-SA 4.0, Wikimedia Commons.

On ne pose pas de bague sur une baleine. Mais la face inférieure de la queue des baleines à bosse porte un motif unique, comme une empreinte digitale. Les chercheurs photographient les queues : une baleine photographiée une première fois est « marquée », et la retrouver sur une autre photo est une « recapture ». En 1992 et 1993, un vaste programme international (YoNAH) a photographié les baleines à bosse de l'Atlantique Nord sur leurs zones d'alimentation et de reproduction. L'étude publiée en 2003 estime la population à environ $11\,570$ baleines, avec un intervalle de confiance à 95 % allant de $10\,290$ à $13\,390$. Les auteurs précisent que l'estimation est peut-être un peu trop basse : certaines baleines sont plus souvent photographiées que d'autres, le dernier biais de la section précédente.

Marquer par l'ADN Une chercheuse en forêt prélève avec une pince des poils accrochés à un fil de fer barbelé tendu autour d'un arbre. Prélèvement de poils accrochés à un fil barbelé, dans le Montana. L'ADN de chaque touffe de poils identifie l'ours qui s'y est frotté. Photo : Glacier National Park (US National Park Service), CC BY 2.0, Wikimedia Commons.

Pour les animaux rares et farouches, on « capture » l'ADN plutôt que l'animal. Dans le nord-ouest du Montana, en 2003 et 2004, une équipe de l'institut géologique américain (USGS) a tendu des fils barbelés autour de postes appâtés et le long des arbres où les ours se frottent. Environ $34\,000$ touffes de poils ont été récoltées, et l'analyse génétique a identifié $563$ grizzlis différents. Les modèles de capture-recapture, qui comparent combien d'ours ont été « pris » une fois, deux fois, ou plus, ont estimé la population totale à environ $765$ ours : plus du double de ce qu'on pensait.

En France, le suivi du loup repose sur la même idée. Les agents de l'Office français de la biodiversité et un réseau de correspondants récoltent des crottes, des poils, de l'urine ; l'ADN identifie les individus, et des modèles de capture-recapture estiment l'effectif. Pour la fin de l'hiver 2023-2024, l'estimation publiée est d'environ $1\,013$ loups, dans une fourchette de $920$ à $1\,125$. Ce chiffre a des conséquences directes : c'est à partir de lui que l'État fixe le nombre de loups qui peuvent être abattus pour protéger les troupeaux. Le débat entre éleveurs et défenseurs du loup porte donc aussi… sur une estimation statistique et son incertitude.

Bagues, étiquettes et sciences participatives Papillon monarque orange et noir posé sur une fleur, portant une petite étiquette ronde collée sur l'aile. Un papillon monarque portant une étiquette de suivi sur l'aile. Photo : James Leon Young, CC BY-SA 4.0, Wikimedia Commons.

Le baguage des oiseaux, pratiqué depuis la fin du XIXe siècle, est la forme la plus ancienne de marquage : une bague numérotée à la patte, et chaque oiseau repris ou retrouvé renseigne sur les effectifs, les déplacements et la survie. En Amérique du Nord, des milliers de bénévoles collent chaque automne de petites étiquettes sur les ailes des papillons monarques avant leur migration vers le Mexique ; les étiquettes retrouvées servent surtout à reconstituer les routes de migration et la survie. Chez les tortues, on marque souvent la carapace par de petites encoches codées. Dans tous les cas, les mêmes questions reviennent : la marque gêne-t-elle l'animal, se perd-elle, l'échantillon est-il représentatif ?

Des populations humaines cachées

La méthode s'applique aussi aux humains, quand on veut compter une population que personne ne recense entièrement. Le principe est de croiser deux listes indépendantes : la première joue le rôle des marqués, la seconde celui de la recapture.

Exemple fictif, pour comprendre. Dans une région, les hôpitaux ont soigné $n_1 = 240$ personnes atteintes d'une maladie au cours d'une année, et les médecins de ville en ont suivi $n_2 = 180$. En comparant les deux listes, on trouve $60$ personnes présentes dans les deux. Si les deux sources sont indépendantes, la proportion de patients « vus par l'hôpital » parmi ceux des médecins de ville, $\frac{60}{180} = \frac{1}{3}$, estime la proportion dans la population entière : le nombre total de malades est estimé à $\frac{240 \times 180}{60} = 720$, alors que seulement $240 + 180 - 60 = 360$ personnes figurent sur au moins une liste. La moitié des malades seraient invisibles pour les deux sources.

Cette approche sert en épidémiologie (estimer le nombre réel de cas d'une maladie, ou de personnes qui consomment des drogues) et dans l'étude des violences. Au Pérou, la Commission de la vérité et de la réconciliation a croisé en 2003 plusieurs listes de victimes du conflit armé des années 1980-2000, établies par des associations, par l'État et par la Commission elle-même. Elle a estimé le nombre de morts à environ $69\,000$, bien plus que le nombre de victimes nommément connues. Des travaux plus récents, avec des modèles plus fins, proposent des estimations un peu plus basses : preuve que le résultat dépend des hypothèses, en particulier de l'indépendance des listes. Ici, une estimation statistique devient un enjeu de mémoire et de justice.

Des directions pour construire sa question

Ce texte n'est pas un Grand Oral. Il rassemble des connaissances dans lesquelles chacun peut choisir une direction, la creuser et formuler sa propre question. Quelques directions possibles :

Pour l'échange avec le jury : les notions du cours à maîtriser

Le jury peut interroger sur les chapitres de spécialité mobilisés. Avec ce thème, il est utile de connaître parfaitement : le schéma de Bernoulli et la loi binomiale (formule, espérance, variance) ; la linéarité de l'espérance et la variance de $aX$ ; l'inégalité de Bienaymé-Tchebychev et la loi des grands nombres ; la dérivation d'un produit et d'une composée, le lien entre signe de la dérivée et variations ; la fonction inverse et la convexité ; les boucles et la fonction random en Python.

Pour réviser ces chapitres, l'application Maths FlashBac reprend tout le cours de spécialité en cartes.

Pour aller plus loin