Probabilités, indépendance et probabilités conditionnelles

Première leçon du cours Probabilités et statistiques inférentielles, en accès libre : environ 18 minutes, 3 exercices et 3 questions de quiz. C'est la leçon de base du catalogue ; dans l'espace étudiant, elle est réécrite pour ton profil.

Objectifs

  • Calculer la probabilité d'un événement, d'une union et d'une intersection
  • Calculer une probabilité conditionnelle et appliquer le théorème de Bayes

ProbabilitésProbabilité conditionnelleThéorème de Bayes

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.

  1. CodeDifficulté 2Python dans le navigateur2 indices

    Conversion sachant le canal

    Le tableau tab donne le nombre de visiteurs par canal et par issue. Calcule p_achat (probabilité globale d’achat), p_achat_sachant_email (probabilité d’achat sachant que le visiteur vient de l’e-mail) et independants, 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 = ...
  2. CodeDifficulté 2Python dans le navigateur2 indices

    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):
        pass
  3. CodeDifficulté 2Python dans le navigateur2 indices

    Estimer une probabilité par simulation

    Avec rng = np.random.default_rng(0), simule 200 000 lancers de deux dés et stocke dans p_somme_7 la 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

  1. 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
  2. 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
  3. 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

  1. Variables aléatoires et lois de probabilité20 min
  2. Échantillonnage, loi des grands nombres et théorème central limite18 min
  3. Intervalles de confiance18 min
  4. Tests d'hypothèses et p-value20 min

Probabilités et statistiques inférentielles · Intermédiaire · 2 h 34