Skip to content

Lois discrètes

La page précédente a posé les outils pour décrire une v.a. discrète, loi de masse, fonction de répartition, espérance, variance, indépendance (§3), et la synthèse qui les chapeaute : une loi est un modèle paramétré p(x;θ) (§5). Cette page les met en œuvre sur un catalogue de cinq lois discrètes usuelles, Bernoulli, binomiale, géométrique, Poisson et uniforme discrète, présentées dans cet ordre. Pour chaque loi, la même trame se répète : modélisation, illustration, propriétés, puis exemple numérique.

Chaque loi est un modèle du hasard p(x;θ), une réponse à la question « quel mécanisme aléatoire a produit mes données ? ».

Loi de Bernoulli, XB(p)

La loi de Bernoulli modélise toute expérience à deux issues, succès (x=1) ou échec (x=0) : un visiteur d'un site qui convertit ou non (test A/B), un bit transmis avec ou sans erreur, un composant qui passe ou non le contrôle qualité. C'est la brique élémentaire de tout le catalogue.

Modélisation

La loi de Bernoulli est paramétrée par θ=p[0,1], la probabilité de succès : le taux de conversion d'une page, le taux d'erreur d'un canal. Sous la forme générique du cours, p(k;θ)=P(X=k) : ici p(1;θ)=θ et p(0;θ)=1θ.

Modèle (Loi de Bernoulli)

  • PMF :
P(X=1)=p,P(X=0)=1p.
  • CDF :
FX(x)={0x<01p0x<11x1

À titre d'exemple, pour le problème de pile ou face (Ω={P,F}), il est courant de modéliser l'occurrence de l'issue « pile » par une loi de Bernoulli de paramètre p=0,5.

Illustration

PMF de la loi de Bernoulli pour trois valeurs du paramètre p

Figure 1.11a, PMF : P(X=k) pour p{0,2, 0,5, 0,8}.

CDF de la loi de Bernoulli pour trois valeurs du paramètre p

Figure 1.11b, CDF : deux marches, en 0 puis en 1.

Propriétés

Moments

E(X)=pvar(X)=p(1p)

La variance p(1p) est maximale en p=1/2 : une pièce équilibrée est la plus imprévisible ; un événement quasi sûr ou quasi impossible ne fluctue presque pas.

Preuve

E(X)=1×p+0×(1p)=p. Comme X2=X (seules valeurs 0 et 1), E(X2)=p, d'où par König-Huygens : var(X)=pp2=p(1p). ∎

Exemple

Le code suivant montre comment simuler 50 000 tirages de Bernoulli de paramètre p=5%.

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

p = 0.05
x = (rng.random(50_000) < p).astype(int)
x.mean()    # >>> 0.0501  (fréquence ≈ p)
x.var()     # >>> 0.0476  (≈ p(1-p) = 0.0475)
python
import scipy.stats as sta

X = sta.bernoulli(0.05)
X.mean(), X.var()   # >>> (0.05, 0.0475)

Loi binomiale, XB(n,p)

La loi binomiale compte les succès sur n épreuves de Bernoulli indépendantes de même paramètre p : le nombre de bits erronés dans une trame de n bits, le nombre de paquets perdus sur n transmissions.

Modélisation

La loi binomiale est paramétrée par θ=(n,p) : n le nombre d'épreuves, p la probabilité de succès commune à chacune. La PMF ci-dessous est la forme p(k;θ)=P(X=k) de ce modèle.

Modèle (Loi binomiale)

  • PMF :
P(X=k)=(nk)pk(1p)nk,k{0,,n}
  • CDF :
FX(k)=j=0k(nj)pj(1p)nj,k{0,,n}

Notons qu'il n'y a pas de forme simple pour la CDF. L'expression s'obtient en sommant la PMF sur les différentes valeurs de k.

Illustration

PMF de la loi binomiale pour plusieurs n à p fixé, dont le cas Bernoulli n=1

Figure 1.12a, PMF : le cas n=1 est la loi de Bernoulli.

CDF de la loi binomiale pour plusieurs n à p fixé

Figure 1.12b, CDF : un escalier à n+1 marches.

Propriétés

Moments

E(X)=npvar(X)=np(1p)

La binomiale est une somme de n Bernoulli ; ses moments s'additionnent donc directement à partir de ceux de la Bernoulli.

Preuve

X=X1++Xn avec XiB(p) indépendantes, donc E(X)=np par linéarité et var(X)=np(1p) par additivité des variances sous indépendance. ∎

Exemple

Le code suivant montre comment simuler 100 000 trames de n=1000 bits sur un canal de taux d'erreur p=0,02, en comptant les bits erronés de chaque trame.

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

n, p = 1000, 0.02
bits = rng.random((100_000, n)) < p   # n Bernoulli(p) indépendants, 100 000 trames simulées
erreurs = bits.sum(axis=1)            # X = somme de n Bernoulli = Binomiale(n, p)
erreurs.mean(), erreurs.var()   # >>> (19.998, 19.574)  (≈ np = 20, np(1-p) = 19.6)
(erreurs == 20).mean()          # >>> 0.0906  (≈ P(X=20) = 0.0897)
python
import scipy.stats as sta

X = sta.binom(1000, 0.02)
X.pmf(20)    # >>> 0.0897
X.sf(29)     # >>> 0.0207  (P(X >= 30))
X.mean(), X.var()   # >>> (20.0, 19.6)

Au chapitre 2 : déduire le taux d'erreur p^ du canal de x=27 erreurs observées (chapitre 2).

Loi géométrique, XG(p)

La loi géométrique modélise l'attente du premier succès : le nombre de combats avant d'obtenir un objet rare (probabilité p par combat), le nombre de tentatives avant une connexion réussie.

Modélisation

La loi géométrique est paramétrée par θ=p ]0,1], la probabilité de succès à chaque tentative ; sa PMF est la forme p(k;θ)=P(X=k) de ce modèle.

Modèle (Loi géométrique)

  • PMF :
P(X=k)=(1p)k1p,k{1,2,}
  • CDF :
FX(k)=1(1p)k,k{1,2,}

La quantité 1FX(k)=(1p)k est la probabilité de k échecs d'affilée. Cette probabilité est souvent plus utile que la CDF elle-même.

Illustration

PMF de la loi géométrique pour plusieurs valeurs de p

Figure 1.13a, PMF : plus le succès est rare, plus la loi s'étale.

CDF de la loi géométrique pour plusieurs valeurs de p

Figure 1.13b, CDF : FX(k)=1(1p)k.

Propriétés

Moments

E(X)=1/pvar(X)=(1p)/p2

L'écart-type est du même ordre que la moyenne : l'attente d'un événement rare est intrinsèquement très dispersée.

L'absence de mémoire

Proposition, Absence de mémoire (géométrique)

Si XG(p), alors pour tous entiers m,k0 :

P(X>m+kX>m)=P(X>k).

Avoir déjà échoué m fois ne rend pas le succès « plus dû », l'erreur du joueur, mathématisée. Son analogue continu est l'exponentielle.

Démonstration

P(X>k)=(1p)k, donc P(X>m+kX>m)=(1p)m+k/(1p)m=(1p)k=P(X>k). ∎

Exemple

Le code suivant montre comment repérer le rang du premier succès sur 100 000 séries de 400 tentatives, avec un taux de succès p=0,05 par tentative.

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

p = 0.05
essais = rng.random((100_000, 400)) < p
# tant que la somme cumulée des succès est nulle, aucun succès n'est encore survenu ;
# le nombre de tels essais est donc le rang (0-based) du premier succès
premier = (essais.cumsum(axis=1) == 0).sum(axis=1) + 1
premier.mean(), premier.var()   # >>> (19.99, 375.6)  (≈ 1/p = 20, (1-p)/p² = 380)
python
import scipy.stats as sta

X = sta.geom(0.05)
X.mean(), X.var()   # >>> (20.0, 380.0)
X.sf(20)             # >>> 0.3585  (P(X > 20) = 0.95^20)

Au chapitre 2 : estimer ce taux à partir des rangs d'apparition observés.

Loi de Poisson, XP(λ)

La loi de Poisson modélise le comptage d'événements rares dans une fenêtre fixe : requêtes reçues par un serveur en une seconde, pannes d'un parc de machines par mois.

Modélisation

La loi de Poisson est paramétrée par θ=λ>0, le nombre moyen d'événements par fenêtre ; c'est la limite de la binomiale quand n et p0 avec np=λ fixé (un grand nombre d'essais, chacun de probabilité de succès infime). Sa PMF est la forme p(k;θ)=P(X=k) de ce modèle.

Modèle (Loi de Poisson)

  • PMF :
P(X=k)=eλλkk!,kN
  • CDF :
FX(k)=j=0keλλjj!,kN

Illustration

PMF de la loi de Poisson pour trois taux différents

Figure 1.14a, PMF : le pic suit λ, l'étalement aussi (var(X)=λ).

CDF de la loi de Poisson pour trois taux différents

Figure 1.14b, CDF : escalier, de plus en plus étiré à droite quand λ croît.

Propriétés

Moments

E(X)=λvar(X)=λ

L'égalité E(X)=var(X)=λ est la signature de la loi : sur des données de comptage réelles, comparer moyenne et variance empiriques est un premier test de « poissonnité ».

Preuve

E(X)=k1keλλk/k!=λeλk1λk1/(k1)!=λ. De même E(X(X1))=λ2, d'où E(X2)=λ2+λ et var(X)=λ par König-Huygens. ∎

Exemple

Le code suivant montre comment compter les requêtes reçues par un serveur de taux λ=4 requêtes/s, en découpant chaque seconde en n=2000 sous-intervalles porteurs chacun d'une épreuve de Bernoulli de probabilité λ/n.

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

lam, n = 4, 2000                 # la seconde découpée en n sous-intervalles, p = lam/n minuscule
p = lam / n
requetes = (rng.random((100_000, n)) < p).sum(axis=1)   # Binomiale(n, p) --> Poisson(lam) quand n est grand
requetes.mean(), requetes.var()   # >>> (4.01, 3.98)  (≈ lam = 4)
(requetes == 4).mean()            # >>> 0.195  (≈ P(X=4) = 0.1954, valeur la plus probable : 20 % seulement)
(requetes >= 10).mean()           # >>> 0.0077  (≈ P(X>=10) = 0.0081 : saturation)
python
import scipy.stats as sta

X = sta.poisson(4)
X.pmf(4), X.sf(9)      # >>> (0.1954, 0.0081)  (P(X >= 10) : saturation)
X.mean(), X.var()      # >>> (4.0, 4.0)

Au chapitre 2 : le trafic réel donne des comptages x1,,xn ; le MLE de λ sera leur moyenne.

Loi uniforme discrète, XU{a,,b}

La loi uniforme discrète modélise un nombre fini de valeurs toutes équiprobables : le , désormais nommé, ou le tirage d'un indice dans une liste, la brique de toutes les simulations.

Modélisation

La loi uniforme discrète est paramétrée par θ=(a,b), les bornes du support, avec n=ba+1 valeurs possibles ; sa PMF est la forme p(k;θ)=P(X=k) de ce modèle.

Modèle (Loi uniforme discrète)

  • PMF :
P(X=k)=1n,k{a,,b}
  • CDF :
FX(k)=ka+1n,k{a,,b}

Illustration

PMF de la loi uniforme discrète pour deux supports différents

Figure 1.15a, PMF : le dé (1/6) et un chiffre au hasard (1/10).

CDF de la loi uniforme discrète pour deux supports différents

Figure 1.15b, CDF : marches régulières de hauteur 1/n.

Propriétés

Moments

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

Le centre est le milieu de l'intervalle ; la dispersion croît avec l'étendue du support, au carré.

Exemple

Le code suivant montre comment tirer 100 000 lancers d'un dé à six faces (a=1, b=6), dont les moments ont été calculés page précédente.

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

lancers = rng.integers(1, 7, size=100_000)
lancers.mean(), lancers.var()   # >>> (3.498, 2.910)  (≈ 3.5, 35/12 ≈ 2.917)
python
import scipy.stats as sta

X = sta.randint(1, 7)   # borne haute exclue
X.mean(), X.var()       # >>> (3.5, 2.9167)