Faux positifs, faux négatifs · Sensibilité et spécificité · Le paradoxe du test fiable
Thomas Bayes (1701–1761) est un pasteur presbytérien anglais et mathématicien amateur. Il s'intéresse à un problème alors ouvert : comment remonter des effets observés aux causes probables ? Par exemple, sachant qu'un test médical est positif, quelle est la probabilité que le patient soit réellement malade ?
Bayes ne publie jamais ses travaux de son vivant. C'est son ami Richard Price qui retrouve son manuscrit après sa mort et le fait publier en 1763 sous le titre An Essay towards solving a Problem in the Doctrine of Chances. Le mathématicien français Pierre-Simon de Laplace reformule et généralise le résultat quelques décennies plus tard, lui donnant sa forme moderne.
Aujourd'hui, ce raisonnement — appelé inférence bayésienne — est au cœur de l'intelligence artificielle : diagnostic médical assisté, filtres anti-spam, détection de fraude bancaire, systèmes de recommandation.
On considère un test binaire (positif / négatif) destiné à détecter un caractère binaire (malade / sain, spam / non-spam, défaillant / conforme…). Le test n'est jamais parfait : il peut se tromper dans les deux sens.
Ces quatre effectifs se rangent naturellement dans un tableau de contingence :
| Test positif | Test négatif | Total | |
|---|---|---|---|
| Malade | VP | FN | $M$ |
| Sain | FP | VN | $\bar{M}$ |
| Total | $T^+$ | $T^-$ | $N$ |
Un antivirus analyse 1 000 fichiers, dont 15 % sont réellement infectés. Le logiciel met en quarantaine 98 % des fichiers infectés ($Se = 0{,}98$), mais met aussi à tort en quarantaine 4 % des fichiers sains ($Sp = 1 - 0{,}04 = 0{,}96$).
| Quarantaine | Non quarantaine | Total | |
|---|---|---|---|
| Infecté | 147 | 3 | 150 |
| Non infecté | 34 | 816 | 850 |
| Total | 181 | 819 | 1000 |
Parmi les 181 fichiers mis en quarantaine, seuls 147 sont réellement infectés : la valeur prédictive positive du test vaut $\frac{147}{181} \approx 81{,}2\,\%$.
Fais varier la prévalence, la sensibilité et la spécificité pour observer un phénomène surprenant : un test très fiable peut produire une majorité de faux positifs lorsque la maladie est rare.
| Test positif | Test négatif | Total | |
|---|---|---|---|
| Malade | — | — | — |
| Sain | — | — | — |
| Total | — | — | 10 000 |
Simulation sur une population fictive de 10 000 personnes.
Le calcul précédent peut se généraliser sous forme d'une formule, sans reconstruire tout le tableau à chaque fois.
Arbre pondéré — les deux chemins menant à « T+ » (en bleu) donnent le dénominateur de la formule de Bayes.
La probabilité d'être réellement malade sachant que le test est positif vaut :
$$\boxed{P(M \mid T^+) = \dfrac{p \times Se}{p \times Se + (1-p) \times (1-Sp)}}$$Le numérateur est la probabilité du chemin « malade et positif » ; le dénominateur est la probabilité totale d'être positif (chemin malade + chemin sain), conformément à la formule des probabilités totales.
🔗 Renvoi — la formule des probabilités totales et la formule de Bayes sous leur forme générale sont étudiées en Première spécialité, chapitre 10 (Probabilités conditionnelles). Le programme d'Enseignement Scientifique se limite au raisonnement direct sur le tableau de contingence.
Une étude sur 100 personnes donne la répartition suivante selon le groupe sanguin et le facteur Rhésus :
| O | A | B | AB | Total | |
|---|---|---|---|---|---|
| Rhésus + | 36 | 38 | 8 | 3 | 85 |
| Rhésus − | 6 | 7 | 1 | 1 | 15 |
| Total | 42 | 45 | 9 | 4 | 100 |
a. Quelle proportion de la population est de rhésus positif ? b. Quelle proportion de la population est du groupe A ? c. Parmi les personnes du groupe O, quelle proportion est de rhésus positif ? Comparer avec la proportion parmi le groupe B.
a. $\frac{85}{100} = 85\,\%$ sont de rhésus positif.
b. $\frac{45}{100} = 45\,\%$ sont du groupe A.
c. Parmi le groupe O : $\frac{36}{42} \approx 85{,}7\,\%$ de rhésus positif. Parmi le groupe B : $\frac{8}{9} \approx 88{,}9\,\%$. Les proportions sont proches, mais celle du groupe B est légèrement supérieure.
Une maladie touche 1 personne sur 1 000. Le test de dépistage a une sensibilité de 99 % et une spécificité de 98 %. Sur une population de 100 000 personnes :
a. Construire le tableau de contingence. b. Calculer la valeur prédictive positive du test. c. Commenter le résultat obtenu.
a. $M = 0{,}001 \times 100\,000 = 100$ malades, $\bar{M} = 99\,900$ sains.
$VP = 0{,}99 \times 100 = 99$ ; $FN = 1$.
$FP = 0{,}02 \times 99\,900 = 1\,998$ ; $VN = 97\,902$.
| Test + | Test − | Total | |
|---|---|---|---|
| Malade | 99 | 1 | 100 |
| Sain | 1 998 | 97 902 | 99 900 |
| Total | 2 097 | 97 903 | 100 000 |
b. $VPP = \dfrac{99}{2\,097} \approx 4{,}7\,\%$.
c. Bien que le test soit très fiable (99 % de sensibilité, 98 % de spécificité), plus de 95 % des personnes testées positives ne sont pas malades ! Ceci s'explique par la rareté de la maladie : le grand nombre de personnes saines génère, même avec un faible taux d'erreur, un nombre de faux positifs supérieur au nombre de vrais positifs. C'est pourquoi un résultat positif à un dépistage de masse est presque toujours suivi d'un second test de confirmation.
Construction automatique du tableau de contingence et calcul de la VPP :
def tableau_contingence(N, p, Se, Sp): """Retourne (VP, FN, FP, VN) pour une population de taille N.""" M = p * N # nombre de malades M_sain = N - M # nombre de sains VP = Se * M FN = M - VP VN = Sp * M_sain FP = M_sain - VN return VP, FN, FP, VN def vpp(p, Se, Sp): """Valeur prédictive positive (formule de Bayes).""" return (p * Se) / (p * Se + (1 - p) * (1 - Sp)) # Exemple : maladie rare (1/1000), test à 99% de sensibilité et spécificité N, p, Se, Sp = 100_000, 0.001, 0.99, 0.98 VP, FN, FP, VN = tableau_contingence(N, p, Se, Sp) print(f"VP={VP:.0f} FN={FN:.0f} FP={FP:.0f} VN={VN:.0f}") print(f"VPP = {vpp(p, Se, Sp)*100:.1f} %") # VP=99 FN=1 FP=1998 VN=97902 # VPP = 4.7 %
Un logiciel anti-spam analyse les courriels. On sait que 12 % des courriels sont indésirables (spam).
Le filtre détecte 95 % des spams (ils contiennent l'expression suspecte E). Parmi les courriels légitimes, 1 % contiennent aussi cette expression E par hasard.
Sur 10 000 courriels : a. Combien de spams contiennent l'expression E ? b. Combien de courriels légitimes ne la contiennent pas ? c. Si un courriel contient E, quelle est la probabilité que ce soit un spam ?
a. 12 % de 10 000 = 1 200 spams. 95 % de 1 200 = 1 140 spams contiennent E.
b. 8 800 courriels légitimes. 99 % de 8 800 = 8 712 ne contiennent pas E.
c. Contiennent E : 1 140 (spams) + 88 (légitimes, soit 1 % de 8 800) = 1 228. Parmi eux, 1 140 sont des spams soit environ 92,8 %. Le filtre est efficace !
| Contient E | Pas E | Total | |
|---|---|---|---|
| Spam | 1 140 | 60 | 1 200 |
| Légitime | 88 | 8 712 | 8 800 |
| Total | 1 228 | 8 772 | 10 000 |
Une usine produit 34 000 pièces par jour avec deux machines. La machine A produit 14 000 pièces (taux de défaut : 1 %). La machine B produit 20 000 pièces (taux de défaut : 0,5 %).
a. Construire le tableau de contingence (machine / présence de défaut). b. On prélève une pièce au hasard ; elle est défectueuse. Quelle est la probabilité qu'elle provienne de la machine A ? de la machine B ?
| Défaut | Ok | Total | |
|---|---|---|---|
| Machine A | 140 | 13 860 | 14 000 |
| Machine B | 100 | 19 900 | 20 000 |
| Total | 240 | 33 760 | 34 000 |
b. Parmi les 240 pièces défectueuses, 140 viennent de A soit 140/240 ≈ 58 % et 100/240 ≈ 42 % de B. Même si la machine B produit plus, son taux de défaut plus faible compense : les deux machines contribuent de façon comparable aux défauts.