- Événements et opérations. Un événement est une partie de Ω. A ∩ B : A et B arrivent tous les deux ; A ∪ B : au moins l'un ; Aᶜ : A n'arrive pas. A et B sont disjoints quand A ∩ B = ∅ (l02, notion 1).
- Axiomes et complément. P(Ω) = 1, et la probabilité d'une union d'événements disjoints est la somme de leurs probabilités. D'où P(Aᶜ) = 1 − P(A) (l02, notion 2).
- Compter. Quand les issues sont équiprobables, P(A) = #A/#Ω : 13 piques sur 52 cartes, 36 couples pour deux dés (l01, notion 2).
La leçon
P(A ∣ B) : zoomer sur B outil
Brunton 08 · Conditional Probabilities
Brunton tire une carte. A : c'est un pique, P(A) = 1/4. On lui apprend B : la carte est noire. Il ne reste que deux couleurs possibles, trèfle et pique : la probabilité du pique monte à 1/2. Si on lui dit « rouge », elle tombe à 0. Une information partielle sur B change la probabilité de A.
L'image est celle d'un zoom. Savoir que B est arrivé, c'est jeter toutes les issues hors de B : B devient le nouvel univers, et la probabilité de A est la part de B qu'occupe A ∩ B. Avec deux dés, le premier vaut 3 sachant que le second vaut 5 : 1 case sur 6, soit 1/6, comme sans information. Sachant que la somme vaut 6 : 1 case sur 5, soit 1/5. Savoir la somme renseigne sur le premier dé.
Chaque case est une issue équiprobable : 52 cartes, ou 36 couples de deux dés. Les cases de A sont en violet (le pique, ou « premier dé = 3 »). Choisis une condition B : ses cases descendent former la bande du bas, le nouvel univers, et le reste s'estompe. P(A ∣ B) se lit dans la bande : 13 cases sur 26 sachant « noire », 0 sur 26 sachant « rouge », 1 sur 6 sachant « second dé = 5 », 1 sur 5 sachant « somme = 6 ».
- P(A ∩ B) : la masse des issues où A et B arrivent ensemble. Diviser par P(B) renormalise, pour que P(B ∣ B) = 1.
- P(B) > 0 : on divise. Conditionner par un événement de probabilité nulle n'a pas de sens ici.
- À B fixé, P(· ∣ B) est une probabilité comme une autre : elle vérifie les axiomes de l02, donc P(Aᶜ ∣ B) = 1 − P(A ∣ B).
- Issues équiprobables : P(A ∣ B) = #(A ∩ B) / #B, on compte à l'intérieur de B.
- La barre est juste ici, parce que B est un événement. Un paramètre fixe θ n'est pas un événement : la probabilité d'une donnée sous θ s'écrit p(x ; θ), avec un point-virgule (l04, notion 1).
Ω est le carré, d'aire 1 : une aire est une probabilité. A est fixe (aire 0,30), B se règle. Au départ P(A ∩ B) = 0,10 ; divisé par P(B) = 0,24, il donne P(A ∣ B) = 0,42 ; divisé par P(A) = 0,30, il donne P(B ∣ A) = 0,33. Déplace et élargis B : le numérateur est toujours commun, seuls les dénominateurs diffèrent. Clique sur zoomer sur B : B s'étire jusqu'à remplir le carré, et la part qu'y occupe A ∩ B est P(A ∣ B).
Exemples simples cartes, deux dés, l'étude de Brunton
- Pique sachant noire. P(pique ∩ noire) = 13/52, P(noire) = 26/52, donc P(pique ∣ noire) = 13/26 = 1/2. Sachant rouge : P(pique ∩ rouge) = 0, donc 0.
- Deux dés, 36 couples équiprobables. A = « premier dé = 3 ». Sachant « second dé = 5 » : A ∩ B = {(3, 5)}, une case sur six, 1/6 = P(A). Sachant « somme = 6 » : la somme vaut 6 en (1, 5), (2, 4), (3, 3), (4, 2), (5, 1), et A n'en contient qu'une, (3, 3) : 1/5. C'est l'exercice que Brunton laisse.
- La paire d'ouverture de Brunton, pique et trois. P(pique ∩ trois) = 1/52, le trois de pique ; P(trois) = 4/52 ; P(pique ∣ trois) = 1/4 = P(pique). Savoir que c'est un trois ne dit rien de la couleur : c'est l'indépendance (notion 7).
- L'étude de Brunton. 1 000 personnes : 500 malades, dont 450 positifs et 50 négatifs ; 500 témoins sains, dont 100 positifs et 400 négatifs.
- P(+) = 550/1 000 = 0,55 dans cet échantillon ;
- P(+ ∣ malade) = 450/500 = 0,90, on zoome sur les malades ;
- P(− ∣ sain) = 400/500 = 0,80, on zoome sur les témoins ;
- P(malade ∣ +) = 450/550 = 0,818, on zoome sur les positifs. Même numérateur 450, autre dénominateur.
Simuler en Python conditionner, c'est filtrer puis compter
import numpy as np
rng = np.random.default_rng(0)
n = 200_000
d1 = rng.integers(1, 7, n) # first die
d2 = rng.integers(1, 7, n) # second die
A = d1 == 3
conditions = [("second die = 5", d2 == 5, "1/6"),
("sum = 6", d1 + d2 == 6, "1/5"),
("sum = 7", d1 + d2 == 7, "1/6")]
for name, B, exact in conditions:
kept = A[B] # zoom on B: keep only the rolls where B happened
label = f"P(A | {name})"
print(f"{label:22s} = {kept.mean():.4f} exact {exact} ({kept.size} rolls kept)")
print(f"{'P(A)':22s} = {A.mean():.4f} exact 1/6")
B = d1 + d2 == 6 # the formula gives the same number as the filter
print(f"{'P(A and B) / P(B)':22s} = {(A & B).mean() / B.mean():.4f}")
P(A | second die = 5) = 0.1665 exact 1/6 (33490 rolls kept) P(A | sum = 6) = 0.2054 exact 1/5 (27707 rolls kept) P(A | sum = 7) = 0.1677 exact 1/6 (33594 rolls kept) P(A) = 0.1679 exact 1/6 P(A and B) / P(B) = 0.2054
Où ça casse
- P(A ∣ B) n'est pas P(B ∣ A). « 90 % des malades sont positifs » et « 90 % des positifs sont malades » ne disent pas la même chose. Dans le dépistage de la notion 4 (sur 100 000 personnes, 1 % de malades), 900 personnes sont malades et positives : P(+ ∣ M) = 900/1 000 = 0,90, mais P(M ∣ +) = 900/5 850 = 0,154. Même numérateur, des dénominateurs dans un rapport de 5,85.
- Se conditionner sur le mauvais événement. Réflexe : nommer à voix haute la population du dénominateur, « parmi les positifs » ou « parmi les malades », avant de calculer.
- Un échantillon construit fixe P(B). L'étude de Brunton prend 500 malades et 500 témoins : la proportion de malades y vaut 50 % par construction. Son P(malade ∣ +) = 0,818 ne vaut donc pas pour la population, où la maladie est rare (notion 4). Seuls P(+ ∣ malade) et P(− ∣ sain) se transportent d'une population à l'autre.
- P(B) = 0. La formule ne s'applique pas ; conditionner par un événement de probabilité nulle demande les densités (l07, notion 3).
Pour P(B) > 0, P(A ∣ B) = P(A ∩ B)/P(B) : on ne garde que les issues de B et on renormalise par P(B), pour que B pèse 1.
La loi de multiplication outil
Brunton 09 · The Law of Total Probability
Brunton tire la loi de multiplication de la définition en une ligne : « c'est si trivial que je multiplie simplement ». P(A ∣ B) = P(A ∩ B)/P(B), donc P(A ∩ B) = P(A ∣ B) P(B). Comme A ∩ B = B ∩ A, c'est aussi P(B ∣ A) P(A) : on peut conditionner dans les deux sens.
Une image utile : l'arbre. Tire deux cartes sans remise. Première branche : pique, avec probabilité 13/52. Seconde branche, sachant que la première carte était un pique : il reste 12 piques sur 51 cartes. Le chemin « pique puis pique » vaut le produit de ses branches, 13/52 × 12/51 = 1/17 ≈ 0,0588. Avec remise, la seconde branche redevient 13/52 et le chemin vaut 1/16 = 0,0625 : c'est le cas où conditionner ne change rien (notion 7).
Deux cartes tirées l'une après l'autre. Chaque branche porte une probabilité conditionnelle, sachant ce qui est arrivé avant ; chaque feuille, le produit des branches qui y mènent. Le chemin pique puis pique est en rouge. Sans remise : 1/17 = 0,0588 ; avec remise : 1/16 = 0,0625. Dans les deux cas les quatre feuilles somment à 1, et la seconde carte est un pique avec probabilité 1/4.
- Aucune hypothèse d'indépendance : c'est la définition du conditionnement, réécrite. Il faut seulement que les conditionnelles utilisées soient définies.
- Les deux ordres sont justes. On choisit celui dont on connaît les termes : dans un dépistage, on connaît P(+ ∣ M) et P(M), donc P(M ∩ +) = P(+ ∣ M) P(M).
- Pour n événements (règle de chaînage), chaque facteur est conditionné par tous ceux qui le précèdent.
- Sous indépendance seulement, P(A ∣ B) = P(A) et le produit devient P(A) P(B) (notion 7).
Exemples simples cartes, l'étude de Brunton, un modèle de langage
- Deux piques. Sans remise : 13/52 × 12/51 = 1/17 = 0,0588. Avec remise : 1/4 × 1/4 = 1/16 = 0,0625.
- Trois piques sans remise. 13/52 × 12/51 × 11/50 = 11/850 = 0,0129.
- L'arbre complet, sans remise : 1/17 (pique, pique), 13/68 (pique, autre), 13/68 (autre, pique), 19/34 (autre, autre) ; somme 1. La seconde carte est un pique sur deux chemins : 1/17 + 13/68 = 1/4. Sans rien savoir de la première, la seconde a la même loi qu'elle (c'est la notion 3).
- L'étude de Brunton (08). P(malade) = 500/1 000 = 0,5 et P(+ ∣ malade) = 0,9, donc P(malade ∩ +) = 0,45 : les 450 malades positifs sur 1 000.
- Un dépistage à 1 % de malades, qui détecte 90 % d'entre eux : P(M ∩ +) = 0,9 × 0,01 = 0,009, soit 900 personnes sur 100 000.
- En ML, un modèle de langage autorégressif écrit la probabilité d'une phrase par la règle de chaînage : P(w1, …, wn) = P(w1) P(w2 ∣ w1) … P(wn ∣ w1, …, wn−1). Chaque facteur est une sortie du softmax ; la log-vraisemblance de la phrase est la somme de leurs logarithmes. Aucune indépendance n'est supposée.
Preuve une ligne, puis la récurrence
Où ça casse
- P(A ∩ B) = P(A) P(B) n'est pas la loi de multiplication, c'est son cas particulier sous indépendance. Deux piques sans remise : 1/17, pas (1/4)² = 1/16.
- Confondre P(A ∩ B) et P(A ∣ B). P(M ∩ +) = 0,009 compte les malades positifs dans toute la population ; P(+ ∣ M) = 0,90 les compte parmi les malades.
- Couper la règle de chaînage. Chaque facteur est conditionné par tout le passé. Ne garder que le terme précédent, P(wt ∣ wt−1), est une hypothèse supplémentaire (un modèle de Markov), pas la règle.
Pour tous événements A et B, sans hypothèse d'indépendance, P(A ∩ B) = P(A ∣ B) P(B) = P(B ∣ A) P(A) : sur un arbre, un chemin vaut le produit de ses branches.
Les probabilités totales sur une partition outil
Brunton 09
Brunton découpe Ω en morceaux B1, …, Bn qui ne se chevauchent pas et le recouvrent entièrement : une partition. Un événement A traverse plusieurs morceaux. Pour sa probabilité, on entre dans chaque morceau, on y mesure A, on pondère par le poids du morceau et on additionne.
Son exemple : la carte est rouge. Partition par couleur : sachant cœur, rouge avec probabilité 1 ; sachant carreau, 1 ; trèfle, 0 ; pique, 0 ; chaque couleur pèse ¼. P(rouge) = 1·¼ + 1·¼ + 0·¼ + 0·¼ = ½. « Pas une façon utile de le calculer », dit-il, mais la partition la plus courante, B et Bᶜ, sert partout. Un test est positif chez 90 % des malades et 5 % des sains, et 1 % des gens sont malades : P(+) = 0,9 × 0,01 + 0,05 × 0,99 = 0,0585. Les sains fournissent 5,5 fois plus de positifs que les malades.
Ω est le carré d'aire 1, coupé en bandes verticales : la largeur d'une bande est P(Bi), la hauteur colorée P(A ∣ Bi). Chaque aire colorée vaut donc P(A ∣ Bi) P(Bi), et P(A) est leur somme. Cartes : deux bandes pleines sur quatre, ½. Dépistage à 1 % : la bande des malades est un fil presque plein (0,009), celle des sains une bande large et basse (0,0495), qui fait l'essentiel des positifs. À 10 % de malades : 0,09 et 0,045.
- Les Bi sont disjoints (Bi ∩ Bj = ∅ pour i ≠ j) : aucun morceau de A n'est compté deux fois.
- Leur union est Ω : aucun morceau de A n'est oublié.
- P(Bi) > 0, pour que P(A ∣ Bi) soit défini ; un morceau de probabilité nulle se retire de la somme.
- La formule vaut aussi pour une partition en une infinité dénombrable de morceaux.
- Lecture : P(A) est la moyenne des P(A ∣ Bi), pondérée par les P(Bi).
Exemples simples cartes, un dé, dépistage, drogue, un classifieur
- Carte rouge par les quatre couleurs : ½.
- Un dé, avec la partition de Brunton, B = « j'ai fait 1 » et Bᶜ. A = « pair ». P(A ∣ B) = 0 ; sachant Bᶜ, il reste 2, 3, 4, 5, 6, dont trois pairs : 3/5. P(A) = 0 × 1/6 + 3/5 × 5/6 = ½.
- Dépistage (90 % de détection, 5 % de faux positifs). À 1 % de malades : 0,009 + 0,0495 = 0,0585. À 10 % : 0,09 + 0,045 = 0,135.
- Le cancer de Brunton (10), test à 99 %, 0,1 % de malades : P(+) = 0,99 × 0,001 + 0,01 × 0,999 = 0,00099 + 0,00999 = 0,01098. Dix fois plus de positifs viennent des sains.
- La drogue de Brunton (11), 10 % d'usagers. Test à 90 % dans les deux sens : 0,9 × 0,1 + 0,1 × 0,9 = 0,18. Spécificité ramenée à 0,8 : 0,9 × 0,1 + 0,2 × 0,9 = 0,27.
- En ML, l'erreur globale d'un classifieur. Il se trompe sur 2 % de la classe majoritaire (95 % des données) et 30 % de la minoritaire (5 %). Erreur globale : 0,02 × 0,95 + 0,30 × 0,05 = 0,019 + 0,015 = 0,034. La moyenne non pondérée des deux taux, 0,16, est l'erreur qu'on aurait sur une population à 50/50 (la « balanced error »), pas sur celle-ci.
Preuve découper A, additionner, multiplier
Où ça casse
- Des morceaux qui se chevauchent. « Rouge » et « cœur » ne forment pas une partition : le cœur serait compté deux fois.
- Un morceau oublié. Sans le recouvrement, la somme est trop petite. Avec B et Bᶜ, rien ne peut manquer : c'est pour ça que cette partition est la plus utilisée.
- Moyenner sans pondérer. Faire la moyenne simple des P(A ∣ Bi) revient à supposer des morceaux de même poids (exemple 6).
Si B1, …, Bn partitionnent Ω, P(A) = Σ P(A ∣ Bi) P(Bi) : la probabilité de A est la moyenne de ses probabilités conditionnelles, pondérée par le poids de chaque morceau.
Bayes : a priori, vraisemblance, a posteriori outil
Brunton 10 · Bayes' Theorem with Example
Brunton part d'une asymétrie. On sait mesurer P(+ ∣ malade) : on teste des malades connus. Ce qu'on veut, c'est P(malade ∣ +), la cause, chère ou invasive à observer, sachant le symptôme, facile à observer. C'est un problème inverse. Bayes l'inverse en se servant de ce qu'on savait avant le test : l'a priori (prior).
Son exemple : un test « fiable à 99 % » pour un cancer qui touche 1 personne sur 1 000. Sur 100 000 personnes : 100 malades, dont 99 positifs ; 99 900 sains, dont 1 % de faux positifs, soit 999. Parmi les 1 098 positifs, 99 sont malades : P(malade ∣ +) = 9,0 %. « C'est fou », dit-il : 91 % des positifs sont sains. La maladie est rare, les sains sont si nombreux que leur petit taux d'erreur l'emporte.
Seuls les positifs sont dessinés, un carré par personne : en bleu les malades détectés, en rouge les sains mal classés. Cancer (Brunton 10 ; ici sur 100 000 testés) : 99 carrés bleus contre 999 rouges, 9,0 %. Drogue, test à 90 % (Brunton 11 ; ici sur 1 000 employés, 10 % d'usagers) : 90 contre 90, 50 %. Drogue, spécificité 0,8 : 90 contre 180, un tiers. Chaque clic rejoue l'arrivée des deux vagues de positifs.
- P(B), l'a priori (prior) : ce qu'on croit avant l'observation ; ici la prévalence.
- P(A ∣ B), la vraisemblance (likelihood) : à quel point la cause B rend l'observation A probable.
- P(A), la constante de normalisation (l'évidence) : la même pour toutes les causes, calculée par les probabilités totales (notion 3).
- P(B ∣ A), l'a posteriori (posterior) : la croyance après l'observation. Comme le dénominateur est commun, a posteriori ∝ vraisemblance × a priori.
- Hypothèses : P(A) > 0 ; pour la troisième ligne, B1, …, Bn partitionnent Ω.
- Tout est ici un événement, la barre est juste. Quand la cause est un paramètre fixe θ, sa vraisemblance s'écrit L(θ) = p(x ; θ) ; écrire p(θ ∣ x) suppose qu'on a mis une loi sur θ (p02-03).
Barre du haut : la population, coupée en malades (bleu) et sains (violet), largeurs en racine carrée des effectifs, sinon les malades disparaissent. Barres du bas : les positifs et les négatifs, chacun coupé en vrais et faux, cette fois à l'échelle linéaire : la part bleue de la barre des positifs est P(malade ∣ +), la valeur prédictive positive (VPP). Au départ, le cancer de Brunton : 99 vrais positifs contre 999 faux, 9,0 %. Choisis consultation · 10 %, puis baisse la prévalence : la part bleue fond alors que sensibilité et spécificité n'ont pas bougé. Regarde le rapport des vrais aux faux positifs, pas les pourcentages du test.
Exemples simples cancer, drogue, dépistage, l'étude de 08, un filtre anti-spam
- Le cancer de Brunton (10). (0,99 × 0,001) / (0,99 × 0,001 + 0,01 × 0,999) = 0,00099 / 0,01098 = 0,0902. En effectifs : 99/(99 + 999).
- La drogue de Brunton (11), test « fiable à 90 % » (sensibilité = spécificité = 0,9), 10 % d'usagers : 0,09 / (0,09 + 0,09) = 0,5. Sur 1 000 employés : 100 usagers dont 90 positifs, 900 non-usagers dont 90 positifs.
- Même test, spécificité 0,8 : 0,09 / (0,09 + 0,18) = 1/3. « Vraiment très mauvais », dit Brunton.
- Le dépistage de p00-03 : 1 % de malades, sensibilité 0,90, spécificité 0,95. Sur 100 000 personnes :
P(M ∣ +) = 900/5 850 = 2/13 = 0,154. Le test a multiplié la croyance par 15,4 (de 1 % à 15,4 %), et elle reste loin de 50 %. À 10 % de malades, même test : 9 000 contre 4 500, 2/3.test + test − total malade 900 100 1 000 sain 4 950 94 050 99 000 total 5 850 94 150 100 000 - Le test de la vidéo 08 (sensibilité 0,9, spécificité 0,8) déployé sur une population à 1 % de malades : 0,009 / (0,009 + 0,198) = 0,0435. Loin des 0,818 de l'échantillon à 50/50 (notion 1).
- En ML, un filtre anti-spam bayésien. 20 % des mails sont des spams ; le mot « gratuit » apparaît dans 40 % des spams et 2 % des autres. P(spam ∣ gratuit) = 0,4 × 0,2 / (0,4 × 0,2 + 0,02 × 0,8) = 0,08 / 0,096 = 0,833. Chaque mot observé est un test ; en combiner plusieurs est la notion 5.
Preuve l'intersection écrite dans les deux sens
Sur une partition B1, …, Bn, la même chose avec la somme au dénominateur donne le niveau « avancé ». « Un corollaire trivial de la définition », dit Brunton, et il a raison : rien d'autre que la notion 1 deux fois.
Simuler en Python un million de dépistages, puis ne garder que les positifs
import numpy as np
rng = np.random.default_rng(1)
n = 1_000_000
sick = rng.random(n) < 0.001 # prior: 1 person in 1,000
u = rng.random(n)
positive = np.where(sick, u < 0.99, u < 0.01) # sensitivity 0.99, false positives 1 %
print("people tested :", n)
print("sick :", sick.sum())
print("positive tests :", positive.sum())
print("sick and positive :", (sick & positive).sum())
print(f"P(sick | +), sim. : {sick[positive].mean():.4f}") # zoom on the positives
exact = 0.99 * 0.001 / (0.99 * 0.001 + 0.01 * 0.999)
print(f"P(sick | +), Bayes: {exact:.4f}")
people tested : 1000000 sick : 991 positive tests : 11100 sick and positive : 984 P(sick | +), sim. : 0.0886 P(sick | +), Bayes: 0.0902
Où ça casse
- Oublier l'a priori (base rate neglect) : répondre 99 % parce que le test est à 99 %. C'est prendre P(+ ∣ malade) pour P(malade ∣ +) (notion 1).
- Le sophisme du procureur. « Une trace ADN pareille chez un innocent, c'est une chance sur un million », donc « une chance sur un million qu'il soit innocent » : c'est encore P(trace ∣ innocent) pris pour P(innocent ∣ trace). Même erreur que « la p-value est la probabilité que H0 soit vraie » : une p-value se calcule sous H0, P(données au moins aussi extrêmes ; H0) (p01-02).
- Un a priori tiré d'un échantillon construit. L'étude cas-témoins de la vidéo 08 a 50 % de malades par construction ; son 0,818 ne vaut pas en population (exemple 5).
Pour P(A) > 0, P(B ∣ A) = P(A ∣ B) P(B) / P(A) : l'a posteriori est proportionnel à vraisemblance × a priori. Test à 99 % (sensibilité = spécificité = 0,99), maladie à 0,1 % : 9 % de malades parmi les positifs.
En effectifs et en cotes ; deux tests successifs outil
Brunton 10 et 11 · Drug Testing
Après un positif à 9 %, Brunton conseille un second test, plus précis. Que vaut un second positif si ce test a les mêmes taux et des erreurs indépendantes du premier ? Les effectifs le disent sans formule. Sur 10 000 000 personnes : 10 000 malades, 9 990 000 sains. Après un premier positif restent 9 900 malades et 99 900 sains, 9,0 % de malades. Après un second : 9 801 malades et 999 sains, 90,75 %.
La cote fait le même calcul en une multiplication. La cote d'un événement est P/(1 − P) : 1 contre 999 pour la maladie. Un positif est 99 fois plus probable chez un malade (0,99) que chez un sain (0,01) : ce 99 est le rapport de vraisemblance du test. Cote après le test = cote avant × 99, soit 99 contre 999. Un second test indépendant multiplie encore par 99 : « l'a posteriori d'une expérience devient l'a priori de la suivante », dit Brunton (10). Le test est un multiplicateur, la population fournit le point de départ.
Chaque barre a la même longueur : c'est la population qui reste, coupée en malades (bleu) et sains (violet). Au-dessus de chaque barre les effectifs, en bout de barre la cote et P(malade). Cancer : 0,1 % de malades avant le test, 9,0 % après un positif, 90,75 % après deux ; la cote passe de 1:999 à 99:999 puis 9 801:999. Drogue, test à 90 % : 10 %, 50 %, 90 %. Drogue, spécificité 0,8 : 10 %, 33 %, 69 %. ▶ rejouer fait passer les tests un par un.
- « 1 contre 999 » : un malade pour 999 sains, donc P = 1/1 000.
- On écrit Bayes pour B et pour Bᶜ, puis on divise : le dénominateur P(A), le même des deux côtés, disparaît. La forme en cotes n'en a pas besoin.
- LR > 1 fait monter la cote, LR < 1 la fait baisser, LR = 1 ne change rien : le test est alors indépendant de la maladie (notion 7). Repères d'usage : LR > 10 déplace fortement la cote, LR entre 2 et 5 un peu, LR = 1 pas du tout.
- Deux tests : cote × LR1 × LR2, si les deux résultats sont indépendants sachant l'état, chez les malades comme chez les sains. Ils ne sont pas indépendants tout court : un premier positif rend le second plus probable, parce qu'il rend la maladie plus probable.
- Indépendants sachant l'état : P(T1+ ∩ T2+ ∣ B) = P(T1+ ∣ B) P(T2+ ∣ B), et de même sachant Bᶜ. C'est l'indépendance de la notion 7, appliquée à la probabilité P(· ∣ B).
- La relation entre cote et probabilité n'est pas linéaire : doubler la cote ne double p que quand p est petit (figure 4).
Une règle graduée en cotes, en échelle log. Le point du haut est la cote a priori (la population), la flèche verte la multiplication par le LR (le test), le point du bas la cote a posteriori. Au départ, le cancer de Brunton : 1:999 × 99 = 99:999 ≈ 1:10,1, soit 9,0 %. Déplace le LR : la flèche penche toujours de la même quantité pour un même LR, où qu'on parte ; c'est ce que veut dire « multiplicateur ». Déplace la prévalence : la flèche garde son inclinaison et glisse. À LR = 1 elle devient verticale, et le test n'apprend rien.
En abscisse la probabilité de départ p, en ordonnée la probabilité après avoir multiplié la cote par k. La courbe bleue est la vraie réponse, kp / (1 + (k − 1)p) ; le trait pointillé rouge, kp, est la fausse intuition « la probabilité est multipliée par k ». Les deux se confondent près de 0 et s'écartent ensuite. Avec k = 2 : 0,01 devient 0,0198, mais 0,5 devient 0,667 et 0,9 devient 0,947. Règle k, puis promène p.
Exemples simples cancer, drogue, dépistage, spam, la table cote → p
- Le cancer de Brunton. LR+ = 0,99/0,01 = 99. 1:999 × 99 = 99:999, p = 99/1 098 = 0,090. Second test : 9 801:999, p = 9 801/10 800 = 0,9075. Troisième : 0,999.
- La drogue, test à 90 %. LR+ = 0,9/0,1 = 9. 1:9 → 1:1 (0,5) → 9:1 (0,9).
- La drogue, spécificité 0,8. LR+ = 0,9/0,2 = 4,5. 1:9 → 4,5:9 = 1:2 (1/3) → 2,25:1 (0,692).
- Le dépistage de p00-03 (1 %, 0,90, 0,95). LR+ = 0,90/0,05 = 18 ; 1:99 × 18 = 18:99, p = 18/117 = 0,154. Un négatif : LR− = 0,10/0,95 = 0,105 ; 1:99 × 0,105 = 1:940,5, P(M ∣ −) = 0,00106. À faible prévalence, un négatif exclut presque la maladie (0,1 %) ; un positif ne l'établit pas (15 %), bien que son LR soit le plus fort (18, contre 1/0,105 = 9,5 pour le négatif).
- En ML, le filtre anti-spam de la notion 4, avec deux mots. Cote a priori 1:4 (20 % de spams). « gratuit » : LR = 0,40/0,02 = 20. « offre », présent dans 30 % des spams et 5 % des autres : LR = 6. Si les mots sont indépendants sachant la classe : 1:4 × 20 × 6 = 30:1, p = 30/31 = 0,968. C'est le classifieur Naive Bayes.
- La table cote → p, quand la cote double. La nouvelle probabilité est 2p/(1 + p), donc le facteur sur p est 2/(1 + p) : presque 2 en bas, 1,33 au milieu, presque 1 en haut.
p cote cote × 2 nouvelle p p multipliée par 0,01 0,0101 0,0202 0,0198 1,98 0,05 0,0526 0,105 0,0952 1,90 0,10 0,111 0,222 0,182 1,82 0,20 0,25 0,5 0,333 1,67 0,50 1 2 0,667 1,33 0,90 9 18 0,947 1,05
Simuler en Python un second test indépendant, contre le même test répété
import numpy as np
rng = np.random.default_rng(2)
n = 4_000_000
# about 4,000 sick people: the simulated values carry about +-0.01 of noise
sick = rng.random(n) < 0.001
def test(u): # sensitivity 0.99, false-positive rate 0.01
return np.where(sick, u < 0.99, u < 0.01)
u1 = rng.random(n)
t1 = test(u1)
t2_new = test(rng.random(n)) # fresh draw: independent given the status
t2_same = test(u1) # same draw: repeats the first test's error
print(f"after one + : P(sick) = {sick[t1].mean():.3f}")
print(f"two independent tests +: P(sick) = {sick[t1 & t2_new].mean():.3f}")
print(f"same test twice + : P(sick) = {sick[t1 & t2_same].mean():.3f}")
odds = (0.001 / 0.999) * 99 * 99 # prior odds times LR, twice
print(f"odds 1:999 x 99 x 99 : P(sick) = {odds / (1 + odds):.3f}")
print(f"P(second + | first +) = {t2_new[t1].mean():.3f}")
print(f"P(second +) = {t2_new.mean():.3f}")
after one + : P(sick) = 0.089 two independent tests +: P(sick) = 0.901 same test twice + : P(sick) = 0.089 odds 1:999 x 99 x 99 : P(sick) = 0.907 P(second + | first +) = 0.098 P(second +) = 0.011
Où ça casse
- Refaire le même test n'est pas un second test indépendant : même réactif, même seuil, même patient atypique. Les erreurs sont corrélées et les LR ne se multiplient pas. À l'extrême, un test qui répète exactement son erreur n'apprend rien : 9 % reste 9 % (code ci-dessus).
- Les deux résultats ne sont pas indépendants tout court. Dans l'exemple du cancer, P(second + ∣ premier +) = 0,098 alors que P(second +) = 0,011. L'hypothèse qui sert est l'indépendance sachant l'état.
- « La cote double, donc la probabilité double » est faux. p devient 2p/(1 + p) : × 1,98 à 1 %, × 1,33 à 50 % (0,5 → 0,667), × 1,05 à 90 %. C'est le piège de la régression logistique, où eβ multiplie une cote, jamais une probabilité (p05-02).
- Cote et probabilité. « 1 contre 9 » vaut 1/10 = 10 %, pas 1/9.
- Ce qui voyage et ce qui ne voyage pas. Le LR ne dépend que de la sensibilité et de la spécificité : il se transporte d'une population à l'autre. La cote a priori, non.
Cote a posteriori = cote a priori × LR, avec LR+ = sensibilité/(1 − spécificité) pour un test positif ; deux tests indépendants sachant l'état multiplient leurs LR.
Sensibilité, spécificité, précision : la précision dépend de la prévalence outil
Brunton 11
Brunton donne enfin leurs noms aux deux taux du test. La sensibilité est P(+ ∣ usager) : à quel point le test réagit à ce qu'il cherche, 0,9 dans son exemple. La spécificité est P(− ∣ non-usager) : à quel point il se tait quand il n'y a rien, 0,8. Il faut les deux : un test qui répond toujours « positif » a 100 % de sensibilité et n'apprend rien.
Il ajoute la remarque ML : sur des données où l'événement est rare, « je peux avoir 99,9 % de taux de bonnes réponses (accuracy) en ne prédisant jamais qu'il arrive ». Le nombre qui intéresse celui qui reçoit un positif, la précision P(cas ∣ +), dépend en plus de la prévalence. Pour le test du dépistage (sensibilité 0,9 et spécificité 0,95), elle vaut 0,667 quand 10 % des gens sont malades, et 0,154 quand 1 % le sont.
Le tableau croise l'état (lignes) et le test (colonnes), sur 10 000 personnes. Choisis une métrique : les cases de son numérateur se remplissent, celles de son dénominateur s'entourent. Le rappel et la spécificité restent dans une ligne ; la précision prend la colonne des positifs, qui traverse les deux lignes. Passe de 10 % à 1 % de malades : rappel 0,90 et spécificité 0,95 ne bougent pas, la précision tombe de 0,667 à 0,154. Les tests absurdes : toujours + a un rappel de 1 et une précision égale à la prévalence ; toujours − a 99 % d'accuracy à 1 % de malades.
- TP, FN, FP, TN : vrais positifs, faux négatifs, faux positifs, vrais négatifs. TPR, TNR, FPR : taux de vrais positifs, de vrais négatifs, de faux positifs (true positive rate…). VPP et VPN : valeurs prédictives positive, P(M ∣ +), et négative, P(Mᶜ ∣ −). s la sensibilité, t la spécificité, π = P(M) la prévalence.
- s et t sont supposées propres au test, stables d'une population à l'autre. C'est une idéalisation : elle isole ce qui voyage.
- π est propre à la population testée : dépistage de masse, consultation, urgences. Rien dans le test ne la contient.
- La précision est l'a posteriori de Bayes (notion 4). Son dénominateur TP + FP mélange les deux lignes du tableau, d'où le π dans la formule.
- L'accuracy est une moyenne de s et t pondérée par π (notion 3) : quand π est petit, elle ne regarde presque que la spécificité.
Sensibilité fixée à 0,90 ; seule la spécificité bouge. La courbe violette est le test de référence (spécificité 0,95), la bleue suit le curseur. Axe des prévalences en log, de 0,1 % à 50 %, avec deux repères à 1 % et 10 %. À prévalence faible la courbe est écrasée contre zéro, et c'est la spécificité seule qui décide, parce qu'elle s'applique au gros effectif des sains. Monte-la jusqu'à 0,999 : la courbe décolle, et la précision à 1 % passe de 15 % à 90 %.
Exemples simples même test, deux populations ; les tests absurdes ; un modèle de fraude
- Même test (sensibilité 0,90, spécificité 0,95), deux prévalences, sur 100 000 personnes :
Les deux premières lignes ne bougent pas ; les quatre autres bougent.métrique formule 1 % 10 % rappel (sensibilité) TP/(TP + FN) 0,900 0,900 FPR (1 − spécificité) FP/(FP + TN) 0,050 0,050 précision (VPP) TP/(TP + FP) 0,154 0,667 F1 2 · préc · rapp / (préc + rapp) 0,263 0,766 VPN TN/(TN + FN) 0,999 0,988 accuracy (TP + TN)/N 0,9495 0,945 - La drogue de Brunton, sensibilité 0,9, spécificité 0,8, 10 % d'usagers : précision 1/3, accuracy 0,1 × 0,9 + 0,9 × 0,8 = 0,81.
- Le test toujours positif : rappel 1, spécificité 0, précision égale à la prévalence (10 % chez Brunton).
- Le test toujours négatif : accuracy 1 − π, soit 0,99 à 1 % de malades et 0,999 à 0,1 %, les « 99,9 % » de Brunton ; rappel 0.
- La bascule. La précision vaut ½ quand vrais et faux positifs s'égalent : π = (1 − t)/(s + 1 − t) = 0,05/0,95 = 1/19 = 5,26 % pour le test de référence.
- En ML, un modèle de fraude de rappel 0,90 et FPR 0,05, évalué sur un jeu équilibré 50/50 : précision 0,947. En production, avec 1 % de fraudes : 0,154. Le modèle n'a pas changé ; 85 % des alertes sont fausses.
Simuler en Python le même classifieur sur trois populations
import numpy as np
rng = np.random.default_rng(3)
n = 1_000_000
tpr, fpr = 0.90, 0.05 # the classifier: same error rates everywhere
for prev in (0.50, 0.10, 0.01):
y = rng.random(n) < prev # true labels, at this prevalence
u = rng.random(n)
pred = np.where(y, u < tpr, u < fpr) # predicted positive
tp, fp = (pred & y).sum(), (pred & ~y).sum()
fn, tn = (~pred & y).sum(), (~pred & ~y).sum()
print(f"prevalence {prev:.2f}: recall {tp / (tp + fn):.3f} FPR {fp / (fp + tn):.3f} "
f"precision {tp / (tp + fp):.3f} accuracy {(tp + tn) / n:.3f}")
prevalence 0.50: recall 0.900 FPR 0.049 precision 0.948 accuracy 0.925 prevalence 0.10: recall 0.900 FPR 0.050 precision 0.665 accuracy 0.945 prevalence 0.01: recall 0.898 FPR 0.050 precision 0.152 accuracy 0.949
Où ça casse
- La prévalence importée. Un test étalonné aux urgences (30 % de malades, précision 0,885) et déployé en dépistage (1 %) voit sa précision tomber à 0,154, sans que sensibilité ni spécificité aient bougé. Même piège pour un modèle évalué sur un jeu de validation plus riche en positifs que la production.
- La sensibilité ne compense pas la prévalence. Même à sensibilité 1, le dépistage à 1 % (spécificité 0,95, sur 100 000) donne 1 000 vrais positifs contre 4 950 faux : précision 0,168 au mieux. C'est la spécificité qui décide (figure 5).
- L'accuracy en déséquilibre. À 1 % de malades, le test de référence fait 0,9495 et le test toujours négatif 0,99 : l'accuracy préfère le test inutile.
- ROC contre PR. La courbe ROC trace le rappel contre le FPR, deux taux lus chacun dans une ligne : elle ne dépend pas de la prévalence. La courbe PR contient la précision : elle en dépend. En fort déséquilibre, c'est la PR qui montre le problème (p06-03).
- Rééchantillonner à 50/50 pour entraîner change la prévalence que le modèle voit : ses probabilités sont alors celles d'un monde à 50 % de positifs (p06-04).
- s et t ne sont pas parfaitement stables. Un test détecte souvent mieux les cas avancés : sa sensibilité varie un peu avec la population. L'hypothèse reste la bonne approximation de départ.
Pour un même test, la précision P(M ∣ +) dépend de la prévalence, parce que son dénominateur mélange malades et sains : 0,667 à 10 %, 0,154 à 1 %. Le rappel et le FPR, lus dans une seule ligne, n'en dépendent pas.
L'indépendance ; disjoint n'est pas indépendant outil
Brunton 12 · Independence in Probability
Deux événements sont indépendants quand savoir que l'un est arrivé ne change rien à la probabilité de l'autre : P(A ∣ B) = P(A). Brunton dessine le paquet de 52 cartes en grille, 4 couleurs sur 13 valeurs. Les piques sont une ligne, les dames une colonne ; elles se croisent en une seule case, la dame de pique.
Restreint aux piques, on a toujours 1 chance sur 13 d'avoir une dame ; restreint aux dames, 1 sur 4 d'avoir un pique. Rien n'a bougé, et la dame de pique a pour probabilité le produit, 1/4 × 1/13 = 1/52. À l'inverse, pique et cœur ne se croisent pas du tout : ils sont disjoints. Savoir « cœur » rend le pique impossible, sa probabilité passe de 1/4 à 0. Disjoints, ils sont aussi dépendants qu'on peut l'être.
A = « pique », la ligne du bas, est fixé ; choisis B. Les cases hors de B s'estompent, A ∩ B reste en couleur. Dame : une case sur 4 dans B, P(A ∣ B) = 1/4 = P(A), indépendants. Trois (la paire d'ouverture de Brunton) et figure : pareil. Noire : 13 cases sur 26, P(A ∣ B) = 1/2, dépendants. Cœur : aucune case commune, P(A ∩ B) = 0 au lieu de P(A)P(B) = 1/16, et P(A ∣ B) = 0 ; disjoints, donc dépendants.
- La forme produit est la définition : symétrique en A et B, elle a un sens même si P(B) = 0 (un événement de probabilité nulle est indépendant de tout).
- La forme conditionnelle est l'intuition : savoir B n'apprend rien sur A, et de même P(B ∣ A) = P(B) si P(A) > 0.
- Si A et B sont indépendants, Aᶜ et B, A et Bᶜ, Aᶜ et Bᶜ le sont aussi (preuve dépliable).
- Disjoints avec P(A) > 0 et P(B) > 0 : P(A ∩ B) = 0 < P(A) P(B), donc dépendants.
- L'indépendance est une propriété de la loi P, pas des ensembles : les mêmes événements peuvent être indépendants sous une loi et pas sous une autre.
- Pour des variables aléatoires, la même idée devient la factorisation de la loi jointe (l07, notion 4).
Exemples simples cartes, deux dés, des pièces
- Dame de pique : 1/52 = 1/4 × 1/13, indépendants.
- Pique et trois, la paire par laquelle Brunton ouvre la vidéo 08 : 1/52 = 1/4 × 1/13. Savoir que c'est un trois ne dit rien de la couleur.
- Pique et figure (valet, dame, roi) : 3/52 = 1/4 × 12/52, indépendants.
- Pique et noire : P(pique ∩ noire) = P(pique) = 1/4, mais 1/4 × 1/2 = 1/8. Dépendants : P(pique ∣ noire) = 1/2.
- Pique et cœur : 0 au lieu de 1/4 × 1/4 = 1/16. Disjoints, donc dépendants.
- Deux dés, A = « premier dé = 3 ». Avec « second dé = 5 » : 1/36 = 1/6 × 1/6, indépendants. Avec « somme = 6 » : 1/36 au lieu de 1/6 × 5/36 = 5/216, dépendants (P(A ∣ somme = 6) = 1/5, notion 1). Avec « somme = 7 » : 1/36 = 1/6 × 6/36, indépendants. Quel que soit le premier dé, exactement un second donne 7 : la somme 7 ne renseigne pas sur le premier dé.
- Des pièces : les lancers successifs d'une pièce sont modélisés indépendants, P(face, face) = ¼. C'est l'hypothèse qui donnera la binomiale (l04, notion 4).
Preuve les deux définitions, le complément, disjoint ⇒ dépendant
Simuler en Python les 36 issues, comptées exactement
from fractions import Fraction
from itertools import product
omega = list(product(range(1, 7), repeat=2)) # the 36 equally likely pairs
def P(event):
return Fraction(sum(1 for w in omega if event(w)), len(omega))
A = lambda w: w[0] == 3 # first die shows 3
for name, B in [("second = 5", lambda w: w[1] == 5),
("sum = 6", lambda w: w[0] + w[1] == 6),
("sum = 7", lambda w: w[0] + w[1] == 7)]:
p_ab = P(lambda w: A(w) and B(w))
prod = P(A) * P(B)
verdict = "independent" if p_ab == prod else "dependent"
print(f"{name:10s} P(A and B) = {str(p_ab):5s} P(A)P(B) = {str(prod):6s} {verdict}")
second = 5 P(A and B) = 1/36 P(A)P(B) = 1/36 independent sum = 6 P(A and B) = 1/36 P(A)P(B) = 5/216 dependent sum = 7 P(A and B) = 1/36 P(A)P(B) = 1/36 independent
Où ça casse
- Disjoint n'est pas indépendant. C'est même l'inverse : deux événements disjoints de probabilités non nulles s'excluent, donc chacun renseigne totalement sur l'autre.
- L'indépendance dépend de P. Retire la dame de cœur du paquet : il reste 51 cartes, P(dame) = 3/51, P(pique) = 13/51, P(dame de pique) = 1/51 = 0,0196, alors que le produit vaut 39/2 601 = 0,0150. Pique et dame ne sont plus indépendants.
- Une covariance nulle n'est pas l'indépendance, pour des variables aléatoires (l09, notion 3).
- L'indépendance est une hypothèse à justifier. « En un sens, une conséquence de la physique », dit Brunton : des disques sur la même prise ne tombent pas en panne indépendamment (notion 8).
- Pas d'indépendance, pas de produit. La vraisemblance d'un échantillon ne s'écrit comme un produit que si les observations sont indépendantes (p02-01).
A et B sont indépendants si P(A ∩ B) = P(A) P(B), ce qui revient à P(A ∣ B) = P(A) quand P(B) > 0 : savoir B ne change rien sur A.
Systèmes en série et en parallèle ; la cause commune outil
Brunton 12
Brunton applique l'indépendance à la fiabilité. En série, comme une guirlande de Noël, une seule panne coupe tout. Compter « exactement une panne, exactement deux… » mène au double compte, comme dans le problème des anniversaires ; il passe par le complément : le système marche seulement si les n composants marchent, (1 − p)n par indépendance. Avec 10 composants à 5 % de panne : 0,9510 = 0,599, le système tombe 4 fois sur 10.
En parallèle, on contourne une panne ; le système ne tombe que si tout tombe : 0,0510 ≈ 10−13. Trois disques durs à 1 % : un risque sur un million. Mais si le parasurtenseur lâche ou si la foudre tombe, les trois disques meurent ensemble. L'indépendance est une hypothèse physique, et une cause commune la casse.
n composants, chacun en panne avec probabilité p = 0,05, indépendamment. Une panne est une croix rouge ; le courant passe de gauche à droite tant qu'un chemin existe. Série, n = 10 : P(panne) = 0,401. Parallèle, n = 10 : 9,8 × 10−14. ▶ 1 000 systèmes en tire mille : en série environ 400 tombent, en parallèle aucun. Active la cause commune (une surtension, 1 fois sur 1 000, qui tue tout) : le bouton tire alors 20 000 systèmes, et la parallèle en voit tomber une vingtaine, environ une fois sur mille, quel que soit n.
- Hypothèse : les n pannes sont mutuellement indépendantes, ce qui demande plus que l'indépendance de chaque paire (notion 9). C'est elle qui permet de multiplier n probabilités.
- Série : le complément (l02, notion 2) évite de compter une panne, deux pannes, et ainsi de suite, comme pour les anniversaires (l02, notion 4).
- Cause commune : un choc de probabilité q, indépendant des pannes propres, qui met tous les composants hors service d'un coup. La redondance ne protège pas contre lui.
P(panne) en fonction du nombre n de composants, en échelle log, pour p = 0,05. En série (rouge), la panne monte vers 1 : 0,401 à n = 10. En parallèle (bleu), elle est divisée par 20 à chaque composant ajouté, jusqu'à 9,8 × 10−14. Avec une cause commune de probabilité q = 10−3 (violet), la parallèle s'écrase sur le plancher q : à n = 4 elle n'est plus qu'à 0,6 % au-dessus. Règle q et p : le plancher suit q, pas n.
Exemples simples la guirlande, deux composants, les disques, un agent LLM
- Brunton, n = 10, p = 0,05. Série : 0,9510 = 0,5987 de marche, 0,4013 de panne. Parallèle : 0,0510 = 9,8 × 10−14, « à peu près 10−13 ».
- Deux composants à 5 % : série 1 − 0,95² = 0,0975 ; parallèle 0,05² = 0,0025.
- Les disques de Brunton : trois à 1 % en parallèle, 0,01³ = 10−6. Avec une surtension commune de probabilité 10−3 : 10−3 + (1 − 10−3) × 10−6 = 1,001 × 10−3, mille fois plus.
- Cent composants à 1 % en série : 1 − 0,99100 = 0,634. Des pièces fiables, une chaîne qui ne l'est pas.
- En ML, un agent LLM qui enchaîne 10 étapes (appel d'outil, extraction, génération…), chacune réussie à 95 % et indépendamment des autres : il réussit de bout en bout avec probabilité 0,9510 = 0,599 ; avec 20 étapes, 0,358. C'est un système en série.
Simuler en Python quatre millions de paires de disques, avec et sans surtension
import numpy as np
rng = np.random.default_rng(4)
m, n, p, q = 4_000_000, 2, 0.01, 0.001 # systems, disks, failure prob., surge prob.
# about 400 parallel failures expected: the simulated rates carry about 5 % of noise
fail = rng.random((m, n)) < p # each disk fails on its own, independently
surge = rng.random(m) < q # a common shock that kills every disk at once
series = fail.any(axis=1) # one failure is enough
parallel = fail.all(axis=1) # every disk must fail
parallel_cc = parallel | surge
print(f"series : {series.mean():.6f} exact {1 - (1 - p)**n:.6f}")
print(f"parallel : {parallel.mean():.6f} exact {p**n:.6f}")
print(f"parallel + surge : {parallel_cc.mean():.6f} exact {q + (1 - q) * p**n:.6f}")
series : 0.019916 exact 0.019900 parallel : 0.000093 exact 0.000100 parallel + surge : 0.001114 exact 0.001100
Où ça casse
- La cause commune. Même prise, même lot de fabrication, même foudre : les pannes ne sont plus indépendantes, et la parallèle ne descend jamais sous la probabilité du choc commun.
- Des composants différents. pⁿ suppose le même p partout ; sinon on multiplie les pi un par un.
- Le basculement fait partie du système. Si l'organe qui passe sur le secours peut lui-même tomber en panne, il est en série avec le bloc parallèle.
- Un ensemble de modèles n'est redondant que si leurs erreurs le sont peu. Un vote majoritaire réduit l'erreur quand les modèles se trompent indépendamment ; entraînés sur les mêmes données, ils se trompent souvent ensemble, une cause commune.
Pour n composants de panne p, aux pannes mutuellement indépendantes : en série P(panne) = 1 − (1 − p)n, en parallèle pn. Une cause commune de probabilité q fixe à la parallèle un plancher q.
Indépendance deux à deux contre mutuelle culture
Brunton 12 (non traité dans la vidéo)
Pour trois événements ou plus, vérifier chaque paire ne suffit pas. Lance deux pièces. A : la première tombe sur face. B : la seconde tombe sur face. C : les deux pièces tombent du même côté. Chacun a probabilité ½, et chaque paire est indépendante : A et C, par exemple, n'arrivent ensemble qu'en (face, face), ¼ = ½ × ½.
Mais A et B ensemble décident C : si les deux pièces sont sur face, elles sont du même côté. P(A ∩ B ∩ C) = ¼, pas ⅛. Savoir A seul ne dit rien de C, savoir B seul non plus ; savoir les deux dit tout. Les formules de la notion 8 multiplient n probabilités d'un coup : elles demandent l'indépendance mutuelle.
Les quatre issues de deux pièces, chacune de probabilité ¼, avec les événements qui les contiennent. Choisis une intersection : ses issues s'allument. A ∩ B, A ∩ C et B ∩ C ne contiennent que (face, face) : ¼ = ½ × ½ chaque fois. A ∩ B ∩ C aussi : ¼, alors que le produit vaut ⅛. Et C sachant A et B vaut 1.
- Deux à deux : seulement les sous-familles de deux indices.
- Pour n événements, 2n − n − 1 égalités : 4 pour trois événements (les trois paires et le triplet).
- Le produit du triplet seul ne suffit pas non plus (exemple 3).
- C'est la mutuelle que supposent pn (notion 8), la binomiale (l04, notion 4) et la vraisemblance d'un échantillon i.i.d.
Exemples simples deux pièces, deux dés, trois pièces
- Deux pièces, A, B, C comme dans l'idée : trois paires indépendantes, triplet à ¼ au lieu de ⅛.
- Deux dés : A = « premier dé pair », B = « second dé pair », C = « somme paire ». Chacun ½, chaque paire ¼ ; mais A ∩ B est contenu dans C, donc P(A ∩ B ∩ C) = ¼ ≠ ⅛.
- Le triplet sans les paires. Deux dés : A = « premier dé ∈ {1, 2, 3} », B = « premier dé ∈ {3, 4, 5} », C = « somme = 9 ». P(A ∩ B ∩ C) = P((3, 6)) = 1/36 = ½ × ½ × 1/9, et pourtant P(A ∩ B) = P(premier dé = 3) = 1/6 ≠ ¼.
- Trois pièces différentes, une face par événement : les quatre égalités sont vraies, l'indépendance est mutuelle.
Simuler en Python les quatre égalités, vérifiées une à une
from fractions import Fraction
from itertools import product, combinations
coins = list(product("HT", repeat=2)) # HH, HT, TH, TT, each 1/4
events = {"A": lambda w: w[0] == "H", # first coin heads
"B": lambda w: w[1] == "H", # second coin heads
"C": lambda w: w[0] == w[1]} # both coins agree
def P(event):
return Fraction(sum(1 for w in coins if event(w)), len(coins))
for k in (2, 3):
for names in combinations("ABC", k):
joint = P(lambda w: all(events[e](w) for e in names))
prod = Fraction(1)
for e in names:
prod *= P(events[e])
label = " and ".join(names)
verdict = "equal" if joint == prod else "NOT equal"
print(f"{label:13s} = {str(joint):4s} product = {str(prod):4s} {verdict}")
A and B = 1/4 product = 1/4 equal A and C = 1/4 product = 1/4 equal B and C = 1/4 product = 1/4 equal A and B and C = 1/4 product = 1/8 NOT equal
Où ça casse
- Les produits de n facteurs : pn d'un système parallèle, la binomiale, la vraisemblance comme produit. Avec seulement l'indépendance deux à deux, ils peuvent être faux.
- Naive Bayes suppose les mots mutuellement indépendants sachant la classe (notion 5). C'est faux en général (« Nouvelle » et « Calédonie »), et ses probabilités sont souvent trop proches de 0 ou de 1, même quand son classement reste bon.
- Tester les paires dans les données, deux variables à la fois, ne prouve pas l'indépendance mutuelle : l'exemple des deux pièces passe tous les tests de paires.
Deux à deux ne suffit pas : l'indépendance de n événements demande le produit pour toute sous-famille, et c'est elle que supposent pn et la binomiale ; Naive Bayes la suppose sachant la classe.
Résumé
- P(A ∣ B) = P(A ∩ B)/P(B) : on se restreint à B et on renormalise ; P(A ∣ B) ≠ P(B ∣ A).
- P(A ∩ B) = P(A ∣ B) P(B), toujours ; un chemin d'arbre vaut le produit de ses branches.
- Probabilités totales : P(A) = Σ P(A ∣ Bi) P(Bi) sur une partition.
- Bayes : a posteriori = vraisemblance × a priori / normalisation ; test à 99 %, maladie à 0,1 % : 9 %.
- En cotes : a posteriori = a priori × LR ; deux tests indépendants sachant l'état multiplient leurs LR ; doubler une cote ne double pas p.
- Rappel et FPR ne dépendent pas de la prévalence, la précision si.
- Indépendance ⇔ P(A ∩ B) = P(A) P(B) ; disjoint n'est pas indépendant.
- Série 1 − (1 − p)n, parallèle pn, sous indépendance mutuelle ; une cause commune fixe le plancher.
Chaîne verbalisée — une prise, à voix haute
- Que veut dire P(A ∣ B), en un geste ?Se restreindre aux issues de B et renormaliser : P(A ∩ B)/P(B). Seul le dénominateur choisit le sens.
- Test à 99 %, maladie à 0,1 % : que vaut P(malade ∣ +), en effectifs ?Sur 100 000 : 100 malades dont 99 positifs, 99 900 sains dont 999 positifs. 99/1 098 = 9 %.
- Refais-le en cotes, puis avec un second test indépendant sachant l'état.1:999 × 99 = 99:999, soit 9 % ; × 99 encore : 9 801:999, soit 90,75 %.
- La cote double : la probabilité double-t-elle ?Seulement si p est petit : p devient 2p/(1 + p). 0,01 → 0,0198, mais 0,5 → 0,667.
- Quelle métrique dépend de la prévalence, et pourquoi ?La précision : son dénominateur TP + FP mélange malades et sains. Le rappel et le FPR restent chacun dans une ligne. Même test : 0,667 à 10 %, 0,154 à 1 %.
- Deux événements disjoints sont-ils indépendants ?Jamais quand leurs probabilités sont non nulles : P(A ∩ B) = 0 < P(A) P(B). Savoir l'un exclut l'autre.
- Dix composants à 5 % de panne : série ou parallèle, et sous quelle hypothèse ?Série 0,401, parallèle 10−13, sous indépendance mutuelle des pannes. Une cause commune de probabilité q fixe un plancher : la parallèle ne descend jamais sous q.
Où ça sert ensuite
stats::conditionnement (notions 1, 2, 3) · stats::bayes (notions 4, 5) · stats::base-rate (notions 4, 6) · stats::independance (notions 7, 8 ; notion 9 sans carte) · ml::metriques (notion 6).
Une carte se fait depuis le « ce qu'on garde » d'une notion OUTIL, après ta lecture, dans tes mots.