Skip to content

Lois continues

La page Fondations a posé les outils pour décrire une v.a. continue, densité, fonction de répartition, espérance et variance, indépendance, et la synthèse qui les chapeaute : une loi est un modèle paramétré p(x;θ) (§5). La page précédente en a déroulé le catalogue discret ; celle-ci fait de même côté continu, sur quatre lois usuelles, uniforme, exponentielle, normale et normale multidimensionnelle, présentées dans cet ordre, chacune un modèle p(x;θ) selon la même trame : modélisation, illustration, propriétés, puis exemple numérique. La fiche de la loi normale culmine avec le théorème central limite, le résultat qui explique pourquoi cette loi est partout.

Loi uniforme continue, XU(a,b)

La loi uniforme continue modélise une valeur prise « au hasard » dans un intervalle [a,b]. Souvent ce type de loi est choisi lorsque nous n'avons aucun a priori sur le comportement d'une variable aléatoire, à l'exception de l'intervalle des valeurs possibles. À titre d'exemple, cette loi peut servir à modéliser l'erreur de quantification d'un convertisseur analogique-numérique (l'arrondi au pas q près laisse une erreur U(q/2,q/2)).

Modélisation

La loi uniforme continue est paramétrée par θ=(a,b), les bornes de l'intervalle. Sous la forme générique du cours, p(x;θ) désigne ici la densité fX(x).

Modèle (Loi uniforme continue)

  • PDF :
fX(x)=1ba,x[a,b]
  • CDF :
FX(x)=xaba,x[a,b]

Illustration

Densités de lois uniformes continues pour trois intervalles différents

Figure 1.16a, PDF : rectangles de hauteur 1/(ba).

CDF de lois uniformes continues pour trois intervalles différents

Figure 1.16b, CDF : rampe linéaire sur [a,b].

Propriétés

Moments

E(X)=(a+b)/2var(X)=(ba)2/12

Le centre reste le même que pour la version discrète ; la dispersion croît avec la largeur de l'intervalle, au carré.

Exemple

Le code suivant montre comment tirer 100 000 erreurs de quantification au pas q=1, uniformes sur [0,5, 0,5].

python
import numpy as np
rng = np.random.default_rng(0)

u = rng.uniform(-0.5, 0.5, size=100_000)
u.mean(), u.var()   # >>> (-0.0004, 0.0832)  (≈ 0, q²/12 = 0.0833)
python
import scipy.stats as sta

X = sta.uniform(loc=-0.5, scale=1.0)   # loc = a, scale = b - a (et non b)
X.var()       # >>> 0.0833
X.cdf(0.25)   # >>> 0.75

Loi exponentielle, XExp(λ)

La loi exponentielle modélise la durée d'attente d'un événement sans mémoire : le temps entre deux pannes, entre deux requêtes. C'est la jumelle continue de la Poisson : si les événements se comptent en Poisson de taux λ, le temps entre deux événements suit Exp(λ).

Modélisation

La loi exponentielle est paramétrée par θ=λ>0, le taux d'occurrence ; plus il est élevé, plus les attentes sont courtes. Sa densité est la forme p(x;θ) de ce modèle.

Modèle (Loi exponentielle)

  • PDF :
fX(x)=λeλx,x0
  • CDF :
FX(x)=1eλx,x0

Illustration

Densités de lois exponentielles pour trois taux différents

Figure 1.17a, PDF : part de λ, décroît en eλx.

CDF de lois exponentielles pour trois taux différents

Figure 1.17b, CDF : 1eλx, croissante vers 1.

Propriétés

Moments

E(X)=1/λvar(X)=1/λ2

L'écart-type est égal à la moyenne : la loi est fortement asymétrique, elle servira de loi « pas du tout Gaussienne » pour mettre le TCL à l'épreuve en fin de fiche normale.

Preuve

Par intégration par parties, E(X)=0xλeλxdx=1/λ, et E(X2)=2/λ2, d'où var(X)=2/λ21/λ2=1/λ2 par König-Huygens. ∎

L'absence de mémoire

Proposition, Absence de mémoire (exponentielle)

Si XExp(λ), alors pour tous s,t0 :

P(X>s+tX>s)=P(X>t).

Une machine qui fonctionne depuis s heures n'est ni plus ni moins « due » pour une panne qu'une machine neuve. Il peut être démontré que l'exponentielle est la seule loi continue à posséder cette propriété ; son analogue discret est la géométrique.

Démonstration

P(X>s+tX>s)=P(X>s+t)/P(X>s)=eλ(s+t)/eλs=eλt=P(X>t). ∎

Exemple

Le code suivant montre comment tirer 100 000 durées entre pannes d'un serveur de taux λ=0,5 panne/h, puis vérifier l'absence de mémoire.

python
import numpy as np
rng = np.random.default_rng(0)

t = rng.exponential(scale=2.0, size=100_000)   # scale = 1/λ
t.mean(), t.var()   # >>> (1.994, 4.016)  (≈ 2, 4)
np.mean(t > 3)      # >>> 0.2226  (≈ e^{-1.5})
python
import scipy.stats as sta

X = sta.expon(scale=2.0)
X.sf(3)             # >>> 0.2231
X.sf(5) / X.sf(2)   # >>> 0.2231  (= P(X > 3) : sans mémoire)

Loi normale, XN(μ,σ2)

La loi normale modélise le bruit de mesure, et plus généralement toute grandeur résultant de l'accumulation de petits effets indépendants. Sa densité est la célèbre courbe en cloche, symétrique.

Modélisation

La loi normale est paramétrée par θ=(μ,σ2) : μ positionne le centre de la cloche, σ2 règle sa largeur ; sa densité est la forme p(x;θ) de ce modèle. Convention absolue du cours : le second argument de N(μ,σ2) est la variance, pas l'écart-type.

Modèle (Loi normale)

  • PDF :
fX(x)=12πσ2exp((xμ)22σ2)
  • CDF :
FX(x)=Φ(xμσ)

Φ est la fonction de répartition de la normale centrée réduite (ci-dessous), pas de forme fermée élémentaire : tout calcul se ramène à la table (ou à scipy) de Φ, via un changement d'échelle.

Illustration

Densités de lois normales pour plusieurs couples moyenne-variance

Figure 1.18a, PDF : μ déplace, σ2 élargit.

CDF de lois normales pour plusieurs couples moyenne-variance

Figure 1.18b, CDF : une rampe en S, centrée en μ.

Propriétés

Moments

E(X)=μvar(X)=σ2

Remarquons que les paramètres de la loi sont exactement ses deux premiers moments.

La standardisation

Toutes les Gaussiennes se déduisent d'une seule, N(0,1), par un simple changement d'échelle : soustraire μ, diviser par σ. Tout calcul de probabilité Gaussienne se ramène ainsi à une table (ou une fonction) unique, Φ.

Proposition, Standardisation (centrage-réduction)

Si XN(μ,σ2), alors

Z=XμσN(0,1),

la loi normale centrée réduite, de fonction de répartition notée Φ. Tout calcul Gaussien s'y ramène :

P(Xx)=Φ(xμσ).

La règle 68–95–99,7

La standardisation fige quelques probabilités de référence, valables pour n'importe quelle Gaussienne.

Écart au centreIntervalleP(μkσXμ+kσ)
k=1[μσ, μ+σ]68,3%
k=1,96[μ1,96σ, μ+1,96σ]95,0%
k=2[μ2σ, μ+2σ]95,4%
k=3[μ3σ, μ+3σ]99,7%

C'est la règle mnémotechnique 68–95–99,7. Le quantile 1,96 est celui des 95 % exacts, celui des intervalles de confiance usuels.

Densité Gaussienne avec les zones à un, deux et trois écarts-types du centre, annotées 68, 95 et 99,7 pour cent

Figure 1.19, La règle 68–95–99,7 : quelle que soit la Gaussienne, environ 68 % de la probabilité vit à ±σ du centre, 95 % à ±2σ, 99,7 % à ±3σ. Une observation à plus de 3σ est un événement à 3 pour 1 000, le cœur du raisonnement des tests du chapitre 3 (script figures/ch1/03-normale-68-95-997.py).

Le théorème central limite

Reste la question soulevée en tête de fiche : pourquoi cette loi serait-elle si répandue, alors que le réel n'est pas toujours en cloche (le marathon) ? La réponse tient dans le théorème le plus célèbre des probabilités. Il porte sur la somme de v.a. i.i.d., abréviation d'indépendantes et identiquement distribuées : les Xi suivent toutes la même loi, et sont mutuellement indépendantes. C'est le modèle par défaut de n mesures répétées d'un même phénomène, sans influence des unes sur les autres, et l'hypothèse de travail de tout le cours.

Deux façons pour une suite de variables aléatoires de « se rapprocher » d'une limite

Une suite de v.a. Yn converge en probabilité vers une constante c si, pour tout ε>0, P(|Ync|>ε)0 quand n : la loi de Yn se concentre sur c, qui doit être un nombre fixe. Elle converge en loi vers une v.a. Y si sa fonction de répartition converge vers celle de Y en tout point de continuité ; Y peut ici être elle-même aléatoire, avec une loi non dégénérée, c'est ce mode de convergence qu'utilise le théorème ci-dessous, la limite étant une loi normale, pas un nombre.

Théorème central limite (TCL)

Soient X1,,Xn des v.a. i.i.d. d'espérance μ et de variance σ2 finie, quelle que soit leur loi, et Sn=X1++Xn leur somme. Alors, quand n, la somme standardisée converge en loi vers la Gaussienne centrée réduite :

SnnμσnnloiN(0,1),

ce qui s'utilise en pratique sous la forme : pour n assez grand,

SnN(nμ, nσ2).

L'énoncé est admis. Son point remarquable est l'universalité : quelle que soit la loi de départ, dé, exponentielle, Bernoulli, sommer suffit à faire émerger la Gaussienne. D'où la justification de la phrase d'ouverture de cette fiche : toute grandeur qui accumule un grand nombre de petits effets indépendants (un bruit de capteur, une somme d'erreurs élémentaires) est presque une somme de v.a. i.i.d., donc approximativement Gaussienne par TCL. C'est cet argument qui motive, dans tout le cours, la modélisation Gaussienne des composantes de bruit.

Exemple de convergence : sommer des exponentielles

Le théorème se met à l'épreuve sur la loi la plus asymétrique du catalogue, Exp(1) (μ=1, σ2=1) : rien ne ressemble moins à une cloche que sa densité.

Histogrammes de la somme de N tirages exponentiels pour N valant 1, 2, 10 et 100, comparés à la densité Gaussienne prédite par le TCL

Figure 1.20, Gaussianisation de la somme SN pour une loi de départ Exp(1), très asymétrique : à N=1 la prédiction Gaussienne est franchement fausse (et doit l'être), à N=10 elle est déjà bonne, à N=100 elle est indiscernable de l'histogramme (script figures/ch1/03-tcl-convergence.py).

Conséquence : la loi de la moyenne

L'analyse de données ne somme pas ses mesures, elle les moyenne. Le théorème s'y transpose sans calcul supplémentaire : la moyenne empirique Xn=Sn/n n'est que la somme ramenée à l'échelle d'une observation, et diviser par n ne change pas la forme d'une loi.

Corollaire, loi de la moyenne empirique

Sous les hypothèses du théorème central limite, pour n assez grand,

Xn=1ni=1nXiN(μ, σ2n).

Les deux paramètres se lisent directement sur ceux de Sn : E(Xn)=nμ/n=μ, et var(Xn)=nσ2/n2=σ2/n par la règle var(aX)=a2var(X). Le contraste avec la somme est instructif. La dispersion de la somme croît en σn : additionner des aléas les accumule. Celle de la moyenne fond en σ/n : la moyenne vise juste en espérance et se resserre autour de sa cible à mesure que n grandit. Diviser par 10 l'incertitude d'une moyenne exige donc 100 fois plus de mesures, une contrainte que tout ingénieur finit par rencontrer.

C'est sous cette forme que le TCL servira dans tout le cours : la Gaussienne est la loi des moyennes. Le chapitre 2 en fait son point de départ, la moyenne empirique y devenant le premier estimateur rencontré.

Loi normale multidimensionnelle, XN(μ,C)

Une mesure isolée n'est pas toujours la situation la plus riche : deux capteurs relevés ensemble, deux coordonnées d'une position, ou plus généralement un vecteur de n mesures forment un objet aléatoire à part entière. La Gaussienne se généralise à un tel vecteur X=(X1,,Xn).

Modélisation

La loi normale multidimensionnelle est paramétrée par θ=(μ,C) : μRn le vecteur des espérances, et C, une matrice n×n symétrique définie positive, la matrice de covariance (Cii la variance de Xi, Cij la covariance entre Xi et Xj). Sa densité est la forme p(x;θ) de ce modèle. Elle n'admet pas de CDF sous forme fermée.

Modèle (Loi normale multidimensionnelle)

  • PDF :
fX(x)=1(2π)n/2|C|1/2exp(12(xμ)TC1(xμ))

Illustration

Pour n=2, avec des variances σ12,σ22 et une corrélation ρ,

C=(σ12ρσ1σ2ρσ1σ2σ22).

Ce que C change à la forme du nuage se lit directement sur deux simulations en dimension 2 :

Nuage de points Gaussien en 2D, non corrélé, contours de niveau circulaires

Figure 1.21a, X1 et X2 non corrélées, même dispersion sur chaque axe (σ1=σ2=1), 500 tirages simulés : le nuage est rond.

Nuage de points Gaussien en 2D, corrélé, contours de niveau elliptiques inclinés

Figure 1.21b, X1 et X2 corrélées (ρ=0,8), même dispersion sur chaque axe : le nuage s'incline et s'étire selon la diagonale (script figures/ch1/03-normale-2d.py).

Le nuage rond correspond à ρ=0, soit une matrice diagonale C=I ; le nuage incliné correspond à ρ=0,8, dont les termes hors diagonale non nuls inclinent l'ellipse selon la diagonale.

Propriétés

Moments

E(X)=μcov(X)=C

Le cas non corrélé

Si C est diagonale, C=diag(σ12,,σn2), alors les composantes X1,,Xn sont indépendantes, et la densité se factorise :

fX(x)=i=1nfXi(xi),XiN(μi,σi2).

Pour une Gaussienne, absence de corrélation et indépendance coïncident, un résultat qui ne vaut pas pour une loi quelconque. Un bruit blanc (C=σ2I) n'est alors rien d'autre que n bruits Gaussiens scalaires indépendants, empilés dans un vecteur.

Exemple

Le code suivant montre comment évaluer la densité de deux capteurs bruités corrélés à ρ=0,8, tous deux d'écart-type unité, puis en tirer 100 000 réalisations.

python
import numpy as np

def densite_normale_2d(x, mu, C):
    """Densité de N(mu, C) en dimension 2."""
    ecart = x - mu
    inv_C = np.linalg.inv(C)
    det_C = np.linalg.det(C)
    exposant = -0.5 * ecart @ inv_C @ ecart
    return np.exp(exposant) / (2 * np.pi * np.sqrt(det_C))

mu = np.array([0.0, 0.0])
C = np.array([[1.0, 0.8], [0.8, 1.0]])
densite_normale_2d(np.array([0.0, 0.0]), mu, C)   # >>> 0.2653  (le pic)
python
import scipy.stats as sta

X = sta.multivariate_normal(mean=[0.0, 0.0], cov=[[1.0, 0.8], [0.8, 1.0]])
X.pdf([0.0, 0.0])   # >>> 0.2653

ech = X.rvs(size=100_000, random_state=0)
np.cov(ech.T)       # >>> [[1.00, 0.80], [0.80, 1.01]]  (≈ C)

Au chapitre 2 : ce modèle, plusieurs mesures bruitées et corrélées à la fois, sera au cœur de la dérivation des moindres carrés.

Récapitulatif : une loi = un modèle paramétré

Le catalogue est complet. Reprenons la lecture posée en fondations, §5, une loi est un modèle paramétré p(x;θ), et appliquons-la aux huit lois des deux catalogues :

LoiθE(X)var(X)Situation-type
Bernoulli B(p)ppp(1p)conversion d'un test A/B
Binomiale B(n,p)(n,p)npnp(1p)bits erronés sur une trame
Géométrique G(p)p1/p(1p)/p2attente du premier succès
Poisson P(λ)λλλrequêtes par seconde
Uniforme discrète U{a,b}(a,b)(a+b)/2(n21)/12le dé
Uniforme U(a,b)(a,b)(a+b)/2(ba)2/12erreur de quantification
Exponentielle Exp(λ)λ1/λ1/λ2temps entre deux pannes
Normale N(μ,σ2)(μ,σ2)μσ2bruit de mesure

Huit situations, une seule idée : chaque ligne est un modèle p(x;θ), et modéliser, c'est choisir la ligne. Chacune de ces lignes s'interroge avec l'interface unique de scipy.stats (fondations, §5.3) : le même code fonctionne pour les huit lois en changeant la première ligne, sta.bernoulli(p), sta.binom(n,p), sta.geom(p), sta.poisson(lam), sta.randint(a, b+1), sta.uniform(loc=a, scale=b-a), sta.expon(scale=1/lam), sta.norm(loc=mu, scale=sigma).