Aller au contenu

Décrivez une variable aléatoire discrète

Le serveur d’une application reçoit en moyenne 4 requêtes par seconde et peut en traiter 8. Quelle est la probabilité qu’il soit débordé pendant une seconde donnée ? Et combien de requêtes échoueront, en moyenne, sur un lot de 20 ? Ces questions ne portent plus sur des événements isolés, mais sur des nombres qui dépendent du hasard.

Dans ce chapitre, vous allez apprendre à manipuler ces nombres aléatoires : les décrire par leur loi, les résumer par leur espérance et leur variance, et reconnaître les quatre lois discrètes qui reviennent partout. Le fil rouge sera ce serveur web.

Une variable aléatoire (v.a.) est une fonction X:Ω→RX : \Omega \to \mathbb{R} qui associe un nombre à chaque issue de l’expérience. Malgré son nom, ce n’est donc ni une variable, ni aléatoire : c’est une fonction tout à fait déterministe, et c’est l’issue ω\omega qui est tirée au hasard.

Par exemple, si l’expérience consiste à envoyer 20 requêtes, l’issue ω\omega décrit le sort de chacune (succès ou échec), et X(ω)X(\omega) est le nombre d’échecs. On écrit alors {X=2}\lbrace X = 2 \rbrace pour l’événement « exactement deux requêtes ont échoué », c’est-à-dire l’ensemble des issues ω\omega telles que X(ω)=2X(\omega) = 2.

Une v.a. est discrète si elle prend un nombre fini ou dénombrable de valeurs (0, 1, 2, …) : un nombre d’échecs, de requêtes, de tentatives. Elle est continue si elle prend ses valeurs dans un intervalle de R\mathbb{R} : un temps, une température (chapitre 5).

La loi de XX est la liste des valeurs possibles xkx_k accompagnées de leurs probabilités pk=P(X=xk)p_k = P(X = x_k). Ces probabilités sont positives et leur somme vaut 1. Une fois la loi connue, on peut oublier Ω\Omega : tout ce qu’on veut savoir sur XX s’en déduit.

La fonction de répartition de XX est :

FX(x)=P(X≤x)F_X(x) = P(X \leq x)

Elle cumule les probabilités jusqu’à xx. Pour une v.a. discrète, c’est une fonction en escalier, croissante, qui part de 0 en −∞-\infty, arrive à 1 en +∞+\infty et fait un saut de hauteur pkp_k en chaque valeur xkx_k. Elle donne directement les probabilités d’intervalles : P(a<X≤b)=FX(b)−FX(a)P(a \lt X \leq b) = F_X(b) - F_X(a).

0,00,10,20,30,4P(X = k)0,3580,3770,189X = nombre d’échecssur 20 requêtes0123456x0,00,20,40,60,81,0F(x) = P(X ≤ x)saut0,358saut0,377F(1) = 0,736
La fonction de répartition empile les bâtons : chaque saut de l'escalier a la hauteur du bâton situé au même endroit. Entre deux valeurs possibles, elle reste plate.

Une loi contient beaucoup d’information. Deux nombres suffisent souvent à la résumer : sa valeur moyenne et sa dispersion.

L’espérance de XX est la moyenne de ses valeurs, pondérée par leurs probabilités :

E[X]=∑kxk P(X=xk)E[X] = \sum_k x_k \, P(X = x_k)

C’est la valeur autour de laquelle se stabilise la moyenne de nombreuses réalisations de XX (vous le démontrerez au chapitre 7). Pour un dé équilibré, E[X]=(1+2+⋯+6)/6=3,5E[X] = (1 + 2 + \dots + 6)/6 = 3{,}5 : une valeur que le dé ne prend jamais, ce qui est normal pour une moyenne.

Deux propriétés rendent l’espérance très maniable :

  • la linéarité : E[aX+bY+c]=a E[X]+b E[Y]+cE[aX + bY + c] = a\,E[X] + b\,E[Y] + c pour toutes v.a. XX, YY et constantes aa, bb, cc, même si XX et YY sont dépendantes ;
  • le théorème de transfert : pour calculer E[g(X)]E[g(X)], inutile de chercher la loi de g(X)g(X), on écrit directement E[g(X)]=∑kg(xk) P(X=xk)E[g(X)] = \sum_k g(x_k) \, P(X = x_k).

L’espérance ne dit rien de la dispersion. La variance mesure l’écart quadratique moyen à l’espérance :

Var(X)=E[(X−E[X])2]=E[X2]−E[X]2\mathrm{Var}(X) = E\big[(X - E[X])^2\big] = E[X^2] - E[X]^2

La seconde forme (formule de König-Huygens) est la plus pratique pour calculer : on obtient E[X2]E[X^2] par le théorème de transfert. La variance s’exprime dans l’unité de XX au carré ; pour revenir à l’unité de XX, on prend l’écart-type σX=Var(X)\sigma_X = \sqrt{\mathrm{Var}(X)}.

Contrairement à l’espérance, la variance n’est pas linéaire :

Var(aX+b)=a2 Var(X)\mathrm{Var}(aX + b) = a^2 \, \mathrm{Var}(X)

Ajouter une constante décale les valeurs sans les disperser davantage ; multiplier par aa multiplie les écarts par aa, donc leurs carrés par a2a^2.

01/6E = 3,5 ; σ ≈ 1,71X : la face du dé−10123456789valeur01/6E = 4 ; σ ≈ 3,42Y = 2X − 3 : le gain en euros
Passer de X à 2X − 3 décale le centre (de 3,5 à 4) et double l'écartement des valeurs : l'écart-type double, donc la variance est multipliée par 4. Le − 3 ne change pas la dispersion.

Quatre lois couvrent l’essentiel des situations discrètes. Pour chacune, retenez l’histoire qu’elle raconte : c’est elle qui vous permet de la reconnaître dans un énoncé.

XX suit la loi de Bernoulli de paramètre pp, notée B(p)\mathcal{B}(p), si elle vaut 1 (succès) avec probabilité pp et 0 (échec) avec probabilité 1−p1 - p. C’est l’indicatrice d’un événement : une requête échoue ou non, un patient est malade ou non. On a E[X]=pE[X] = p et Var(X)=p(1−p)\mathrm{Var}(X) = p(1 - p).

Binomiale : compter les succès parmi nn essais indépendants

Section intitulée « Binomiale : compter les succès parmi nnn essais indépendants »

Si l’on répète nn fois, indépendamment, un essai de Bernoulli de paramètre pp, le nombre total de succès X=X1+⋯+XnX = X_1 + \dots + X_n suit la loi binomiale B(n,p)\mathcal{B}(n, p) :

P(X=k)=(nk)pk(1−p)n−k,k=0,1,…,nP(X = k) = \binom{n}{k} p^k (1 - p)^{n - k}, \qquad k = 0, 1, \dots, n

Le facteur (nk)\binom{n}{k} compte les façons de placer les kk succès parmi les nn essais (chapitre 1), et pk(1−p)n−kp^k (1-p)^{n-k} est la probabilité de chacune de ces configurations (par indépendance, chapitre 3). Par linéarité, E[X]=npE[X] = np, et comme les XiX_i sont indépendantes, Var(X)=np(1−p)\mathrm{Var}(X) = np(1 - p).

Un client tente de se connecter jusqu’à ce que ça marche ; chaque tentative réussit avec probabilité pp, indépendamment. Le rang du premier succès XX suit la loi géométrique G(p)\mathcal{G}(p) :

P(X=k)=(1−p)k−1p,k=1,2,…P(X = k) = (1 - p)^{k - 1} p, \qquad k = 1, 2, \dots

Il faut k−1k - 1 échecs suivis d’un succès. On montre que E[X]=1/pE[X] = 1/p et Var(X)=(1−p)/p2\mathrm{Var}(X) = (1 - p)/p^2. Avec p=0,8p = 0{,}8, il faut en moyenne 1,251{,}25 tentatives, et P(X>3)=0,23=0,008P(X \gt 3) = 0{,}2^3 = 0{,}008 (trois échecs de suite).

123456rang k du premier succès0,00,20,40,60,8P(X = k)E[X] = 1,25P(X > 3) = 0,2³= 0,008p = 0,8 : connexion15101520rang k du premier succès0,0000,0250,0500,0750,1000,1250,1500,175E[X] = 6p = 1/6 : lancer un dé jusqu’au 6
Les bâtons décroissent toujours d'un facteur 1 − p. Quand le succès est facile, tout se joue au premier essai ; quand il est rare, l'attente a une longue queue.

On compte des événements qui surviennent « au hasard » dans le temps ou l’espace, indépendamment les uns des autres, avec une intensité moyenne constante : des requêtes par seconde, des appels par heure, des défauts par mètre de câble. Leur nombre XX suit la loi de Poisson P(λ)\mathcal{P}(\lambda) :

P(X=k)=e−λλkk!,k=0,1,2,…P(X = k) = e^{-\lambda} \frac{\lambda^k}{k!}, \qquad k = 0, 1, 2, \dots

Le paramètre λ>0\lambda \gt 0 est le nombre moyen d’événements sur la période : λ=c T\lambda = c\,T si cc est l’intensité par unité de temps et TT la durée. Particularité remarquable, E[X]=Var(X)=λE[X] = \mathrm{Var}(X) = \lambda.

La loi de Poisson est aussi une approximation de la binomiale quand nn est grand et pp petit (événement rare), avec λ=np\lambda = np. Pour 1 000 requêtes qui échouent chacune avec probabilité 0,0020{,}002, P(X≤3)P(X \leq 3) vaut 0,85730{,}8573 avec la binomiale exacte et 0,85710{,}8571 avec P(2)\mathcal{P}(2).

012345678nombre k de requêtes en échec0,000,050,100,150,200,250,300,35P(X = k)P(X ≤ 3) : 0,8573 (binomiale)contre 0,8571 (Poisson)binomiale B(1 000 ; 0,002)Poisson P(2)
Pour un événement rare sur beaucoup d'essais, binomiale et Poisson de même moyenne np = 2 sont indiscernables à l'œil.

Revenons à la question d’ouverture. Le nombre de requêtes par seconde suit P(4)\mathcal{P}(4), et le serveur est débordé s’il en reçoit plus de 8. Le diagramme montre la loi, avec en magenta les valeurs qui débordent :

012345678910nombre de requêtes en une secondedébordement

La probabilité de débordement vaut P(X>8)=1−FX(8)≈0,021P(X \gt 8) = 1 - F_X(8) \approx 0{,}021 : environ 2 % des secondes, soit plus d’une minute par heure.

LoiHistoireP(X=k)P(X = k)E[X]E[X]Var(X)\mathrm{Var}(X)
Bernoulli B(p)\mathcal{B}(p)un essaipp si k=1k=1, 1−p1-p si k=0k=0ppp(1−p)p(1-p)
Binomiale B(n,p)\mathcal{B}(n,p)succès parmi nn essais indépendants(nk)pk(1−p)n−k\binom{n}{k}p^k(1-p)^{n-k}npnpnp(1−p)np(1-p)
Géométrique G(p)\mathcal{G}(p)rang du premier succès(1−p)k−1p(1-p)^{k-1}p1/p1/p(1−p)/p2(1-p)/p^2
Poisson P(λ)\mathcal{P}(\lambda)événements rares sur une périodee−λλk/k!e^{-\lambda}\lambda^k/k!λ\lambdaλ\lambda

R nomme ses fonctions de lois selon une convention uniforme : un préfixe suivi du nom de la loi (binom, geom, pois, norm, exp, unif…).

PréfixeRôleExemple
dprobabilité P(X=k)P(X = k) (ou densité, pour une loi continue)dbinom(0, 20, 0.05)
pfonction de répartition P(X≤x)P(X \leq x)ppois(8, 4)
qquantile : plus petite valeur xx telle que P(X≤x)≥P(X \leq x) \geq niveauqpois(0.99, 4)
rtirages aléatoiresrpois(1000, 4)
# Lot de 20 requêtes, 5 % d'échecs
dbinom(0:2, size = 20, prob = 0.05) # 0.358 0.377 0.189
1 - pbinom(1, size = 20, prob = 0.05) # P(X >= 2) = 0.264
# Requêtes par seconde : Poisson de moyenne 4
1 - ppois(8, lambda = 4) # probabilité de débordement : 0.021
qpois(0.99, lambda = 4) # capacité suffisante 99 % du temps : 9
# Vérification par simulation d'une heure de trafic
set.seed(5)
x <- rpois(3600, lambda = 4)
mean(x); var(x) # tous deux proches de 4
mean(x > 8) # proche de 0.021
  • Une variable aléatoire est une fonction X:Ω→RX : \Omega \to \mathbb{R} ; elle est discrète si ses valeurs sont en nombre fini ou dénombrable.
  • Sa loi est la liste des P(X=xk)P(X = x_k) ; sa fonction de répartition FX(x)=P(X≤x)F_X(x) = P(X \leq x) est en escalier.
  • L’espérance est linéaire ; la variance E[X2]−E[X]2E[X^2] - E[X]^2 vérifie Var(aX+b)=a2Var(X)\mathrm{Var}(aX + b) = a^2 \mathrm{Var}(X).
  • Bernoulli : un essai ; binomiale : nombre de succès parmi nn essais indépendants ; géométrique : rang du premier succès ; Poisson : nombre d’événements rares, avec E=Var=λE = \mathrm{Var} = \lambda.
  • La Poisson de paramètre npnp approche la binomiale quand nn est grand et pp petit.
  • En R, d, p, q et r donnent la probabilité, la répartition, le quantile et des tirages de chaque loi.

Exercice · Un ticket à gratter

facile

Un ticket coûte 2 €. Il rapporte 5 € avec probabilité 0,2 et 50 € avec probabilité 0,01 ; sinon, rien. Soit GG le gain net du joueur (gain moins mise). Donnez la loi de GG, puis calculez E[G]E[G] et l’écart-type de GG.

Voir la solution

GG vaut −2-2 avec probabilité 1−0,2−0,01=0,791 - 0{,}2 - 0{,}01 = 0{,}79, 33 avec probabilité 0,20{,}2 et 4848 avec probabilité 0,010{,}01.

E[G]=−2×0,79+3×0,2+48×0,01=−1,58+0,6+0,48=−0,5E[G] = -2 \times 0{,}79 + 3 \times 0{,}2 + 48 \times 0{,}01 = -1{,}58 + 0{,}6 + 0{,}48 = -0{,}5

Le joueur perd 50 centimes par ticket en moyenne. Pour la variance, E[G2]=4×0,79+9×0,2+2 304×0,01=3,16+1,8+23,04=28E[G^2] = 4 \times 0{,}79 + 9 \times 0{,}2 + 2\,304 \times 0{,}01 = 3{,}16 + 1{,}8 + 23{,}04 = 28, donc Var(G)=28−0,25=27,75\mathrm{Var}(G) = 28 - 0{,}25 = 27{,}75 et σG≈5,27\sigma_G \approx 5{,}27 €. L’écart-type est dix fois plus grand que la perte moyenne : sur un seul ticket, le hasard domine complètement.

En code

import numpy as np
# Loi du gain net G (gain moins mise de 2 €)
valeurs = np.array([-2, 3, 48])
probas = np.array([0.79, 0.20, 0.01])
esperance = np.sum(valeurs * probas)
variance = np.sum(valeurs**2 * probas) - esperance**2 # König-Huygens
print(esperance) # -0.5
print(variance) # 27.75
print(np.sqrt(variance)) # 5.268

Exercice · Reconnaître la loi

moyen

Pour chaque situation, donnez la loi de XX avec ses paramètres, puis son espérance.

  1. Un QCM de 10 questions à 4 choix ; un étudiant répond au hasard. XX est le nombre de bonnes réponses.
  2. On lance un dé jusqu’à obtenir un 6. XX est le nombre de lancers.
  3. Un standard reçoit en moyenne 30 appels par heure. XX est le nombre d’appels entre 14 h et 14 h 10.
Voir la solution
  1. Dix essais indépendants, succès avec probabilité 1/41/4 : X∼B(10 ; 0,25)X \sim \mathcal{B}(10\,;\,0{,}25) et E[X]=2,5E[X] = 2{,}5.
  2. Rang du premier succès, p=1/6p = 1/6 : X∼G(1/6)X \sim \mathcal{G}(1/6) et E[X]=6E[X] = 6 lancers en moyenne.
  3. Événements indépendants à intensité constante c=30c = 30 par heure, sur T=1/6T = 1/6 d’heure : X∼P(5)X \sim \mathcal{P}(5) et E[X]=5E[X] = 5 appels.

En code

from scipy import stats
qcm = stats.binom(n=10, p=0.25) # nombre de bonnes réponses
de = stats.geom(p=1/6) # rang du premier 6 (scipy compte à partir de 1)
appels = stats.poisson(mu=30 / 6) # 30 appels/heure pendant 1/6 d'heure
print(qcm.mean(), de.mean(), appels.mean()) # 2.5 6.0 5.0

Exercice · Dimensionner le serveur

difficile

On veut que le serveur du fil rouge soit débordé moins de 1 % des secondes.

  1. Avec une moyenne de 4 requêtes par seconde, quelle capacité minimale cc faut-il ?
  2. Le trafic double (8 requêtes par seconde en moyenne). Faut-il doubler la capacité ? Utilisez R.
Voir la solution

On cherche le plus petit cc tel que P(X>c)≤0,01P(X \gt c) \leq 0{,}01, c’est-à-dire FX(c)≥0,99F_X(c) \geq 0{,}99 : c’est exactement le quantile d’ordre 0,99.

  1. qpois(0.99, 4) renvoie 9 : FX(8)≈0,979F_X(8) \approx 0{,}979 ne suffit pas, FX(9)≈0,992F_X(9) \approx 0{,}992 convient.
  2. qpois(0.99, 8) renvoie 15 : FX(14)≈0,983F_X(14) \approx 0{,}983 et FX(15)≈0,992F_X(15) \approx 0{,}992. Il suffit de 15, et non de 18.

La capacité ne double pas, car l’écart-type de la Poisson, λ\sqrt{\lambda}, croît moins vite que sa moyenne : la marge de sécurité nécessaire, en proportion du trafic, diminue quand le trafic augmente. C’est un effet d’échelle bien connu en dimensionnement de réseaux.

En code

from scipy import stats
# Plus petite capacité c telle que P(X <= c) >= 0.99
for trafic in (4, 8):
c = stats.poisson.ppf(0.99, mu=trafic)
print(trafic, c, stats.poisson.cdf([c - 1, c], mu=trafic).round(3))
# 4 9.0 [0.979 0.992]
# 8 15.0 [0.983 0.992]