- L'espérance d'une fonction (LOTUS). E[g(X)] = Σ g(x) P(X = x), ou ∫ g(x) f(x) dx, sans chercher la loi de g(X) (l08, notion 5). Ici, g(x) = etx.
- Les moments. E[Xk] est le moment brut d'ordre k ; Var(X) = E[X²] − E[X]² (l08, notion 6) ; l'asymétrie et la kurtosis sont des moments centrés et réduits (l08, notion 7).
- L'espérance d'un produit. Si X et Y sont indépendantes, E[g(X) h(Y)] = E[g(X)] E[h(Y)] (l08, notion 4).
- L'énoncé du TCL. Xi i.i.d., de moyenne μ et de variance σ² finie : P((X̄n − μ)/(σ/√n) ≤ x) → Φ(x) (l11, notion 1). Cette leçon le démontre.
- Trois lois. Poisson(λ) : P(X = k) = λk e−λ/k! (l05, notion 1) ; exponentielle(λ) : densité λ e−λx pour x ≥ 0 (l05, notion 3) ; normale centrée réduite : densité φ(x) = e−x²/2/√(2π) et fonction de répartition Φ (l04).
La leçon
L'empreinte d'une loi M(t) = E[etX] culture
Brunton 37 · The Moment Generating Function
Une loi a une infinité de moments : E[X], E[X²], E[X³]… Brunton les compare aux dérivées d'une fonction dans une série de Taylor : pris ensemble, ils forment l'empreinte de la loi. La fonction génératrice des moments les range tous dans une fonction d'une nouvelle variable t.
M(t) est la moyenne de etX. Chaque valeur x pèse etx fois sa probabilité : t est un bouton. À t = 0, etx = 1 : chaque valeur pèse sa probabilité, et la somme vaut 1. Pour un dé à t = 0,5, la face 6 pèse e³/6 = 3,35, la face 1 e0,5/6 = 0,27, et M(0,5) = 8,08. Un t positif grossit les grandes valeurs, un t négatif les petites.
Pourquoi « des moments » : etx = 1 + tx + t²x²/2 + …, donc M(t) = 1 + t E[X] + t² E[X²]/2 + … Le coefficient de tk est E[Xk]/k! : les moments, divisés par k!, sont les coefficients de Taylor de M.
Un dé, une barre par face : sa hauteur est P(X = x) · etx, et M(t) est la somme des barres. À t = 0, chaque barre vaut ⅙ et la somme 1. À t = 0,5, la face 6 passe à 3,35 et fait 41 % de M(0,5) = 8,08 ; à t = −0,5, c'est la face 1 qui fait 41 %. À droite, la courbe M(t) et, en pointillé, sa série de Taylor arrêtée à K moments : en t = 0,5, elle donne 4,65 avec 2 moments, 7,16 avec 4, 8,07 avec 8.
- C'est LOTUS avec g(x) = etx (l08, notion 5) : t est un nombre fixé, X est aléatoire, et M(t) est un nombre pour chaque t.
- M(0) = E[1] = 1 pour toute loi : c'est la masse totale.
- M(t) peut valoir +∞ pour certains t. L'hypothèse utile, partout dans la leçon : M est finie sur un intervalle ouvert autour de 0, (−h, h).
- Sous cette hypothèse, M(t) = Σk E[Xk] tk/k!, et M détermine la loi : deux variables dont les fonctions génératrices coïncident sur un intervalle autour de 0 ont la même fonction de répartition (théorème d'unicité, admis). C'est l'énoncé exact de « l'empreinte ».
Quatre lois de moyenne 0 et de variance 1 : pile ou face à ±1, trois valeurs −√2, 0, √2 de probabilités ¼, ½, ¼, la normale centrée réduite, et une exponentielle(1) décalée de −1. Près de 0, leurs courbes se confondent avec la parabole 1 + t²/2 (pointillé) : en t = 0,25, elles valent toutes entre 1,031 et 1,038. Déplace t : en t = 1, elles valent 1,543, 1,589 et 1,649, et la dernière est infinie (elle n'existe que pour t < 1). Les deux premiers moments fixent le départ, les suivants séparent les lois. La notion 6 se sert exactement de ce départ commun.
Exemples simples constante, pièce, dé, ±1
- Une constante X = c : M(t) = ect. Pour c = 0, M vaut 1 partout.
- Une pièce, Bernoulli(p) : M(t) = (1 − p) e0 + p et = 1 − p + p et.
- Un dé : M(t) = (et + e2t + … + e6t)/6. M(0,5) = 8,08 ; M(−0,5) = 0,244.
- Pile ou face à ±1, gagner ou perdre 1 € : M(t) = ½ e−t + ½ et = cosh t. Elle resservira dans la preuve du TCL (notion 6).
Preuve pourquoi les moments sont les coefficients de M
L'unicité, elle, est admise. L'idée : une M finie sur (−h, h) se prolonge aux nombres complexes ; en t = is, elle devient la fonction caractéristique E[eisX], et une formule d'inversion, celle de Fourier, redonne la loi à partir de celle-ci. Ici i² = −1, et eiθ = cos θ + i sin θ est un point du cercle de rayon 1 (notion 6, trou 4).
Simuler en Python les sœurs de la log-normale ont les mêmes moments
import numpy as np
# Y ~ N(0, 1) and X = exp(Y) is log-normal. Its "sisters" reweight the density
# of ln X by (1 + a sin(2 pi y)), |a| <= 1.
y = np.linspace(-12, 16, 400_001)
dy = y[1] - y[0]
phi = np.exp(-y**2 / 2) / np.sqrt(2 * np.pi)
for a in (0.0, 0.5, 1.0):
w = phi * (1 + a * np.sin(2 * np.pi * y)) # density of ln X for this sister
assert w.min() >= 0 # still a density
moments = [np.sum(np.exp(k * y) * w) * dy for k in range(5)] # E[X^k]
cdf2 = np.sum(w[y <= np.log(2)]) * dy # P(X <= 2)
m = " ".join(f"{v:.3f}" for v in moments)
print(f"a = {a}: E[X^k], k = 0..4: {m} P(X <= 2) = {cdf2:.4f}")
m = " ".join(f"{np.exp(k * k / 2):.3f}" for k in range(5))
print(f"theory e^(k^2/2): {m}")
a = 0.0: E[X^k], k = 0..4: 1.000 1.649 7.389 90.017 2980.958 P(X <= 2) = 0.7559 a = 0.5: E[X^k], k = 0..4: 1.000 1.649 7.389 90.017 2980.958 P(X <= 2) = 0.7675 a = 1.0: E[X^k], k = 0..4: 1.000 1.649 7.389 90.017 2980.958 P(X <= 2) = 0.7791 theory e^(k^2/2): 1.000 1.649 7.389 90.017 2980.958
Mêmes moments jusqu'à l'ordre 4, et en fait à tous les ordres, mais trois fonctions de répartition différentes : P(X ≤ 2) vaut 0,756, 0,768 ou 0,779.
Où ça casse
- M peut être infinie partout sauf en 0. Loi de Cauchy : aucun moment, M(t) = ∞ pour tout t ≠ 0. Loi de Student à 3 degrés de liberté : variance finie (elle vaut 3), et pourtant M(t) = ∞ pour tout t ≠ 0.
- Tous les moments finis ne suffisent pas. La log-normale X = eY, Y ~ N(0, 1), a E[Xk] = ek²/2 pour tout k, mais E[etX] = ∞ pour tout t > 0 : etey écrase la gaussienne. Ses « sœurs », de densité f(x)[1 + a sin(2π ln x)] avec −1 ≤ a ≤ 1, ont exactement les mêmes moments et des lois différentes (code ci-dessus).
- Un seul point ne dit rien. Toutes les lois ont M(0) = 1. C'est l'égalité sur tout un intervalle autour de 0 qui identifie la loi.
M(t) = E[etX] vaut 1 en 0 et a pour coefficients de Taylor E[Xk]/k!. Finie près de 0, elle identifie la loi ; sans cette condition, même tous les moments ne suffisent pas.
Dériver en 0 donne les moments ; Poisson culture
Brunton 38 · Example of the Moment Generating Function
Brunton insiste : on dérive par rapport à t, pas par rapport à x. x est alors une constante, et dériver fait descendre un x : d/dt etx = x etx, « pas de règle de la chaîne, pas d'intégration par parties ». Dériver k fois fait descendre xk ; en t = 0 l'exponentielle vaut 1, et il reste la moyenne de Xk.
Pièce Bernoulli(p) : M(t) = 1 − p + p et et M′ = M″ = p et, donc E[X] = E[X²] = p et Var = p(1 − p). Poisson, la loi des ampoules qui grillent à un taux donné : M(t) = eλ(et − 1) donne E[X] = λ et E[X²] = λ² + λ, donc Var = λ. Moyenne et variance égales, une propriété « drôle et étrange » selon Brunton.
Sur le graphe de M : la pente en 0 est la moyenne, la dérivée seconde en 0, la courbure, est E[X²].
La courbe M(t), sa tangente en 0 (rouge) et sa parabole en 0 (pointillé), 1 + E[X] t + E[X²] t²/2. Poisson, λ = 2 : la tangente monte de 2 par unité de t, c'est E[X] = 2 ; la parabole a E[X²] = 6 ; Var = 6 − 4 = 2 = λ. Change λ : la variance suit toujours λ. Passe à la pièce : pente p, E[X²] = p aussi, variance p(1 − p), maximale à p = ½.
- M(k) est la dérivée k-ième par rapport à t, évaluée en t = 0 seulement.
- Hypothèse : M finie sur un intervalle ouvert autour de 0. C'est elle qui permet de dériver sous le signe somme ou intégrale, l'étape que Brunton ne justifie pas.
- Raccourci : avec K(t) = ln M(t), K′(0) = E[X] et K″(0) = Var(X) directement. Les dérivées de K en 0 s'appellent les cumulants.
Exemples simples pièce, Poisson, le devoir de Brunton, exponentielle, ln M
- Une pièce Bernoulli(0,3) : E[X] = 0,3, E[X²] = 0,3, Var = 0,3 − 0,09 = 0,21.
- Poisson (Brunton) : M′(0) = λ, M″(0) = λ² + λ, Var = λ. Les mêmes valeurs qu'en l05, sans une seule somme à calculer.
- Le devoir de Brunton. Les dérivées suivantes donnent E[X³] = λ³ + 3λ² + λ et E[X⁴] = λ⁴ + 6λ³ + 7λ² + λ. Pour λ = 2 : 22 et 94.
- L'exponentielle(λ) : M(t) = λ/(λ − t) (notion 3), M′(t) = λ/(λ − t)², M″(t) = 2λ/(λ − t)³. Donc E[T] = 1/λ, E[T²] = 2/λ², Var = 1/λ² : le résultat de l08, notion 8, sans intégration par parties.
- Le raccourci ln M sur Poisson. K(t) = λ(et − 1) : toutes ses dérivées en 0 valent λ. Moyenne λ, variance λ, et même troisième moment centré E[(X − λ)³] = λ.
- En ML : log-sum-exp et softmax. Pour une loi discrète de valeurs xi et de probabilités pi, K(t) = ln Σ pi et xi est un log-sum-exp (p08-02), et K′(t) = Σ xi · softmax(t x + ln p)i : la dérivée d'un log-sum-exp est une moyenne pondérée par un softmax. En t = 0, le softmax redonne les pi, et K′(0) = E[X].
Preuve dériver terme à terme, puis le cas Poisson
Dériver terme à terme une somme infinie, ou sous une intégrale, est permis quand M est finie autour de 0 : c'est l'hypothèse de la formule. Puis Poisson :
Simuler en Python les dérivées de M en 0, par différences finies
import numpy as np
lam, h = 3.0, 1e-3
M = lambda t: np.exp(lam * (np.exp(t) - 1)) # Poisson MGF
d1 = (M(h) - M(-h)) / (2 * h) # slope at 0
d2 = (M(h) - 2 * M(0) + M(-h)) / h**2 # curvature at 0
d3 = (M(2 * h) - 2 * M(h) + 2 * M(-h) - M(-2 * h)) / (2 * h**3)
print(f"M'(0) = {d1:6.3f} theory lam = {lam}")
print(f"M''(0) = {d2:6.3f} theory lam^2 + lam = {lam**2 + lam}")
print(f"M'''(0) = {d3:6.3f} theory lam^3 + 3lam^2 + lam = {lam**3 + 3 * lam**2 + lam}")
print(f"Var = M''(0) - M'(0)^2 = {d2 - d1**2:.3f}")
x = np.random.default_rng(0).poisson(lam, 1_000_000)
print("sample E[X], E[X^2], E[X^3]:", [round(float(np.mean(x**k)), 2) for k in (1, 2, 3)])
mu, sd = x.mean(), x.std()
print(f"skewness {np.mean(((x - mu) / sd)**3):.3f} theory 1/sqrt(lam) = {lam**-0.5:.3f}")
M'(0) = 3.000 theory lam = 3.0 M''(0) = 12.000 theory lam^2 + lam = 12.0 M'''(0) = 57.000 theory lam^3 + 3lam^2 + lam = 57.0 Var = M''(0) - M'(0)^2 = 3.000 sample E[X], E[X^2], E[X^3]: [3.0, 12.0, 56.98] skewness 0.576 theory 1/sqrt(lam) = 0.577
Où ça casse
- M‴(0) est E[X³], pas l'asymétrie. Pour Poisson(2), E[X³] = 22, alors que l'asymétrie, E[((X − μ)/σ)³], vaut 1/√2 = 0,71, et la kurtosis 3 + 1/λ = 3,5 (l08, notion 7).
- Les coefficients de Taylor de M sont E[Xk]/k!, pas E[Xk] : M(t) = 1 + E[X] t + E[X²] t²/2 + E[X³] t³/6 + …
- Sans M finie près de 0, pas de dérivées en 0. La log-normale a tous ses moments, mais M = ∞ à droite de 0 : la formule ne s'applique pas, il faut calculer chaque moment directement.
Dériver en t fait descendre un x : M(k)(0) = E[Xk], d'où E[X] = M′(0) et Var = M″(0) − M′(0)². Pour Poisson, moyenne et variance valent λ.
Les fonctions génératrices de Poisson, de la normale, de l'exponentielle culture
Brunton 37
Brunton calcule trois fonctions génératrices, chacune avec son astuce. Pour Poisson, on reconnaît la série de l'exponentielle : Σ (λet)k/k! = eλet, d'où M(t) = eλ(et − 1). Pour la normale centrée réduite, on complète le carré : etx e−x²/2 = et²/2 e−(x − t)²/2, et le second facteur est une cloche centrée en t. Il reste M(t) = et²/2, « plus simple que la densité » selon Brunton.
Pour l'exponentielle, ∫ etx λe−λx dx = ∫ λe−(λ − t)x dx ne converge que si t < λ : M(t) = λ/(λ − t), infinie au-delà. Avec λ = 1 : M(0,5) = 2, M(0,9) = 10, M(1) = ∞.
Le motif commun : multiplier la loi par etx redonne une loi de la même famille, à une constante près, et cette constante est M(t).
La loi de départ en pointillé, la même multipliée par etx en plein ; l'aire de la courbe pleine, ou la somme des barres pleines, est M(t). L'échelle verticale s'adapte. Poisson(2) : à t = 0,5, les barres pleines ont la forme d'une Poisson(2e0,5) = Poisson(3,30), et leur somme vaut 3,66. Normale : la cloche glisse en t sans se déformer, et son aire vaut et²/2, 1,13 à t = 0,5. Exponentielle(1) : la pente se couche, l'aire vaut 1/(1 − t), 2 à t = 0,5. Pousse t jusqu'à 1 et au-delà : la courbe ne redescend plus, l'aire est infinie.
- Poisson et normale : finies pour tout t. Exponentielle : finie seulement pour t < λ ; le domaine fait partie de la réponse.
- N(μ, σ²) : X = μ + σZ, donc MX(t) = eμt MZ(σt) = eμt + σ²t²/2.
- Brunton note s au lieu de t pour l'exponentielle, parce que t y désigne déjà le temps d'attente. C'est le même objet.
Exemples simples trois valeurs, une normale quelconque, deux vérifications
- Poisson(2) à t = 0,5 : M = e2(e0,5 − 1) = e2 × 0,649 = 3,66.
- N(0, 1) à t = 1 : e0,5 = 1,649. Pour N(3, 4), de moyenne 3 et de variance 4 : M(t) = e3t + 2t².
- Exponentielle(1) : M(0,5) = 2, M(0,9) = 10, M(t) = ∞ pour t ≥ 1.
- Vérification par la notion 2. Pour M(t) = et²/2 : M′(t) = t et²/2 et M″(t) = (1 + t²) et²/2. En 0 : moyenne 0, E[X²] = 1, variance 1. C'est bien N(0, 1).
- Le quatrième moment de la normale, par les coefficients (notion 1) : et²/2 = 1 + t²/2 + t⁴/8 + …, et le coefficient de t⁴ est E[X⁴]/4!. Donc E[X⁴] = 24/8 = 3 : la kurtosis de la normale (l08, notion 7), et le 3 qu'utilise la variance du χ² (l06, notion 4).
Preuve les trois calculs de Brunton
Poisson
Normale centrée réduite
Exponentielle
Simuler en Python la moyenne de etX sur un échantillon, et le bord du domaine
import numpy as np
rng = np.random.default_rng(1)
n, t = 100_000, 0.3
cases = {"Poisson(2)": (rng.poisson(2, n), np.exp(2 * (np.exp(t) - 1))),
"N(0, 1)": (rng.standard_normal(n), np.exp(t**2 / 2)),
"Exp(1)": (rng.exponential(1, n), 1 / (1 - t))}
for name, (x, exact) in cases.items():
est = np.mean(np.exp(t * x))
print(f"{name:10s} mean of e^(tX) = {est:.4f} formula = {exact:.4f}")
# Exp(1) near the edge (t -> 1): Var(e^(tX)) = M(2t) - M(t)^2 is infinite once 2t >= 1
x = rng.exponential(1, (5, n)) # five independent samples
for t in (0.3, 0.9):
est = np.mean(np.exp(t * x), axis=1)
print(f"t = {t}: five estimates {np.round(est, 2)} formula {1 / (1 - t):.2f}")
Poisson(2) mean of e^(tX) = 2.0104 formula = 2.0132 N(0, 1) mean of e^(tX) = 1.0452 formula = 1.0460 Exp(1) mean of e^(tX) = 1.4326 formula = 1.4286 t = 0.3: five estimates [1.42 1.43 1.43 1.43 1.43] formula 1.43 t = 0.9: five estimates [6.22 7.64 8.46 7.22 7.83] formula 10.00
À t = 0,9, M(0,9) = 10 existe, mais e0,9X a une variance infinie, M(1,8) − M(0,9)² : les cinq estimations s'étalent de 6,2 à 8,5, toutes sous la vraie valeur : une bonne part de M(0,9) vient de tirages énormes et rares, que 100 000 tirages contiennent trop peu.
Où ça casse
- Le domaine. Pour l'exponentielle, M n'existe que pour t < λ. Et elle s'estime mal bien avant le bord : la variance de etX vaut M(2t) − M(t)², finie seulement si 2t < λ (code ci-dessus).
- et²/2 est la fonction génératrice de N(0, 1) seulement. Pour N(μ, σ²), c'est eμt + σ²t²/2.
- Une forme fermée n'empêche pas les débordements. Pour un dé, e6t déborde le float32 dès t = 15 et le float64 dès t = 119 : on calcule ln M, un log-sum-exp (notion 2).
Poisson : eλ(et − 1) ; N(0, 1) : et²/2 ; exponentielle : λ/(λ − t), pour t < λ seulement. Pour ces trois lois, multiplier par etx redonne la même famille, et la constante est M(t).
Fonction de répartition plutôt que densité : le pic à 6 pieds culture
Brunton 39 · The Lebesgue Measure in Probability
En 37, Brunton a dit que M détermine la fonction de répartition F(x) = P(X ≤ x), et non la densité. Il l'explique sur un exemple réel : les tailles déclarées des hommes américains, sur les permis de conduire ou les applis de rencontre. La courbe est presque une cloche, avec une pile à exactement 6 pieds (183 cm) : dès 5 pieds 10 et demi, on s'arrondit à 6.
Une pile de gens sur une valeur exacte est une masse ponctuelle. Une densité ne peut pas la porter : sur une classe de largeur w, la barre vaut masse/w, infinie quand w → 0. La fonction de répartition, elle, fait un saut. Dans un modèle jouet (taille vraie N(69, 3²) pouces ; la moitié de ceux entre 70,5 et 72 déclarent 72 ; Brunton ne donne aucun chiffre), 7,5 % déclarent 72 pouces, et F passe de 0,766 juste avant 72 à 0,841 en 72.
D'où le slogan de Brunton : intégrer lisse, dériver abîme. F, l'intégrale, existe toujours ; la densité, sa dérivée, pas toujours.
Les tailles déclarées du modèle : taille vraie normale (pointillé), et la moitié de ceux qui mesurent entre 70,5 et 72 pouces déclarent 72, soit 6 pieds. Les barres sont en échelle de densité : hauteur = part des hommes dans la classe / largeur. Réduis la largeur des classes : les barres ordinaires se calent sur la courbe, de sommet 0,133, et la barre de 72 monte comme 0,075/w + 0,06, la hauteur ordinaire autour de 72, creux compris : 0,21 à w = 0,5, 0,36 à 0,25, 0,81 à 0,1. Élargis à 2 pouces : le pic disparaît, noyé avec le creux juste en dessous.
- F existe pour toute variable : croissante, de 0 à 1, continue à droite. La densité f = F′ n'existe que si F est assez lisse.
- F(a−) est la limite de F juste avant a. Un saut de F en a est une masse P(X = a) > 0 ; une variable à densité a P(X = a) = 0 partout.
- Une loi mixte, cloche plus pile : F = (1 − m) Fc + m · 𝟙{x ≥ a}, avec m la masse ponctuelle et Fc une fonction de répartition continue.
- C'est sur F que portent l'unicité de la notion 1 et la conclusion du TCL, P(Zn ≤ x) → Φ(x) : la convergence en loi (convergence in distribution).
Modèle jouet, pas des données : taille vraie normale de moyenne 69 pouces (175 cm) et d'écart-type 3 pouces (7,6 cm). En haut, la partie continue des tailles déclarées : un creux entre 70,5 et 72 pouces, ceux qui sont partis à 72 ; la flèche est la masse ponctuelle, qu'aucune hauteur de courbe ne représente. En bas, la fonction de répartition : lisse partout, sauf un saut en 72 égal à la masse. Monte la part arrondie, celle de la zone qui déclare 72 : à ½, le saut vaut 7,5 %, de 0,766 à 0,841 ; à 1, il vaut 15 % et F reste plate sur tout le creux. F(72) reste 0,841 = Φ(1) : l'arrondi déplace des gens sans changer qui est sous 6 pieds.
Exemples simples dé, tailles, somme de pièces, ReLU
- Un dé. F est un escalier de six marches de ⅙, en 1, 2, …, 6. Pas de densité du tout : toute la masse est ponctuelle.
- Les tailles déclarées (modèle) : P(70,5 ≤ H < 72) = 0,150 ; la moitié s'arrondit, masse 0,075 en 72 ; F(72−) = 0,691 + 0,075 = 0,766 et F(72) = 0,841.
- Une somme de pièces. Pour n pièces à ±1, Sn ne prend que les valeurs −n, −n + 2, …, n : sa fonction de répartition est un escalier, sans densité, pour tout n. Celle de la somme standardisée Zn = Sn/√n, un escalier elle aussi, converge pourtant vers Φ, qui a une densité. Le TCL ne peut porter que sur F (figure 3, notion 6).
- En ML : la ReLU. Si la pré-activation suit N(0, 1), la sortie max(0, Z) vaut exactement 0 avec probabilité ½ : une masse en 0, plus une demi-cloche. F saute de 0 à ½ en 0. De même, un temps de réponse coupé par un délai d'expiration (timeout) de 30 s empile toutes les requêtes lentes à exactement 30 s.
Preuve le saut est la masse, et une densité n'a pas de masse
Une variable qui a une masse en a n'a donc pas de densité. Une densité « avec un pic » est ce que les physiciens appellent une fonction delta : un objet que la théorie de la mesure, celle de Lebesgue qui donne son titre à la vidéo, sait manier, mais qui n'est pas une fonction. Brunton ne fait que la nommer.
Simuler en Python 200 000 tailles déclarées
import numpy as np
rng = np.random.default_rng(6)
h = rng.normal(69, 3, 200_000) # true heights, inches
zone = (h >= 70.5) & (h < 72) # from 5'10.5" to just under 6'
bump = zone & (rng.random(h.size) < 0.5) # half of them say "6 feet"
r = np.where(bump, 72.0, h) # reported heights
print(f"share reporting exactly 72 in: {np.mean(r == 72):.4f}")
for w in (2, 1, 0.5, 0.1):
edges = 72 + w * (np.arange(-150, 151) - 0.5) # bins centred on 72 (bin 150)
dens, _ = np.histogram(r, edges, density=True)
other = np.delete(dens, 150).max()
print(f"bin width {w:>3}: bar at 72 = {dens[150]:.3f} tallest other = {other:.3f}")
F = lambda x: np.mean(r <= x) # empirical CDF
print(f"F(71.999) = {F(71.999):.4f} F(72) = {F(72):.4f} jump = {F(72) - F(71.999):.4f}")
share reporting exactly 72 in: 0.0749 bin width 2: bar at 72 = 0.094 tallest other = 0.124 bin width 1: bar at 72 = 0.133 tallest other = 0.134 bin width 0.5: bar at 72 = 0.210 tallest other = 0.134 bin width 0.1: bar at 72 = 0.811 tallest other = 0.137 F(71.999) = 0.7668 F(72) = 0.8417 jump = 0.0749
La hauteur de la classe de 72 dépend de la largeur choisie, celle des autres non : le signe qu'il n'y a pas de densité en 72. Le saut de la fonction de répartition, lui, ne dépend d'aucun choix.
Où ça casse
- En Europe, un pic à 1,80 m ? Le mécanisme est général : dans toute donnée auto-déclarée, les réponses s'entassent sur des valeurs rondes (en anglais heaping, ou digit preference). Aucun chiffre n'est vérifié ici pour un pic à 1,80 m précisément. Deux faits mesurés. En Suisse, dans les enquêtes sur la santé de 1992 à 2002 (47 192 personnes), les francophones et les italophones déclarent plus souvent une taille finissant par 0 ou 5, les germanophones un chiffre pair autre que 0, soit 2, 4, 6 ou 8 (Faeh et Bopp, BMC Public Health, 2008). En France, l'Étude nationale nutrition santé trouve une taille déclarée supérieure de 0,79 cm en moyenne à la taille mesurée (629 adultes ; BEH 2010, n° 8). 1,80 m finit par 0 : un candidat naturel au pic, à vérifier sur des données.
- Un histogramme, ou une densité estimée par lissage, étale le pic. Selon la largeur, il disparaît (w = 2) ou devient une bosse : l'estimateur suppose une densité qui n'existe pas.
- P(X = a) = 0 pour une variable à densité. P(taille vraie = 180 cm exactement) = 0 ; P(taille déclarée = 180 cm) ne l'est pas.
Une masse ponctuelle n'a pas de densité ; la fonction de répartition la montre par un saut égal à cette masse. C'est pourquoi l'unicité de M et le TCL portent sur F.
Somme indépendante : produit des fonctions génératrices culture
Brunton 40 · Additive Property of the Moment Generating Function
Brunton donne la propriété dont la preuve du TCL a besoin : si X et Y sont indépendantes, la fonction génératrice de X + Y est le produit des deux. Deux faits se combinent. L'exponentielle change une somme en produit, et(x + y) = etx ety ; l'indépendance change l'espérance d'un produit en produit des espérances.
Deux pièces Bernoulli(½) : (½ + ½et)² = ¼ + ½et + ¼e2t. Le coefficient de ekt est P(X + Y = k) : ¼, ½, ¼. Deux dés : le produit développe 36 termes et(x + y)/36, et ceux de même somme se regroupent. Six termes ont x + y = 7, donc P(S = 7) = 6/36.
Brunton fait le lien avec Laplace : en équations différentielles, la transformée change la convolution de deux signaux en produit. Ici, la loi d'une somme est la convolution des deux lois, pénible à calculer, et M la change en produit.
Le produit MX(t) · MY(t) de deux dés développe 36 termes et(x + y)/36, un par case (x, y) ; chaque case porte sa somme x + y. Regroupe par x + y : les cases de même somme forment une colonne, et la hauteur de la colonne est 36 × P(S = s), le triangle 1, 2, …, 6, …, 1. Puis Y = X : seules les six cases de la diagonale gardent une masse, ⅙ chacune, la somme ne prend que des valeurs paires, et le produit ne marche plus. En t = 0,2, M2X(0,2) vaut 5,07 au lieu de MX(0,2)² = 4,55.
- L'indépendance sert une seule fois, pour factoriser E[etX etY]. Les deux lois peuvent être différentes, Brunton y insiste.
- La même loi ne sert qu'à écrire MX₁(t) ⋯ MXₙ(t) = M(t)n.
- L'égalité vaut pour tout t où MX et MY sont finies.
- Avec l'unicité (notion 1), reconnaître le produit, c'est reconnaître la loi de la somme.
Exemples simples pièces, binomiale, flux de requêtes, normales, cumulants
- Deux pièces : ¼, ½, ¼, la binomiale(2, ½).
- n pièces Bernoulli(p) : (1 − p + p et)n = Σk C(n, k) pk (1 − p)n − k ekt, par le binôme de Newton (l02). Le coefficient de ekt est la loi binomiale (l04).
- Deux Poisson indépendantes : eλ₁(et − 1) · eλ₂(et − 1) = e(λ₁ + λ₂)(et − 1), la fonction génératrice de Poisson(λ₁ + λ₂). En ML : deux services envoient des requêtes à la même API, 2 et 3 par seconde en moyenne, indépendamment. Le flux fusionné est Poisson(5) : P(aucune requête dans une seconde) = e−5 = 0,0067 (code). C'est la superposition des processus de Poisson (l05, notion 6).
- Deux normales indépendantes : eμ₁t + σ₁²t²/2 · eμ₂t + σ₂²t²/2 = e(μ₁ + μ₂)t + (σ₁² + σ₂²)t²/2. La somme est N(μ₁ + μ₂, σ₁² + σ₂²).
- Avec le logarithme, le produit devient une somme : ln MX+Y = ln MX + ln MY. Les dérivées de ln M en 0, les cumulants (notion 2), s'additionnent donc. Le premier est la moyenne, le deuxième la variance, le troisième le moment centré d'ordre 3 : pour une somme de pertes indépendantes, ces trois-là s'additionnent. D'où Var(X + Y) = Var X + Var Y sous indépendance (l09, notion 2).
Preuve l'exponentielle, puis l'indépendance
La version « soigneuse » que Brunton évoque sans l'écrire, en discret :
Pour n variables, on recommence : MSn = MSn−1 · MXn, puisque Xn est indépendante de Sn−1 : il faut l'indépendance mutuelle, deux à deux ne suffit pas (l03, notion 9). X et Y à ±1, indépendantes, et Z = XY sont indépendantes deux à deux, et pourtant MX+Y+Z(1) = 5,30 contre cosh(1)³ = 3,67.
Simuler en Python deux flux de requêtes fusionnés
import numpy as np
rng = np.random.default_rng(2)
n = 1_000_000 # one-second windows
a = rng.poisson(2.0, n) # requests from service A
b = rng.poisson(3.0, n) # requests from service B, independent
s = a + b # merged stream
print(f"merged: mean {s.mean():.3f} var {s.var():.3f} P(0) {np.mean(s == 0):.5f}")
print(f"Poisson(5): mean 5 var 5 P(0) {np.exp(-5):.5f}")
t = 0.3
m = lambda x: np.mean(np.exp(t * x)) # empirical MGF at t
exact = np.exp(5 * (np.exp(t) - 1))
print(f"M_A * M_B = {m(a) * m(b):.4f} M_(A+B) = {m(s):.4f} exact = {exact:.4f}")
print(f"dependent, B = A: M_(2A) = {m(2 * a):.4f} but M_A^2 = {m(a)**2:.4f}")
merged: mean 5.005 var 4.998 P(0) 0.00661 Poisson(5): mean 5 var 5 P(0) 0.00674 M_A * M_B = 5.7599 M_(A+B) = 5.7590 exact = 5.7505 dependent, B = A: M_(2A) = 5.1836 but M_A^2 = 4.0575
Où ça casse
- Sans indépendance, le produit peut être faux. Y = X : M2X(t) = MX(2t). Pour deux dés à t = 0,2 : 5,07 contre MX(0,2)² = 4,55.
- La réciproque est fausse. MX+Y = MX MY n'implique pas l'indépendance. X et Y à valeurs dans {0, 1, 2}, de loi jointe, en dix-huitièmes :
Les marges sont uniformes, et la loi de X + Y est 1, 2, 3, 2, 1 neuvièmes, exactement comme sous indépendance : MX+Y = MX MY. Pourtant P(X = 0, Y = 1) = 3/18 = 1/6 ≠ 1/9. Le produit est une conséquence de l'indépendance, pas un test.y = 0 y = 1 y = 2 x = 0 2 3 1 x = 1 1 2 3 x = 2 3 1 2 - La famille ne se conserve pas toujours. Deux exponentielles(λ) indépendantes donnent (λ/(λ − t))², qui n'est pas de la forme λ′/(λ′ − t) : la somme suit une loi Gamma(2, λ) (l05, notion 7), pas une exponentielle.
- Une somme n'est pas un mélange. « X avec probabilité ½, Y sinon » a pour fonction génératrice ½MX + ½MY, pas le produit. Les tailles de la notion 4, cloche plus pile, sont un mélange.
X et Y indépendantes : MX+Y = MX · MY ; i.i.d. : MSn = Mn. L'exponentielle change la somme en produit, l'indépendance factorise l'espérance ; la réciproque est fausse.
La preuve du TCL en six étapes, avec ses trous culture
Brunton 44 · Proof of the Central Limit Theorem
La preuve de Brunton enchaîne tout ce qui précède. Les Xi sont i.i.d., de moyenne 0 et de variance σ², et Zn = Sn/(σ√n) est leur somme standardisée. Il suffit de montrer que MZn(t) tend vers et²/2, la fonction génératrice de N(0, 1).
Le cœur tient en une ligne. Le produit (notion 5) donne MZn(t) = M(t/(σ√n))n. Près de 0, M(u) ≈ 1 + σ²u²/2 (notion 2 : moyenne 0, E[X²] = σ²). Donc MZn(t) ≈ (1 + t²/(2n))n → et²/2. Les moments au-delà du deuxième disparaissent dans la limite : c'est pour ça que la loi de départ ne compte pas.
Pour pile ou face à ±1 (σ = 1), M = cosh, et MZn(1) = cosh(1/√n)n vaut 1,543 pour n = 1, 1,635 pour n = 10, 1,647 pour n = 100, contre e0,5 = 1,649. La preuve dépliable donne les six étapes, et quatre trous.
En rouge la cible et²/2, en bleu MZn(t) = M(t/√n)n. Pile ou face à ±1 : à n = 1 la courbe est cosh t, déjà proche près de 0 ; monte n : en t = 1, elle passe de 1,543 à 1,635 (n = 10), puis 1,647 (n = 100), contre 1,649. Exponentielle centrée, Exp(1) − 1, asymétrique : à n = 1 elle n'existe que pour t < 1 et devient infinie au trait vertical t = √n ; ce domaine s'élargit comme √n, et l'approche est plus lente, 1,895 à n = 10 et 1,709 à n = 100.
- Indépendance : le produit, étape 2. Même loi : la puissance n.
- Moyenne 0 : le terme en t disparaît, étape 3. Si E[Xi] = μ, on applique la preuve à Xi − μ : Zn = (Sn − nμ)/(σ√n) = (X̄n − μ)/(σ/√n), l'énoncé de l11, notion 1.
- Variance finie : le terme en t² existe et ne dépend que de σ².
- Hypothèse en plus, propre à cette preuve : M finie près de 0. Le théorème est vrai sans elle (où ça casse).
- La conclusion porte sur les fonctions de répartition (notion 4) : une convergence en loi.
La fonction de répartition de Zn = Sn/√n pour n pièces à ±1 (escalier bleu) et Φ (rouge). Zn est discrète : elle n'a pas de densité, quel que soit n. Monte n : les marches rétrécissent, et le plus grand écart vertical entre l'escalier et Φ tombe de 0,341 (n = 1) à 0,123 (n = 10), 0,040 (n = 100) et 0,020 (n = 400), à peu près 0,4/√n. C'est cette convergence que démontre la preuve, une fois complétée par le théorème de continuité.
Exemples simples la preuve en chiffres, pourquoi √n, une loi asymétrique, μ ≠ 0
- Pile ou face à ±1, en chiffres. M = cosh, σ = 1. À t = 1, l'étape 6 sans εn, (1 + 0,5/n)n, vaut 1,629 pour n = 10 et 1,647 pour n = 100 ; la vraie MZn(1) vaut 1,635 et 1,647 : le terme négligé εn pèse de moins en moins.
- Pourquoi diviser par √n. Sans normalisation, MSn(t) = cosh(t)n → ∞ pour tout t ≠ 0 : la somme s'étale sans limite. En divisant par n, c'est-à-dire pour la moyenne X̄n, cosh(t/n)n → 1, la fonction génératrice de la constante 0 : c'est la loi des grands nombres (l10, notion 4). √n est la seule échelle où la limite n'est ni plate ni infinie.
- Une loi asymétrique, l'exponentielle centrée. Le terme négligé, n · εn, vaut 0,160 à n = 10, 0,037 à n = 100, 0,011 à n = 1 000, à peu près t³/(3√n) pour n grand (0,160 contre 0,105 à n = 10) : il vient du troisième moment, et c'est l'asymétrie qui ralentit la convergence (l11, notion 2).
- μ ≠ 0, le devoir de Brunton : appliquer la preuve à Yi = Xi − μ, de moyenne 0 et de variance σ². Rien d'autre ne change.
Preuve les six étapes de Brunton, la règle de chacune, puis ses quatre trous
Les quatre trous.
- Unicité au lieu de continuité. L'unicité (notion 1) dit que deux lois de même M sont égales ; elle ne suffit pas ici, puisque MZn n'est jamais égale à et²/2, elle s'en approche. Il faut un théorème de continuité : si Mn(t) → M(t) sur un intervalle autour de 0, et M est la fonction génératrice d'une loi, alors les fonctions de répartition convergent, en tout point où la limite est continue (Curtiss, 1942). Ce théorème s'appuie sur l'unicité pour identifier la limite.
- Le reste. Écrire le reste « ε d'ordre t³ » suppose un troisième moment. C'est acquis ici, puisque M est finie près de 0. Avec seulement une variance finie (trou 4), on sait seulement que le reste est négligeable devant u², et cela suffit.
- n · εn → 0, pas seulement εn → 0. Dans (1 + t²/(2n) + εn)n, un εn de l'ordre de 1/n changerait la limite. Il ne suffit donc pas que εn → 0, il faut savoir à quelle vitesse. C'est vrai ici : n · εn = (t²/σ²) · r(u)/u², qui tend vers 0 avec u.
- L'hypothèse ajoutée : M finie près de 0. Elle exclut des lois de variance finie pour lesquelles le TCL est vrai, comme la loi de Student à 3 degrés de liberté. La preuve générale refait les mêmes six étapes avec la fonction caractéristique φ(t) = E[eitX], qui existe toujours : i² = −1, et eiθ = cos θ + i sin θ est un point du cercle de rayon 1, d'où |eitX| = 1 et une espérance toujours finie. Pour N(0, 1), φ(t) = M(it) = e−t²/2. On obtient φZn(t) → e−t²/2, et le théorème de continuité de Lévy conclut. Seule la variance finie sert alors.
Simuler en Python MZn(1) vers e0,5, et le terme négligé
import numpy as np
t = 1.0
coin = lambda u: np.cosh(u) # X = +1 or -1: mean 0, sigma 1
cexp = lambda u: np.exp(-u) / (1 - u) # Exp(1) - 1: mean 0, sigma 1, skewed
print(" n coin M_Zn(1) exp M_Zn(1) n * eps_n (exp)")
for n in (2, 10, 100, 1000, 10_000):
u = t / np.sqrt(n) # step 4: M at t / (sigma sqrt n)
eps = cexp(u) - 1 - t**2 / (2 * n) # step 5: left after 1 + t^2/(2n)
print(f"{n:6d} {coin(u)**n:.5f} {cexp(u)**n:.5f} {n * eps:.5f}")
print(f"limit e^(t^2/2) = {np.exp(t**2 / 2):.5f}")
# Monte Carlo: standardized sums of 100 exponentials
rng = np.random.default_rng(3)
z = (rng.exponential(1, (200_000, 100)).sum(axis=1) - 100) / np.sqrt(100)
print(f"E[e^Z] = {np.mean(np.exp(z)):.4f} (exact {cexp(0.1)**100:.4f})")
print(f"P(Z <= 1) = {np.mean(z <= 1):.4f} (Phi(1) = 0.8413)")
n coin M_Zn(1) exp M_Zn(1) n * eps_n (exp)
2 1.58909 2.83398 0.86688
10 1.63539 1.89464 0.15989
100 1.64735 1.70924 0.03749
1000 1.64858 1.66662 0.01093
10000 1.64871 1.65427 0.00337
limit e^(t^2/2) = 1.64872
E[e^Z] = 1.7160 (exact 1.7092)
P(Z <= 1) = 0.8410 (Phi(1) = 0.8413)
La pièce converge vite, l'exponentielle lentement, et n · εn décroît comme 1/√n : à n = 100, il vaut 0,037, près de 1/(3√100) = 0,033.
Où ça casse
- Pas de fonction génératrice : preuve inapplicable, TCL intact. Student à 3 degrés de liberté : variance 3, M(t) = ∞ pour t ≠ 0. La somme standardisée devient normale quand même ; la preuve par la fonction caractéristique le montre.
- Variance infinie : plus de TCL classique. Pour une loi de Cauchy, φ(t) = e−|t| et φ(t/n)n = e−|t| : la moyenne de n variables de Cauchy est encore une Cauchy, quel que soit n (l11, notion 4).
- Sans indépendance, l'étape 2 tombe. MSn n'est plus forcément Mn (notion 5), et, s'il y a corrélation, la variance de la somme n'est plus nσ² (l09, notion 2).
- Pour n fixé, c'est une approximation. Sn ≈ N(nμ, nσ²), en général pas « = » (exact seulement si les Xi sont normales) ; pour des pièces, Sn est discrète. La vitesse dépend de l'asymétrie (exemple 3).
MZn(t) = M(t/(σ√n))n = (1 + t²/(2n) + εn)n → et²/2 : seules la moyenne et la variance survivent. La preuve demande en plus M finie près de 0, n · εn → 0 et un théorème de continuité ; la fonction caractéristique E[eitX] lève la première hypothèse.
Résumé
- M(t) = E[etX] ; ses coefficients de Taylor sont E[Xk]/k! ; finie près de 0, elle détermine la loi.
- Les moments seuls ne déterminent pas toujours la loi : la log-normale a des sœurs aux mêmes moments.
- M(k)(0) = E[Xk] et Var = M″(0) − M′(0)² ; pour Poisson, moyenne = variance = λ.
- Poisson : eλ(et − 1) ; N(0, 1) : et²/2 ; exponentielle : λ/(λ − t), pour t < λ.
- Une masse ponctuelle n'a pas de densité, F la montre par un saut : l'unicité et le TCL portent sur F.
- Indépendance ⇒ MX+Y = MX MY ; la réciproque est fausse.
- TCL : M(t/(σ√n))n → et²/2. Les trous : M supposée finie, n · εn → 0 à montrer, continuité plutôt qu'unicité.
Chaîne verbalisée — une prise, à voix haute
- Qu'est-ce que M(t), et que vaut M(0) ?La moyenne de etX, un nombre pour chaque t fixé ; M(0) = E[1] = 1 pour toute loi.
- Comment obtient-on E[X] et Var(X) à partir de M ?E[X] = M′(0), E[X²] = M″(0), Var = M″(0) − M′(0)² : dériver en t fait descendre un x, et e⁰ = 1.
- Les moments déterminent-ils toujours la loi ?Non : la log-normale partage tous ses moments avec d'autres lois. Si M est finie sur un intervalle autour de 0, oui.
- Pourquoi l'unicité parle-t-elle de la fonction de répartition, et pas de la densité ?Une loi peut avoir des masses ponctuelles, comme les tailles déclarées à 6 pieds : pas de densité, mais F existe toujours, avec un saut égal à la masse.
- Que vaut MX+Y, et sous quelle hypothèse ?MX · MY, si X et Y sont indépendantes : et(x+y) = etx ety, puis l'espérance du produit est le produit des espérances.
- Résume la preuve du TCL en une ligne, puis donne un de ses trous.MZn(t) = M(t/(σ√n))n = (1 + t²/(2n) + εn)n → et²/2. Trous : M supposée finie (la fonction caractéristique l'évite), n · εn → 0 à montrer, et un théorème de continuité au lieu de l'unicité.
Où ça sert ensuite
stats::mgf : les six notions sont de culture, cette leçon ne donne pas de carte. Elle sert de référence quand une carte du TCL (l11) demande « pourquoi ».