Les tests groupés : dépister plus avec moins de tests Grand Oral · mathématiques, SVT, SES Un support de connaissances pour construire sa propre question

← Tous les textes du Grand Oral

MathsSVTSES

Mille personnes à dépister, une maladie rare, des tests coûteux. La solution évidente consiste à faire mille tests. En 1943, un jeune statisticien américain, Robert Dorfman, propose une idée plus astucieuse : mélanger les prélèvements par petits groupes et tester chaque mélange. Si le mélange est négatif, tout le groupe est sain, et un seul test a suffi pour plusieurs personnes. S'il est positif, on reteste chacun. Quand la maladie est rare, la plupart des groupes sont négatifs, et l'on économise une grande partie des tests.

Combien de personnes faut-il mettre dans un groupe ? Jusqu'à quelle fréquence de la maladie l'idée reste-t-elle intéressante ? Combien de tests faudra-t-il vraiment ? Ces questions se traitent entièrement avec les mathématiques de terminale : variables aléatoires et espérance, loi binomiale, étude de fonctions avec l'exponentielle et le logarithme, raisonnement par récurrence, inégalité de Bienaymé-Tchebychev, algorithmique. L'idée a été redécouverte à grande échelle en 2020, pendant l'épidémie de Covid-19.

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. 1943 : la syphilis et les recrues américaines
  2. Un exemple à la main : 1 000 recrues, groupes de 5
  3. Le nombre de tests : une variable aléatoire
  4. Quelle taille de groupe choisir ?
  5. Quand le groupement ne sert plus à rien
  6. Combien de tests faudra-t-il vraiment ?
  7. 2020 : la Covid-19 et le problème de la dilution
  8. Des méthodes plus fines : matrices et dichotomie
  9. Les dons de sang et les limites du modèle
  10. Des directions pour construire sa question
1943 : la syphilis et les recrues américaines

Pendant la Seconde Guerre mondiale, les États-Unis appellent sous les drapeaux des millions de jeunes hommes. La syphilis est alors une maladie fréquente et grave : la pénicilline commence à peine à être produite, et l'armée veut écarter ou soigner les recrues infectées. Chaque appelé subit une prise de sang, analysée par le test de Wassermann, qui détecte dans le sang des anticorps liés à la maladie. Des millions de tests, c'est beaucoup de temps de laboratoire et beaucoup d'argent.

Affiche montrant un bras avec un garrot et le texte Know for sure, get a blood test for syphilis. « Pour en être sûr, faites un test sanguin de la syphilis » : affiche du service de santé publique des États-Unis, années 1941-1945. U.S. Public Health Service, National Archives (NARA 514834), domaine public, via Wikimedia Commons.

Robert Dorfman (1916-2002), alors statisticien au service du gouvernement fédéral, publie en 1943 un article de quatre pages dans The Annals of Mathematical Statistics, intitulé « La détection des membres défectueux de grandes populations ». L'idée y tient en une phrase : on mélange le sang de $k$ personnes, on teste le mélange, et l'on ne teste individuellement que les membres des groupes positifs. L'idée aurait mûri lors d'une discussion avec un collègue, David Rosenblatt. Il semble qu'elle n'ait pas été appliquée à grande échelle à l'époque, notamment parce qu'un sang dilué dans d'autres devient plus difficile à détecter (on y reviendra). Dorfman deviendra ensuite un économiste connu, en particulier pour ses travaux sur la programmation linéaire.

Ce petit article a pourtant fondé tout un domaine, appelé en anglais group testing : les mathématiques de la recherche d'éléments « défectueux » par des tests portant sur des groupes. On le retrouve en médecine, en contrôle de qualité industriel, en informatique et en biologie moléculaire.

5 prélèvements 1 mélange, 1 test négatif les 5 sont sains : 1 test en tout positif on reteste chacun : 1 + 5 = 6 tests Le principe de Dorfman pour un groupe de $5$ : un seul test si le mélange est négatif, six tests s'il est positif.
Un exemple à la main : 1 000 recrues, groupes de 5

Prenons $1\,000$ recrues et supposons, pour l'exemple, que chacune est infectée avec la probabilité $p = 0{,}02$ (soit $2\,\%$), indépendamment des autres. C'est une valeur choisie pour faire le calcul, pas une statistique de 1943. On forme $200$ groupes de $5$ personnes.

Étape 1 : la probabilité qu'un groupe soit négatif. Le mélange est négatif si et seulement si les $5$ personnes sont saines. Chacune est saine avec la probabilité $1 - 0{,}02 = 0{,}98$, et les personnes sont indépendantes, donc on multiplie :

$$P(\text{groupe négatif}) = 0{,}98^5 \approx 0{,}904.$$

Un groupe est donc positif avec la probabilité $1 - 0{,}98^5 \approx 0{,}096$ : environ un groupe sur dix.

Étape 2 : le nombre moyen de groupes positifs. Sur $200$ groupes, on attend en moyenne $200 \times 0{,}096 \approx 19{,}2$ groupes positifs.

Étape 3 : le nombre moyen de tests. On fait $200$ tests de mélanges, puis $5$ tests individuels pour chaque groupe positif :

$$200 + 19{,}2 \times 5 = 296.$$

En moyenne, environ $296$ tests au lieu de $1\,000$ : on économise à peu près $70\,\%$ des tests, et l'on trouve quand même toutes les personnes infectées (si le test ne se trompe jamais, hypothèse que l'on discutera).

Le nombre de tests : une variable aléatoire

Généralisons. Chaque personne est infectée avec la probabilité $p$, indépendamment des autres, et l'on note $q = 1 - p$. On forme un groupe de $k$ personnes ($k \geqslant 2$) et l'on appelle $T$ le nombre de tests utilisés pour ce groupe.

Étape 1 : les valeurs de $T$. Si le mélange est négatif, $T = 1$. S'il est positif, on fait en plus $k$ tests individuels, donc $T = 1 + k$.

Étape 2 : la loi de $T$. Notons $X_1$, …, $X_k$ les variables de Bernoulli qui valent $1$ si la personne est infectée. Le mélange est négatif quand $X_1 = 0$, …, $X_k = 0$, événements indépendants de probabilité $q$ chacun, donc $P(T = 1) = q^k$.

valeur $t$$1$$1 + k$
$P(T = t)$$q^k$$1 - q^k$

Étape 3 : l'espérance. Par définition,

$$E(T) = 1 \times q^k + (1 + k)\left(1 - q^k\right),$$

et, en développant,

$$E(T) = 1 + k\left(1 - q^k\right).$$

Étape 4 : le coût par personne. Le groupe compte $k$ personnes, donc le nombre moyen de tests par personne est

$$f(k) = \frac{E(T)}{k} = \frac{1}{k} + 1 - q^k.$$

On vérifie sur l'exemple : $f(5) = 0{,}2 + 1 - 0{,}98^5 \approx 0{,}296$, soit $296$ tests pour $1\,000$ personnes. Le groupement est intéressant lorsque $f(k) < 1$, c'est-à-dire lorsqu'il coûte en moyenne moins d'un test par personne.

La formule se lit facilement : $\frac{1}{k}$ est la part du test de mélange qui revient à chaque personne, et $1 - q^k$ est la probabilité qu'elle doive être retestée. Un grand groupe partage mieux le premier test, mais il est plus souvent positif : les deux termes tirent en sens contraire, et il existe une taille idéale.

Quelle taille de groupe choisir ? Le tableur

Le tableur ci-dessous calcule $f(k)$ pour $k$ allant de $2$ à $30$. La puissance $q^k$ y est obtenue de proche en proche, comme une suite géométrique : chaque ligne multiplie la précédente par $q$. On peut changer la prévalence dans la case jaune B1 (avec un point décimal, par exemple 0.01).

Pour $p = 0{,}02$, la colonne C est minimale pour $k = 8$ : environ $0{,}274$ test par personne, soit $73\,\%$ d'économie. Mais la courbe est très plate autour du minimum : des groupes de $6$ à $10$ donnent presque le même résultat. Avec $p = 0{,}01$, on trouve $k = 11$ et environ $0{,}196$ test par personne : on retrouve l'économie d'environ $80\,\%$ annoncée par Dorfman pour une maladie touchant une personne sur cent.

La figure var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; var petit = {fontSize: 11, useKatex: false, parse: false, fixed: true, highlight: false}; var ax = {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}; board.create('segment', [[0, 0], [32, 0]], ax); board.create('segment', [[0, 0], [0, 1.22]], ax); for (var t = 5; t <= 30; t += 5) { board.create('segment', [[t, 0], [t, -0.02]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [t - 0.6, -0.07, String(t)], petit); } for (var u = 0.2; u <= 1.01; u += 0.2) { board.create('segment', [[0, u], [-0.3, u]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [-3.2, u, u.toFixed(1).replace('.', ',')], petit); } board.create('text', [31, -0.14, 'k'], opt); board.create('segment', [[0, 1], [31, 1]], {strokeColor: '#9e9e9e', strokeWidth: 1, dash: 2, fixed: true, highlight: false}); var sp = board.create('slider', [[2, -0.25], [20, -0.25], [0.005, 0.02, 0.35]], {withLabel: false, snapWidth: 0.005}); function nb(x, d) { return x.toFixed(d).replace('.', ','); } function p() { return sp.Value(); } function f(x) { return 1 / x + 1 - Math.pow(1 - p(), x); } board.create('text', [21, -0.25, function () { return 'p = ' + nb(100 * p(), 1) + ' %'; }], opt); board.create('functiongraph', [f, 1.6, 30.5], {strokeColor: '#90caf9', strokeWidth: 1.5, highlight: false}); var pts = []; for (var k = 2; k <= 30; k++) { (function (kk) { pts.push(board.create('point', [kk, function () { return Math.min(f(kk), 1.2); }], {size: 1.5, name: '', fixed: true, highlight: false, strokeColor: '#1565c0', fillColor: '#1565c0', showInfobox: false})); })(k); } function meilleur() { var b = 2; for (var k = 3; k <= 30; k++) { if (f(k) < f(b)) b = k; } return b; } board.create('point', [function () { return meilleur(); }, function () { return f(meilleur()) < 1 ? f(meilleur()) : -50; }], {size: 4, name: '', fixed: true, highlight: false, strokeColor: '#c62828', fillColor: '#c62828', showInfobox: false}); board.create('text', [0.5, -0.4, function () { var b = meilleur(); return f(b) < 1 ? 'meilleur : k = ' + b + ', ' + nb(f(b), 3) + ' test/pers.' : 'aucun groupe n\'est rentable'; }], {fontSize: 12, useKatex: false, parse: false, fixed: true, highlight: false, color: '#c62828'}); board.create('text', [0.5, -0.52, function () { var b = meilleur(); return f(b) < 1 ? 'économie : ' + nb(100 * (1 - f(b)), 0) + ' %' : 'tester chacun est mieux'; }], {fontSize: 12, useKatex: false, parse: false, fixed: true, highlight: false, color: '#c62828'}); Les points bleus donnent le nombre moyen de tests par personne $f(k)$ pour chaque taille de groupe $k$ ; le point rouge est le minimum. Le curseur règle la prévalence $p$. La droite en pointillés correspond à un test par personne. Quand $p$ dépasse environ $30\,\%$, tous les points passent au-dessus. Une formule approchée, démontrée par récurrence

Le tableur donne le meilleur $k$ pour chaque $p$, mais on aimerait une formule. Elle vient d'une inégalité classique.

Inégalité de Bernoulli. Pour tout réel $p \in [0 ; 1]$ et tout entier $k \geqslant 1$, $(1 - p)^k \geqslant 1 - kp$.

Initialisation. Pour $k = 1$, les deux membres valent $1 - p$ : l'inégalité est vraie.

Hérédité. Supposons $(1 - p)^k \geqslant 1 - kp$ pour un entier $k \geqslant 1$. Comme $1 - p \geqslant 0$, on peut multiplier les deux membres par $1 - p$ sans changer le sens :

$$(1 - p)^{k+1} \geqslant (1 - kp)(1 - p).$$

On développe le membre de droite :

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

Or $kp^2 \geqslant 0$, donc $(1 - p)^{k+1} \geqslant 1 - (k+1)p$ : la propriété est vraie au rang $k + 1$.

Conclusion. Par récurrence, l'inégalité est vraie pour tout entier $k \geqslant 1$.

On en déduit $1 - q^k \leqslant kp$, donc une majoration du coût par personne :

$$f(k) \leqslant \frac{1}{k} + kp.$$

Étudions la fonction $g(x) = \dfrac{1}{x} + px$ sur $]0 ; +\infty[$. Sa dérivée est

$$g'(x) = -\frac{1}{x^2} + p = \frac{px^2 - 1}{x^2}.$$

Elle est négative pour $x < \frac{1}{\sqrt{p}}$ et positive ensuite : $g$ atteint son minimum en $x = \frac{1}{\sqrt{p}}$, et ce minimum vaut

$$g\left(\frac{1}{\sqrt{p}}\right) = \sqrt{p} + \sqrt{p} = 2\sqrt{p}.$$

Conclusion pratique. En choisissant des groupes d'environ $\frac{1}{\sqrt{p}}$ personnes, on fait au plus environ $2\sqrt{p}$ test par personne. Pour $p = 0{,}01$ : des groupes de $10$ et au plus $0{,}2$ test par personne (le tableur donne $k = 11$ et $0{,}196$). Pour une maladie touchant une personne sur mille, des groupes d'environ $32$ et au plus $0{,}063$ test par personne : plus de $93\,\%$ d'économie. Plus la maladie est rare, plus le groupement est rentable.

Quand le groupement ne sert plus à rien

Si la maladie est fréquente, presque tous les mélanges sont positifs et le premier test est gaspillé. Cherchons le seuil exact.

Étape 1 : traduire la condition. Un groupe de $k$ est rentable si $f(k) < 1$, c'est-à-dire

$$\frac{1}{k} + 1 - q^k < 1 \iff q^k > \frac{1}{k}.$$

Étape 2 : passer au logarithme. La fonction $\ln$ est strictement croissante, donc

$$\begin{aligned} q^k > \frac{1}{k} &\iff k \ln q > -\ln k \\ &\iff \ln q > -\frac{\ln k}{k}. \end{aligned}$$

Étape 3 : le meilleur $k$ pour ce critère. Il existe un groupe rentable dès que la condition est vraie pour au moins un entier $k \geqslant 2$. La condition est la plus facile à satisfaire quand $\frac{\ln k}{k}$ est le plus grand possible. On étudie donc $h(x) = \dfrac{\ln x}{x}$ sur $[1 ; +\infty[$ :

$$h'(x) = \frac{\frac{1}{x} \times x - \ln x \times 1}{x^2} = \frac{1 - \ln x}{x^2}.$$

La dérivée est positive pour $x < \mathrm{e}$ et négative pour $x > \mathrm{e}$ : $h$ est maximale en $x = \mathrm{e} \approx 2{,}718$. Pour les entiers, il suffit de comparer les deux voisins : $h(2) = \frac{\ln 2}{2} \approx 0{,}347$ et $h(3) = \frac{\ln 3}{3} \approx 0{,}366$. Le meilleur entier est donc $k = 3$.

Étape 4 : le seuil. Le groupement est rentable pour au moins une taille de groupe si et seulement si

$$\ln q > -\frac{\ln 3}{3} \iff q > 3^{-1/3} \approx 0{,}693,$$

c'est-à-dire $p < 1 - 3^{-1/3} \approx 0{,}307$. Au-delà d'environ $31\,\%$ de personnes infectées, aucune taille de groupe ne fait mieux que tester tout le monde, et un peu en dessous du seuil le gain est minuscule (avec $p = 0{,}3$, le meilleur choix, $k = 3$, ne fait gagner qu'environ $1\,\%$ des tests).

var petit = {fontSize: 11, useKatex: false, parse: false, fixed: true, highlight: false}; var ax = {strokeColor: '#455a64', strokeWidth: 1, fixed: true, highlight: false, lastArrow: true}; board.create('segment', [[0, 0], [9.1, 0]], ax); board.create('segment', [[0, 0], [0, 0.44]], ax); for (var t = 1; t <= 8; t++) { board.create('segment', [[t, 0], [t, -0.008]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [t - 0.12, -0.035, String(t)], petit); } for (var u = 0.1; u <= 0.41; u += 0.1) { board.create('segment', [[0, u], [-0.1, u]], {strokeColor: '#455a64', fixed: true, highlight: false}); board.create('text', [-1.0, u, u.toFixed(1).replace('.', ',')], petit); } board.create('text', [8.9, -0.07, 'x'], petit); board.create('functiongraph', [function (x) { return Math.log(x) / x; }, 1, 9], {strokeColor: '#1565c0', strokeWidth: 2, highlight: false}); board.create('segment', [[Math.E, 0], [Math.E, 1 / Math.E]], {strokeColor: '#9e9e9e', dash: 2, fixed: true, highlight: false}); board.create('text', [Math.E - 0.15, -0.075, 'e'], {fontSize: 12, useKatex: false, parse: false, fixed: true, highlight: false, color: '#757575'}); var o = {size: 3, name: '', fixed: true, highlight: false, showInfobox: false}; board.create('point', [2, Math.log(2) / 2], Object.assign({strokeColor: '#ef6c00', fillColor: '#ef6c00'}, o)); board.create('point', [3, Math.log(3) / 3], Object.assign({strokeColor: '#c62828', fillColor: '#c62828'}, o)); board.create('point', [4, Math.log(4) / 4], Object.assign({strokeColor: '#ef6c00', fillColor: '#ef6c00'}, o)); board.create('text', [3.3, 0.415, 'k = 3 : maximum entier'], {fontSize: 11, useKatex: false, parse: false, fixed: true, highlight: false, color: '#c62828'}); board.create('text', [5.4, 0.2, 'y = ln(x) / x'], {fontSize: 12, useKatex: false, parse: false, fixed: true, highlight: false, color: '#1565c0'}); La fonction $h(x) = \frac{\ln x}{x}$ est maximale en $x = \mathrm{e}$. Parmi les entiers, c'est $3$ qui donne la plus grande valeur : les groupes de $3$ sont les derniers à rester rentables quand la prévalence augmente.
Combien de tests faudra-t-il vraiment ?

L'espérance donne une moyenne : $296$ tests pour l'exemple des $1\,000$ recrues. Mais un laboratoire doit commander ses réactifs à l'avance, et il veut savoir si le nombre réel de tests risque de beaucoup s'écarter de cette moyenne.

Étape 1 : une loi binomiale. Notons $N$ le nombre de groupes positifs parmi les $200$. Chaque groupe est positif avec la même probabilité $\pi = 1 - 0{,}98^5 \approx 0{,}0961$, et les groupes sont indépendants puisqu'ils contiennent des personnes différentes. On répète donc $200$ fois la même épreuve de Bernoulli de façon indépendante : $N$ suit la loi binomiale $\mathcal{B}(200 ; \pi)$.

Étape 2 : espérance et variance.

$$E(N) = 200\,\pi \approx 19{,}2,$$ $$V(N) = 200\,\pi\,(1 - \pi) \approx 17{,}4.$$

Le nombre total de tests est $200 + 5N$ : on retrouve $E(200 + 5N) = 200 + 5\,E(N) \approx 296$ par linéarité de l'espérance.

Étape 3 : Bienaymé-Tchebychev. L'inégalité donne, pour l'écart $\delta = 10$,

$$P\left(|N - E(N)| \geqslant 10\right) \leqslant \frac{V(N)}{10^2} \approx 0{,}17.$$

Il y a donc au moins $83\,\%$ de chances que $N$ soit compris entre $10$ et $29$, c'est-à-dire que le nombre de tests soit compris entre $200 + 5 \times 10 = 250$ et $200 + 5 \times 29 = 345$. L'inégalité est prudente : le calcul exact avec la loi binomiale donne une probabilité d'environ $98\,\%$. On peut le vérifier par simulation.

from random import random p = 0.02 # prévalence n = 1000 # nombre de personnes k = 5 # taille des groupes def campagne(): tests = 0 for g in range(n // k): malades = 0 for i in range(k): if random() < p: malades = malades + 1 tests = tests + 1 # test du mélange if malades > 0: tests = tests + k # on reteste chacun return tests resultats = [campagne() for j in range(200)] moyenne = sum(resultats) / len(resultats) dans_intervalle = len([t for t in resultats if 250 <= t <= 345]) print("nombre moyen de tests :", moyenne) print("plus petit :", min(resultats), " plus grand :", max(resultats)) print("part des campagnes entre 250 et 345 tests :", dans_intervalle / len(resultats))

Sur $200$ campagnes simulées, la moyenne est proche de $296$, et presque toutes les campagnes tombent entre $250$ et $345$ tests. Plus on simule de campagnes, plus il est probable que la moyenne observée soit proche de l'espérance $296$ : c'est la loi des grands nombres.

2020 : la Covid-19 et le problème de la dilution

Au printemps 2020, la Covid-19 se répand et les laboratoires manquent de réactifs pour les tests PCR. L'idée de Dorfman revient immédiatement. En mars 2020, une équipe du Technion, en Israël, montre qu'un seul prélèvement positif peut être détecté dans un mélange qui en contient jusqu'à $32$. Des laboratoires allemands, américains et chinois utilisent ensuite des mélanges de quelques prélèvements. En juillet 2020, l'agence américaine du médicament autorise un test sur des mélanges de $4$ prélèvements. Selon les autorités chinoises, la campagne de dépistage de Wuhan, fin mai 2020, a porté sur une dizaine de millions d'habitants en quelques semaines, en mélangeant une partie des prélèvements. Les chiffres précis varient selon les sources : on les citera avec prudence.

Pourquoi ne pas mélanger 1 000 prélèvements ?

Le calcul de la section précédente pousse à faire de très grands groupes quand la maladie est rare. La biologie l'interdit : mélanger $k$ prélèvements dilue celui qui est positif $k$ fois. Or la PCR détecte le virus en recopiant son matériel génétique : à chaque cycle, la quantité est (environ) doublée, et l'appareil donne un résultat positif quand un seuil est atteint. Le nombre de cycles nécessaires s'appelle le Ct.

Si la quantité de départ est divisée par $k$, il faut $c$ cycles de plus pour la rattraper, avec $2^c = k$, donc

$$c = \frac{\ln k}{\ln 2}.$$

Un mélange de $8$ demande $3$ cycles de plus, un mélange de $32$ en demande $5$, et un mélange de $1\,024$ en demanderait $10$. Un prélèvement faiblement positif, qui donnait un résultat juste avant le nombre maximal de cycles de l'appareil, devient alors invisible : c'est un faux négatif. C'est pourquoi les groupes réellement utilisés restent petits, souvent entre $4$ et $10$ : le modèle mathématique doit composer avec une contrainte de laboratoire. Le logarithme explique au passage pourquoi la perte reste modeste pour des groupes moyens : doubler la taille du groupe ne coûte qu'un cycle de plus.

Des méthodes plus fines : matrices et dichotomie

La méthode de Dorfman fait deux étapes : le mélange, puis tout le monde. On peut faire mieux, et les mathématiciens ont étudié de nombreuses variantes depuis 1943.

La plaque en matrice Plaque de plastique transparente percée de 96 petits puits disposés en 8 lignes et 12 colonnes. Une plaque de PCR à $96$ puits, en $8$ lignes et $12$ colonnes. Photographie de Lilly_M, 2011, licence CC BY-SA 3.0, via Wikimedia Commons.

Les laboratoires rangent les prélèvements dans des plaques de $8 \times 12 = 96$ puits. On peut faire un mélange par ligne et un mélange par colonne : $8 + 12 = 20$ tests. Si un seul prélèvement est positif, une seule ligne et une seule colonne sont positives, et leur croisement désigne le malade, sans deuxième étape : $20$ tests pour $96$ personnes. S'il y a deux positifs dans des lignes et des colonnes différentes, deux lignes et deux colonnes s'allument, ce qui laisse $2 \times 2 = 4$ suspects à retester : un petit problème de dénombrement.

La dichotomie

Si un groupe de $32$ contient un seul positif, on peut le retrouver en coupant le groupe en deux, en testant une moitié (si elle est négative, le positif est dans l'autre), puis en recommençant : $16$, $8$, $4$, $2$, $1$. Il faut $\log_2 32 = 5$ tests de plus, au lieu de $32$. C'est le même principe que la recherche dichotomique en algorithmique, et l'idée a été étudiée en 1959 par Milton Sobel et Phyllis Groll. Elle se heurte, elle aussi, au problème de la dilution.

Les dons de sang et les limites du modèle

Le groupement est entré dans la pratique ordinaire de la transfusion sanguine. Depuis la fin des années 1990, plusieurs pays, dont les États-Unis, recherchent le matériel génétique de virus comme le VIH ou celui de l'hépatite C dans les dons de sang en testant des mélanges de quelques dons (souvent de $6$ à $16$ selon les cas). Les virus recherchés sont rares chez les donneurs, ce qui est exactement la situation où la méthode est la plus rentable. D'autres pays testent les dons un par un, au prix d'un coût plus élevé, pour ne pas subir l'effet de la dilution : c'est un choix entre coût et sécurité.

Le modèle de Dorfman repose sur des hypothèses qu'il faut savoir critiquer :

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 : les variables aléatoires, leur loi et leur espérance ; l'indépendance et la loi binomiale (espérance, variance) ; l'inégalité de Bienaymé-Tchebychev et la loi des grands nombres ; le raisonnement par récurrence ; la dérivation et l'étude des variations d'une fonction ; les fonctions exponentielle et logarithme ; les suites géométriques ; les boucles en Python.

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

Pour aller plus loin