Les statistiques inférentielles reposent sur les probabilités : elles permettent de quantifier l’incertitude. Commençons par les règles de base.
Événements et probabilités
Une probabilité est un nombre entre 0 (impossible) et 1 (certain). Si tous les résultats sont équiprobables : P(A) = nombre de cas favorables / nombre de cas possibles. Avec un dé, P(« pair ») = 3 / 6 = 0.5.
Règles essentielles :
- Complémentaire : P(non A) = 1 - P(A).
- Union : P(A ou B) = P(A) + P(B) - P(A et B). On retire l’intersection, sinon elle serait comptée deux fois.
Probabilité conditionnelle
P(A sachant B), notée P(A | B), est la probabilité de A quand on sait que B est réalisé : P(A | B) = P(A et B) / P(B).
Exemple sur 1 000 visiteurs d’un site :
import pandas as pd
# 1000 visiteurs : appareil x achat
tab = pd.DataFrame({"achat": [60, 40], "pas_achat": [340, 560]},
index=["mobile", "ordinateur"])
total = tab.values.sum() # 1000
p_achat = tab["achat"].sum() / total # 0.10
p_mobile = tab.loc["mobile"].sum() / total # 0.40
p_achat_et_mobile = tab.loc["mobile", "achat"] / total # 0.06
p_achat_sachant_mobile = p_achat_et_mobile / p_mobile # 0.15
Sachant qu’un visiteur est sur mobile, il achète avec une probabilité de 15 %, contre 10 % en général.
Indépendance
A et B sont indépendants si connaître B ne change rien à la probabilité de A : P(A | B) = P(A), ce qui équivaut à P(A et B) = P(A) x P(B). Ici, 0.15 est différent de 0.10 : achat et appareil ne sont pas indépendants.
Deux lancers de pièce sont indépendants : P(deux piles) = 0.5 x 0.5 = 0.25.
Le théorème de Bayes
Il permet d’inverser une probabilité conditionnelle : P(A | B) = P(B | A) x P(A) / P(B).
Exemple classique : une maladie touche 1 % de la population. Un test la détecte dans 99 % des cas chez les malades, mais donne aussi 5 % de faux positifs chez les personnes saines. Si le test est positif, quelle est la probabilité d’être malade ?
p_m = 0.01 # P(malade)
p_pos_m = 0.99 # P(positif | malade), la sensibilité
p_pos_sain = 0.05 # P(positif | sain), le taux de faux positifs
p_pos = p_pos_m * p_m + p_pos_sain * (1 - p_m) # probabilités totales
print(p_pos_m * p_m / p_pos) # environ 0.167
Seulement 17 % ! Comme la maladie est rare, la plupart des positifs sont des faux positifs. Confondre P(positif | malade) et P(malade | positif) est une erreur très fréquente, y compris en entreprise (alertes de fraude, scores de risque).
Estimer par simulation
Quand le calcul est difficile, on peut simuler : la fréquence observée sur un grand nombre d’essais se rapproche de la probabilité.
import numpy as np
rng = np.random.default_rng(42) # graine pour un résultat reproductible
des = rng.integers(1, 7, size=100_000)
print((des % 2 == 0).mean()) # proche de 0.5
À retenir
- P(A | B) restreint l’univers aux cas où B est vrai.
- Indépendance : P(A et B) = P(A) x P(B).
- Bayes inverse les conditionnelles ; la probabilité de base (ici 1 %) compte énormément.
Exercices
Les solutions et les tests restent sur le serveur. Dans l'espace étudiant, ton code est exécuté et corrigé, et le tuteur donne des indices avant la solution.
Conversion sachant le canal
Le tableau
tabdonne le nombre de visiteurs par canal et par issue. Calculep_achat(probabilité globale d’achat),p_achat_sachant_email(probabilité d’achat sachant que le visiteur vient de l’e-mail) etindependants, un booléen indiquant si achat et canal e-mail sont indépendants (compare avec une tolérance de 1e-9).import pandas as pd tab = pd.DataFrame({'achat': [30, 70], 'pas_achat': [170, 730]}, index=['email', 'autre']) # p_achat = ... # p_achat_sachant_email = ... # independants = ...Fonction de Bayes
Écris
prob_malade_si_positif(prevalence, sensibilite, faux_positifs)qui renvoie P(malade | test positif).def prob_malade_si_positif(prevalence, sensibilite, faux_positifs): passEstimer une probabilité par simulation
Avec
rng = np.random.default_rng(0), simule 200 000 lancers de deux dés et stocke dansp_somme_7la fréquence des lancers dont la somme vaut 7. La valeur théorique est 6/36.import numpy as np rng = np.random.default_rng(0) # p_somme_7 = ...
Quiz de fin de leçon
P(A) = 0.5, P(B) = 0.4 et P(A et B) = 0.2. Que vaut P(A ou B) ?
- 0.9
- 0.7
- 0.2
- 0.5
Avec ces mêmes valeurs, A et B sont-ils indépendants ?
- Oui, car 0.5 x 0.4 = 0.2
- Non, car 0.2 < 0.5
- Impossible à dire
Un test positif pour une maladie rare signifie que :
- On est malade avec une probabilité égale à la sensibilité
- La probabilité d'être malade dépend aussi de la rareté de la maladie
- On est forcément malade
La suite du cours
- Variables aléatoires et lois de probabilité20 min
- Échantillonnage, loi des grands nombres et théorème central limite18 min
- Intervalles de confiance18 min
- Tests d'hypothèses et p-value20 min