- L'espérance est un centre de masse. Les probabilités sont des masses posées sur une règle ; E[X] est le point où la règle tient en équilibre (l08, notion 1). Elle est linéaire sans aucune hypothèse : E[aX + bY] = aE[X] + bE[Y] (notion 3).
- La variance est l'inertie autour du centre. Var(X) = E[(X − μ)²] : une valeur deux fois plus loin compte quatre fois plus (l08, notion 6). Un facteur sort au carré : Var(aX + b) = a² Var(X) (notion 9).
- La variance d'une somme a un terme croisé. Var(X + Y) = Var X + Var Y + 2 Cov(X, Y) ; l'indépendance annule la covariance (l09, notion 2). Cov(X, Y) = ρ σX σY (notion 4).
- Variable, réalisation, paramètre. X est la règle qui attache un nombre au tirage, x le nombre sorti ce jour-là, μ un nombre fixe de la loi (l04, notion 1).
- Le dé. μ = 3,5, σ² = 35/12 = 2,917, σ = 1,708.
La leçon
Markov : la bascule, et la borne atteinte culture
Brunton 33 · Markov's Inequality in Probability: First-Order Estimates
Brunton énonce l'inégalité, puis la fait sentir sur un exemple. Une variable X ne prend que des valeurs positives ou nulles, et sa moyenne vaut 10. Peut-elle valoir 20 ou plus, plus d'une fois sur deux ? Non : P(X ≥ 20) ≤ 10/20 = ½. C'est l'inégalité de Markov, et elle n'utilise que la moyenne.
L'image est la règle en équilibre de l08 : la moyenne est le point d'appui, en 10. Une masse posée en 20 fait pencher la règle à droite ; il faut un contrepoids à gauche de 10. Mais le contrepoids ne peut pas descendre sous 0, puisque X ≥ 0. Avec une masse ½ en 20, le contrepoids ½ doit être tout entier en 0 : c'est le cas limite, la loi {0, 20}, qui atteint la borne. Au-delà de ½, plus rien ne peut équilibrer : la règle bascule.
La règle tient sur le point d'appui rouge, la moyenne 10. Monte la masse p posée en 20 : le contrepoids 1 − p glisse vers 0 pour garder l'équilibre, à la position (10 − 20p)/(1 − p) : 6,67 pour p = 0,25, 3,33 pour p = 0,4. À p = 0,5 il touche 0 : c'est la loi {0, 20}, la borne de Markov est atteinte. Au-delà, il faudrait le poser sous 0 (cercle pointillé), ce que X ≥ 0 interdit : posé en 0, il ne suffit plus, la moyenne dépasse 10 et la règle bascule.
- X ≥ 0 est l'hypothèse du contrepoids. Si X peut être négative, une masse loin à gauche équilibre n'importe quelle masse à droite, et l'inégalité tombe (où ça casse).
- a > 0 : on divise par a. La borne ne dit quelque chose que pour a > E[X] ; pour a ≤ E[X] elle vaut au moins 1.
- Seule la moyenne sert, aucune forme de loi n'est supposée. Brunton parle d'estimation « d'ordre 1 » : elle n'utilise que le premier moment.
En rouge, la borne de Markov E[X]/a = 10/a ; en bleu, la vraie P(X ≥ a) de la loi choisie. Les trois lois ont la moyenne 10 et ne prennent que des valeurs ≥ 0. Déplace a : le bleu reste toujours sous le rouge. L'exponentielle donne 0,135 en a = 20, presque quatre fois moins que la borne 0,5. La loi à deux points {0, 20} touche l'hyperbole en a = 20 : sans autre hypothèse, la borne ne peut pas être améliorée. Sous a = 10, la borne dépasse 1 et ne dit rien.
Exemples simples Brunton, deux points, exponentielle, uniforme, une perte
- L'exemple de Brunton. E[X] = 10 : P(X ≥ 20) ≤ 10/20 = 0,5 ; P(X ≥ 50) ≤ 10/50 = 0,2.
- La loi à deux points. ½ en 0, ½ en 20 : E[X] = 10 et P(X ≥ 20) = ½, l'égalité. Plus généralement, une masse E[X]/a en a et le reste en 0 atteint la borne pour tout a ≥ E[X].
- L'exponentielle de moyenne 10. P(X ≥ a) = e−a/10. En a = 20 : e−2 = 0,135, contre une borne de 0,5. En a = 50 : e−5 = 0,0067, contre 0,2. Quand la queue décroît vite, la borne est lâche.
- L'uniforme sur [0, 20]. Moyenne 10, P(X ≥ 15) = 0,25, contre une borne de 0,667.
- Une perte de modèle. L'entropie croisée d'un exemple est ≥ 0. Si sa moyenne sur le jeu de test (test set) vaut 0,3, Markov appliqué à la loi empirique des exemples dit : au plus 30 % des exemples ont une perte ≥ 1, c'est-à-dire donnent une probabilité ≤ e−1 ≈ 0,37 à la bonne classe.
Preuve la chaîne de Brunton, et la version en une ligne
On divise par a > 0. En continu, mêmes lignes avec des intégrales de 0 à ∞. Version en une ligne : pour toute issue, a · 1{X ≥ a} ≤ X (si X ≥ a, c'est a ≤ X ; sinon c'est 0 ≤ X, encore grâce à X ≥ 0), puis on prend l'espérance des deux côtés.
Quand y a-t-il égalité ? Il faut que les deux « ≥ » soient des égalités : toute la masse sous a est en 0 (premier « ≥ »), toute la masse de droite est exactement en a (second « ≥ »). C'est la loi à deux points {0, a}.
Simuler en Python deux lois qui respectent la borne, une qui la viole
import numpy as np
rng = np.random.default_rng(0)
n, a = 1_000_000, 20
laws = {
"exponential, mean 10": rng.exponential(10, n),
"two points {0, 20}": rng.choice([0, 20], size=n),
"{-30, 20}, P(20) = 0.8": rng.choice([-30, 20], p=[0.2, 0.8], size=n), # X < 0: Markov fails
}
for name, x in laws.items():
print(f"{name:23s} mean {x.mean():5.2f} P(X >= 20) {np.mean(x >= a):.4f}"
f" E[X]/a {x.mean() / a:.4f}")
exponential, mean 10 mean 10.00 P(X >= 20) 0.1353 E[X]/a 0.4999
two points {0, 20} mean 10.01 P(X >= 20) 0.5006 E[X]/a 0.5006
{-30, 20}, P(20) = 0.8 mean 10.00 P(X >= 20) 0.7999 E[X]/a 0.4998
Où ça casse
- X peut être négative. X vaut −30 ou 20, avec P(X = 20) = 0,8 : E[X] = 0,8 × 20 − 0,2 × 30 = 10, mais P(X ≥ 20) = 0,8, au-dessus de la « borne » 0,5 (code). Le contrepoids posé en −30 équilibre une masse bien plus grosse.
- Pour a ≤ E[X], la borne vaut au moins 1 : elle ne dit rien.
- Elle est lâche pour les lois usuelles : 0,135 contre 0,5 pour l'exponentielle. Son rôle n'est pas numérique : elle est la brique de Chebyshev (notion 2), qui est celle de la loi des grands nombres (notion 4).
Pour X ≥ 0 et a > 0, P(X ≥ a) ≤ E[X]/a : la moyenne seule borne la queue droite, et la loi à deux points {0, a} atteint la borne.
Chebyshev : au plus 1/k² au-delà de kσ outil
Brunton 34 · Chebyshev's Inequality in Probability: Second-Order Estimates
Markov ne regarde qu'un côté, et que la moyenne. Chebyshev regarde l'écart à μ des deux côtés et se sert de la variance : c'est l'estimation « d'ordre 2 » de Brunton. Il l'obtient en appliquant Markov à l'écart au carré (X − μ)², qui est ≥ 0 et dont la moyenne est σ².
L'image est celle de l'inertie (l08, notion 6). Une masse posée à kσ du centre apporte k²σ² à la variance, par unité de masse. Si plus d'une fraction 1/k² de la loi était à kσ du centre ou plus loin, ces masses suffiraient à dépasser σ². Donc à k = 2 : au plus un quart de la masse hors de μ ± 2σ, quelle que soit la loi. Une normale n'en met que 4,6 %. Une loi construite exprès, ⅛ en μ − 2σ, ⅛ en μ + 2σ et ¾ en μ, en met exactement 25 %.
L'axe compte les écarts à μ en unités de σ ; en rouge, ce qui tombe hors de ±kσ. À k = 2, la normale n'y met que 4,6 % de sa masse, la borne autorise 25 %. Le dé : à k = 1, les faces 1 et 6, soit 33 % (la borne vaut 100 %) ; dès k = 1,5, plus rien, la face la plus éloignée étant à 2,5 = 1,46σ de 3,5. La loi à trois points suit le curseur et met toujours exactement 1/k² hors de ±kσ : aucune borne valable pour toutes les lois ne peut faire mieux.
- μ = E[X] et σ² = Var(X), qui doit être finie. Aucune hypothèse de forme : symétrique ou non, discrète ou continue, « avec des bosses bizarres », dit Brunton.
- Lue à l'envers : P(|X − μ| < kσ) ≥ 1 − 1/k². Au moins 75 % de la masse dans ±2σ, au moins 88,9 % dans ±3σ.
- Il faut k > 1 pour une borne utile ; pour k ≤ 1 elle vaut au moins 1.
Exemples simples k = 2 et 3, le dé, la loi qui atteint la borne, une alerte
- k = 2 : au plus 25 % hors de ±2σ ; une normale en met 4,55 %. k = 3 : au plus 11,1 % ; une normale en met 0,27 %.
- Le dé. μ = 3,5, σ² = 2,917. Avec a = 2,5 : P(|X − 3,5| ≥ 2,5) ≤ 2,917/6,25 = 0,467. La vraie valeur : les faces 1 et 6, soit 1/3.
- La loi à trois points. X = μ ± kσ avec probabilité 1/(2k²) chacun, X = μ sinon. Sa variance vaut 2 × 1/(2k²) × k²σ² = σ², et P(|X − μ| ≥ kσ) = 1/k² exactement. À k = 2 : ⅛, ¾, ⅛.
- D'autres formes. Uniforme, k = 1,5 : 13,4 % hors de la bande (borne 44 %). Exponentielle de moyenne 1, k = 2 : e−3 = 5,0 % (borne 25 %).
- Une alerte de surveillance en production. Une métrique de production de moyenne et d'écart-type connus, alerte au-delà de ±3σ. Sans hypothèse sur sa loi, jusqu'à 11 % des points normaux peuvent déclencher l'alerte ; si elle est normale, 0,27 %. Le « 3σ » des tableaux de bord suppose une forme.
Preuve Markov appliqué à l'écart au carré
Avec a = kσ : σ²/(k²σ²) = 1/k². Égalité : Markov est atteint quand Y ne prend que les valeurs 0 et b, c'est-à-dire X = μ ou |X − μ| = a. Ce sont les lois à trois points de l'exemple 3.
Simuler en Python la part hors de ±2σ pour cinq lois
import numpy as np
rng = np.random.default_rng(0)
n, k = 1_000_000, 2
m = 1 / (2 * k**2) # three-point law built to attain the bound
laws = { # name: (sample, true mean, true sd)
"normal": (rng.normal(0, 1, n), 0, 1),
"uniform": (rng.uniform(0, 1, n), 0.5, np.sqrt(1 / 12)),
"exponential": (rng.exponential(1, n), 1, 1),
"die": (rng.integers(1, 7, n), 3.5, np.sqrt(35 / 12)),
"three-point": (rng.choice([-k, 0, k], p=[m, 1 - 2 * m, m], size=n), 0, 1),
}
print(f"Chebyshev bound for k = {k}: {1 / k**2:.4f}")
for name, (x, mu, sd) in laws.items():
print(f"{name:12s} P(|X - mu| >= 2 sd) = {np.mean(np.abs(x - mu) >= k * sd):.4f}")
Chebyshev bound for k = 2: 0.2500 normal P(|X - mu| >= 2 sd) = 0.0456 uniform P(|X - mu| >= 2 sd) = 0.0000 exponential P(|X - mu| >= 2 sd) = 0.0500 die P(|X - mu| >= 2 sd) = 0.0000 three-point P(|X - mu| >= 2 sd) = 0.2502
Où ça casse
- La borne est large. Elle vaut pour toutes les lois, donc elle est calée sur la pire : 25 % là où une normale donne 4,6 % et un dé 0 %.
- Pour k ≤ 1, elle ne dit rien.
- Variance infinie : rien. Pareto d'indice ≤ 2, Cauchy (qui n'a même pas d'espérance).
- σ doit être le vrai écart-type. Avec un σ estimé sur quelques points, la borne n'est plus garantie.
- Elle porte sur les deux queues ensemble. « Au plus 12,5 % de chaque côté » est faux : une seule queue peut prendre jusqu'à 1/(1 + k²), soit 20 % à k = 2 (inégalité de Cantelli). La loi qui le fait : ⅕ en μ + 2σ, ⅘ en μ − σ/2.
Pour toute loi de variance finie, P(|X − μ| ≥ kσ) ≤ 1/k² : au plus 25 % de la masse au-delà de 2σ, contre 4,6 % pour une normale. Universelle, donc large.
X̄ est une variable aléatoire : E[X̄] = μ, Var(X̄) = σ²/n outil
Brunton 35 · The Law of Large Numbers
Brunton : « je n'ai pas de modèle de la loi, mais je collecte des données ». Je jette n dés et je fais la moyenne. Trois objets se croisent alors, et les confondre est l'erreur la plus coûteuse du sujet. μ = 3,5 est le paramètre : un nombre fixe de la loi du dé. X̄ = (X1 + … + Xn)/n est une variable aléatoire : la procédure « jeter n dés et moyenner », avant de la lancer. x̄ est sa réalisation : le nombre obtenu ce jour-là.
Rejoue trois fois la procédure à quatre dés : 2, 5, 1, 5 donne x̄ = 3,25 ; 6, 3, 4, 5 donne 4,5 ; 1, 4, 3, 3 donne 2,75. Trois réalisations différentes de la même X̄, pour un μ qui n'a pas bougé. X̄ a donc une loi, avec un centre et une largeur : c'est le « pic » que dessine Brunton, large pour n petit, de plus en plus étroit quand n grandit.
Le trait rouge μ = 3,5 ne bouge jamais : c'est le paramètre. Chaque clic sur refaire l'expérience lance n dés (en haut) et pose leur moyenne x̄, une réalisation de X̄, en pastille ; la dernière est en bleu. Au départ, les trois réalisations 3,25, 4,5 et 2,75 à n = 4. La pile des x̄ (des barres quand elle devient trop haute) dessine la loi de X̄, centrée sur μ. Lance 100 fois et compare l'écart-type des x̄ à la théorie σ/√n : 1,708 à n = 1, 0,854 à n = 4, 0,427 à n = 16.
- E[X̄] = μ ne demande qu'une chose : E[Xi] = μ pour chaque i. Aucune indépendance : c'est la linéarité (l08, notion 3).
- Var(X̄) = σ²/n demande les deux moitiés d'i.i.d. (indépendantes et de même loi), chacune pour sa raison. L'indépendance annule toutes les covariances Cov(Xi, Xj), i ≠ j. La même loi donne à chaque terme la même variance σ².
- La preuve n'utilise en fait que cela : même moyenne, même variance, covariances nulles. Brunton (35) ne dit d'ailleurs pas « même loi ».
- σ/√n, l'écart-type de X̄, s'appelle l'erreur standard (notion 5).
Six termes de variance 1. La case de la ligne i et de la colonne j porte Cov(Xi, Xj) ; sur la diagonale, Cov(Xi, Xi) = Var(Xi). Var(X̄) est la somme des 36 cases divisée par 36. i.i.d. : six 1 sur la diagonale, 0 ailleurs, 6/36 = 0,167 = σ²/n. Retire la même loi (variances 1, 1, 1, 1, 1, 4) : les covariances restent nulles, mais la diagonale fait 9, d'où 0,25. Retire l'indépendance (ρ = 0,5) : la diagonale fait 6, les 30 cases hors diagonale ajoutent 15, d'où 0,583. Copies : toutes les cases valent 1, Var(X̄) = 1, moyenner n'a servi à rien.
Exemples simples n = 1, le dé, des copies, une pièce, une accuracy
- n = 1 : X̄ = X1, de moyenne μ et de variance σ². Rien de neuf, et c'est un bon test de la formule.
- Le dé, n = 4 : E[X̄] = 3,5 ; Var(X̄) = 2,917/4 = 0,729 ; écart-type 0,854. Pour n = 16 : 0,182 et 0,427.
- Un dé recopié quatre fois : X1 = X2 = X3 = X4. Le centre est intact, E[X̄] = 3,5. Mais X̄ = X1, donc Var(X̄) = 2,917 et non 0,729 : l'indépendance perdue se paie dans la largeur, jamais dans le centre.
- Une pièce de biais p (le cas de Brunton : « n lancers, n Bernoulli »). Xi ∈ {0, 1}, X̄ est la proportion de piles. E[X̄] = p, Var(X̄) = p(1 − p)/n.
- Une accuracy. L'accuracy d'un modèle sur n exemples de test est la moyenne des indicatrices « bonne réponse ». C'est une réalisation de X̄ : un autre jeu de test tiré de la même population donnerait une autre accuracy, autour de la vraie p, avec la variance p(1 − p)/n.
Preuve à savoir produire : chaque ligne nomme ce qui sert
Le centre.
La largeur. Chaque ligne nomme la moitié d'i.i.d. qui sert.
Au tableau : « l'indépendance tue les covariances, la même loi égalise les variances, le 1/n sort au carré ». Sans indépendance, la troisième ligne garde ses covariances (notion 6) ; sans même loi, la quatrième donne Σ σi²/n².
Simuler en Python 100 000 fois quatre dés, indépendants puis recopiés
import numpy as np
rng = np.random.default_rng(0)
reps, n = 100_000, 4
dice = rng.integers(1, 7, size=(reps, n)) # 100,000 repetitions of "throw 4 dice"
xbar = dice.mean(axis=1) # one realisation of Xbar per repetition
copies = np.repeat(dice[:, :1], n, axis=1) # one die copied 4 times: fully dependent
xbar_copy = copies.mean(axis=1)
print("first three realisations:", xbar[:3])
for name, x, var in (("independent", xbar, 35 / 12 / n), ("copies", xbar_copy, 35 / 12)):
print(f"{name:11s} mean {x.mean():.3f} (theory 3.5) var {x.var():.3f} (theory {var:.3f})")
first three realisations: [4. 1.25 4.25] independent mean 3.500 (theory 3.5) var 0.728 (theory 0.729) copies mean 3.510 (theory 3.5) var 2.915 (theory 2.917)
Où ça casse
- Réalisation, variable, paramètre. Écrire « μ = 3,2 » pour « x̄ = 3,2 sur ces quatre dés » mélange les trois. μ ne se mesure pas, il s'estime : x̄ en est une estimation, X̄ l'estimateur (l04, notion 1, puis p01-01).
- Ce qui se réduit est Var(X̄), pas Var(X). La variance d'un dé reste 2,917 quel que soit le nombre de lancers ; celle de leur moyenne tombe en 1/n.
- Dépendance. Le centre reste μ, la largeur change : 2,917 au lieu de 0,729 pour des copies, et la notion 6 pour une corrélation partielle.
- Des lois différentes. Indépendantes mais de variances σi² différentes : Var(X̄) = Σ σi²/n², pas σ²/n (figure 2). Un seul terme très bruité peut dominer.
- Variance infinie (Pareto d'indice ≤ 2) : σ²/n n'a pas de sens. Sans espérance du tout (Cauchy, notion 4), c'est même le centre qui manque.
Pour X̄ = (1/n) Σ Xi : E[X̄] = μ par linéarité, sans hypothèse ; Var(X̄) = σ²/n parce que l'indépendance annule les covariances, que la même loi donne σ² à chaque terme, et que 1/n sort au carré.
Loi des grands nombres : la moyenne converge, la somme s'écarte outil
Brunton 35 · l'image des mesures répétées vient des vidéos 01 et 36
Brunton prend l'exemple de la mesure : on mesure la vitesse de la lumière 30 fois, et l'on obtient 30 valeurs un peu différentes. La moyenne des mesures se rapproche de la vraie valeur à mesure qu'on en ajoute. La loi des grands nombres (LGN) le dit précisément : la probabilité que X̄ s'écarte de μ de plus de ε tend vers 0, pour tout ε.
Le mécanisme tient en une ligne : Var(X̄) = σ²/n tend vers 0 (notion 3), et Chebyshev (notion 2) transforme une variance qui tend vers 0 en une probabilité d'écart qui tend vers 0. Rien ne se compense pour autant. La somme Sn s'écarte de nμ avec un écart-type σ√n qui grandit : sur 1 000 dés, 54,0, quand celui de la moyenne vaut 0,054. C'est la division par n qui écrase un écart qui, lui, continue de grandir.
Chaque point est une mesure simulée de la vitesse de la lumière, en écart à la vraie valeur 299 792 km/s, avec un bruit d'écart-type 100 km/s choisi pour l'illustration. La courbe rouge est la moyenne des n premières mesures ; la bande bleue ±2σ/√n se referme sur 0 : ±36,5 km/s à n = 30, ±11,5 à n = 300. Clique 270 mesures de plus : les points restent aussi dispersés, la moyenne se pose. Puis choisis des erreurs de Cauchy, un instrument qui déraille de temps en temps : la moyenne de n erreurs de Cauchy a la loi d'une seule erreur, elle saute à chaque grosse erreur et ne se pose jamais.
- C'est la loi faible des grands nombres : X̄n converge vers μ en probabilité (weak law, convergence in probability).
- Hypothèses de cette preuve : même moyenne μ, variance σ² finie, covariances nulles (l'indépendance suffit). La LGN reste vraie pour des Xi i.i.d. d'espérance seulement finie, avec une preuve plus longue, hors leçon. Pour Cauchy, qui n'a pas d'espérance, X̄n ne converge pas : elle a la loi d'une seule mesure (où ça casse).
- La LGN dit que X̄ se pose sur μ. Elle ne dit ni à quelle vitesse (notion 5) ni avec quelle forme (l11).
Les deux courbes rouges lisent le même tirage de 1 000 dés, l'une divisée par n, l'autre non, et les deux bandes décrivent le même événement : le chemin sort de l'une exactement quand il sort de l'autre. En haut, la bande ±2σ/√n se referme sur μ = 3,5, et la moyenne avec elle. En bas, la bande ±2σ√n s'ouvre : la somme moins 3,5n erre à quelques dizaines de 0 (36 en médiane à n = 1 000), recoupe parfois 0 mais ne s'y pose pas. Clique nouveau chemin plusieurs fois : en haut l'écart à 3,5 fond, en bas il ne fond pas. Rien ne se compense : c'est la division par n qui fabrique la convergence.
Exemples simples la borne à n = 100, moyenne et somme, une pièce, une fréquence
- Chebyshev pour 100 dés, ε = 0,5. P(|X̄ − 3,5| ≥ 0,5) ≤ 2,917/(100 × 0,25) = 0,117. La valeur exacte, calculée sur la loi de la somme de 100 dés, est 0,0036 : la borne est 32 fois trop large. Mais elle tend vers 0 quand n grandit, et c'est tout ce que la preuve demande.
- Moyenne et somme, 1 000 dés. Écart-type de X̄ : 1,708/√1 000 = 0,054. Écart-type de S − 3 500 : 1,708 × √1 000 = 54,0. Un facteur 1 000 entre les deux, sur le même tirage.
- Une pièce. Sur 100 lancers, la proportion de piles a un écart-type de 0,05 et le nombre de piles moins 50 un écart-type de 5. Sur 10 000 lancers : 0,005 et 50. Après dix faces de suite, le lancer suivant reste à ½ : la pièce ne « rattrape » rien.
- Une fréquence est une moyenne. Pour un événement A, l'indicatrice 1{A} est une Bernoulli de moyenne P(A) : la fréquence de A sur n tirages converge vers P(A). C'est ce qui rend précis le « à peu près » de la notion 1 de l08 : chaque face sort à peu près N · P(X = x) fois sur N lancers.
- Une accuracy. Mesurée sur un jeu de test de plus en plus grand, d'exemples tirés indépendamment, elle converge vers la vraie accuracy du modèle sur cette population.
Preuve Chebyshev appliqué à X̄
La somme. Var(Sn − nμ) = Var(Sn) = nσ², par les deux mêmes moitiés d'i.i.d. ; son écart-type σ√n tend vers l'infini. Et Sn − nμ = n(X̄n − μ) : l'écart de la somme est celui de la moyenne, multiplié par n.
Simuler en Python 2 000 chemins de 1 000 dés, puis une moyenne de Cauchy
import numpy as np
rng = np.random.default_rng(1)
paths, n = 2_000, 1_000
s = rng.integers(1, 7, size=(paths, n)).cumsum(axis=1) # S_m along each path
for m in (10, 100, 1000):
mean_dev = s[:, m - 1] / m - 3.5 # Xbar_m - mu
sum_dev = s[:, m - 1] - 3.5 * m # S_m - m mu
print(f"n = {m:4d} sd(Xbar - mu) {mean_dev.std():.3f} sd(S - n mu) {sum_dev.std():5.1f}")
N = 1_000_000
cauchy_mean = rng.standard_cauchy(N).cumsum() / np.arange(1, N + 1)
print("Cauchy running mean at n = 1e3, 1e4, 1e5, 1e6:",
np.round(cauchy_mean[[999, 9_999, 99_999, N - 1]], 2))
n = 10 sd(Xbar - mu) 0.543 sd(S - n mu) 5.4 n = 100 sd(Xbar - mu) 0.172 sd(S - n mu) 17.2 n = 1000 sd(Xbar - mu) 0.054 sd(S - n mu) 53.8 Cauchy running mean at n = 1e3, 1e4, 1e5, 1e6: [-1.56 -0.92 2.53 1.54]
Où ça casse
- Pas d'espérance : Cauchy. La moyenne de n variables de Cauchy indépendantes a exactement la loi d'une seule : moyenner n'apporte rien, la moyenne courante saute à chaque gros tirage (vignette, bouton Cauchy, et code). La symétrie fait croire à un centre en 0, mais l'espérance n'existe pas (l08, notion 1).
- « Les tirages se compensent » est faux : c'est l'erreur du joueur. Les écarts accumulés grandissent en σ√n ; la moyenne converge parce qu'on divise par n.
- Dépendance. Si toutes les paires ont la même corrélation ρ > 0, Var(X̄) ne tend plus vers 0 (notion 6) : la moyenne se pose sur μ + C, où C est l'erreur commune, et non sur μ. Si la corrélation s'éteint avec l'écart entre les termes (série temporelle stationnaire), X̄ converge encore, mais moins vite que σ/√n ne le dit.
- Ni vitesse ni forme. La LGN dit « ça converge », pas « à ±0,05 près avec 95 % de chances » : la vitesse est la notion 5, la forme le TCL (l11).
Pour des Xi indépendantes de même moyenne μ et de variance σ² finie : P(|X̄n − μ| ≥ ε) ≤ σ²/(nε²) → 0, parce que Var(X̄) → 0 et non par compensation : la somme s'écarte de nμ en σ√n.
Erreur standard σ/√n : diviser la largeur par 2 coûte 4 fois plus de données outil
Brunton 35
L'écart-type de X̄, σ/√n, porte un nom à lui : l'erreur standard (standard error, SE). Le nom rappelle qu'il mesure la dispersion d'une quantité calculée, la moyenne, et non celle des mesures : σ décrit un dé, le SE décrit la moyenne de n dés.
La racine rend la précision chère. Pour diviser le SE par 2, il faut multiplier n par 4 ; pour le diviser par 10, par 100. L'exemple ML : une accuracy de 0,9 mesurée sur 1 000 exemples de test a un SE de √(0,9 × 0,1/1 000) = 0,0095, soit ±1,86 point à 95 % (le 1,96 vient de la forme normale, l11). Pour ±0,93 point, il faut annoter 4 000 exemples ; pour ±0,46 point, 16 000.
Chaque case représente 250 exemples de test annotés. Passe de n = 250 à 1 000, 4 000 puis 16 000 : le côté du carré double, son aire et le coût d'annotation quadruplent, et l'intervalle ±1,96 SE autour de l'accuracy 0,9 ne se divise que par 2 : ±3,72, ±1,86, ±0,93 puis ±0,46 point.
- SE(k²n) = SE(n)/k : diviser l'incertitude par k coûte k² fois plus de données.
- Hypothèses : celles de Var(X̄) = σ²/n (notion 3), donc indépendance et même loi. Des exemples de test dépendants rendent ce SE trop optimiste (notion 6).
- σ et p sont inconnus en pratique : on les remplace par leur estimation (p01-01). Pour une proportion, p(1 − p) ≤ ¼ donne un SE d'au plus 0,5/√n.
- Passer d'un SE à un intervalle « à 95 % », ±1,96 SE, demande la forme normale de X̄ : c'est le TCL (l11).
Exemples simples le dé, combien de dés, un sondage, une accuracy
- Le dé. SE = 1,708, 0,854, 0,342, 0,171 pour n = 1, 4, 25, 100. De 1 à 4 dés la largeur est divisée par 2 ; de 1 à 100, par 10.
- Combien de dés pour un SE visé : n = (1,708/s)². SE 0,5 : 12 dés ; 0,1 : 292 ; 0,05 : 1 167 ; 0,01 : 29 167. Passer de 0,1 à 0,05 coûte 875 dés de plus.
- Un sondage. p = ½, le pire cas, et n = 1 000 : SE = 0,0158, soit ±3,1 points à 95 %. C'est le « ±3 points » des sondages à 1 000 personnes.
- Une accuracy p = 0,9. n = 250 : SE 0,019 ; 1 000 : 0,0095 ; 4 000 : 0,0047 ; 16 000 : 0,0024. Une différence d'un point entre deux modèles, sur 1 000 exemples, est de l'ordre d'un seul SE : elle ne suffit pas à les départager (le SE d'une différence sur un jeu de test partagé est en l09, notion 6).
Simuler en Python 20 000 jeux de test, l'écart-type de l'accuracy
import numpy as np
rng = np.random.default_rng(0)
p, sets = 0.9, 20_000 # true accuracy, number of simulated test sets
for n in (1_000, 4_000):
acc = rng.binomial(n, p, size=sets) / n # one realised accuracy per test set
se = np.sqrt(p * (1 - p) / n)
print(f"n = {n}: sd of the accuracies {acc.std():.5f} formula {se:.5f}")
sigma = np.sqrt(35 / 12) # one die
for se in (0.1, 0.05):
print(f"dice needed for SE {se}: {int(np.ceil((sigma / se) ** 2))}")
n = 1000: sd of the accuracies 0.00946 formula 0.00949 n = 4000: sd of the accuracies 0.00472 formula 0.00474 dice needed for SE 0.1: 292 dice needed for SE 0.05: 1167
Où ça casse
- σ n'est pas le SE. σ = 1,708 décrit un dé et ne bouge pas avec n ; le SE décrit la moyenne et tombe en 1/√n. Rapporter « ±σ » pour une moyenne surestime son incertitude ; rapporter « ±SE » pour une mesure isolée la sous-estime.
- Exemples dépendants. Plusieurs lignes d'un même utilisateur, plusieurs images d'une même vidéo : σ/√n est trop petit (notion 6).
- σ estimé à petit n. Remplacer σ par l'écart-type de l'échantillon ajoute de l'incertitude ; à petit n, l'intervalle s'élargit (loi de Student, p01-03).
- p proche de 0 ou de 1. √(p(1 − p)/n) reste le bon écart-type, mais l'intervalle ±1,96 SE suppose une forme normale, qui demande assez de succès et d'échecs (l11).
- Rendements décroissants. Chaque décimale coûte 100 fois plus de données. Passé un certain stade, réduire le bruit (comparer deux modèles sur les mêmes exemples, l09) rapporte souvent plus qu'annoter davantage.
SE = σ/√n, l'écart-type de X̄ et non des mesures : diviser l'incertitude par k demande k² fois plus de données.
Moyenne de termes corrélés : ρσ² + (1 − ρ)σ²/n outil
Brunton 35, prolongé : le cas que Brunton écarte en supposant l'indépendance
Brunton suppose les mesures indépendantes. Suppose maintenant que l'instrument est mal calibré : chaque mesure porte la même erreur C, tirée une fois pour toutes, plus son erreur propre Ei. Donc Xi = μ + C + Ei. Moyenner efface les Ei ; C, présente dans toutes les mesures, reste entière.
Avec σ² = 1 et ρ = 0,5, la moitié de la variance est commune et reste entière, l'autre moitié se divise par n : 0,5 + 0,5/10 = 0,55 pour 10 mesures, 0,505 pour 100, jamais moins de 0,5. En général, si C porte une fraction ρ de la variance σ², deux mesures ont la corrélation ρ, et Var(X̄) = ρσ² + (1 − ρ)σ²/n : le second terme s'éteint avec n, le premier jamais, c'est un plancher. Cent mesures valent à peine mieux que dix, et jamais mieux que deux mesures indépendantes.
En bleu pointillé, la variance de X̄ sans corrélation, σ²/n, qui descend sans fin ; en violet, la même avec la corrélation ρ ; en rouge pointillé, son plancher ρσ². Le second panneau, la barre, sépare les deux parts : en rouge l'erreur commune, en violet la part propre. Départ ρ = 0,5, n = 10 : 0,5 + 0,05 = 0,55, dont 91 % pour la part commune. Monte n : la part propre fond, la part commune ne bouge pas. Baisse ρ : c'est le seul curseur qui fait descendre le plancher. neff est le nombre de mesures indépendantes qui donneraient la même variance.
- Hypothèses : chaque terme a la variance σ², chaque paire la corrélation ρ, donc la covariance ρσ² (l09, notion 4). Si les corrélations diffèrent, la formule reste exacte avec ρ̄, la corrélation moyenne sur les n(n − 1) paires.
- ρ = 0 redonne σ²/n (notion 3) ; ρ = 1, des copies, donne σ².
- Le centre ne bouge pas : E[X̄] = μ quel que soit ρ. La dépendance ne se voit que dans la largeur.
- ρ ne peut pas être très négatif : Var(X̄) ≥ 0 impose ρ ≥ −1/(n − 1).
Exemples simples ρ = 0 et 1, le plancher à 0,5, le dé, des utilisateurs
- ρ = 0 : σ²/n, la notion 3. ρ = 1 : σ², la moyenne de n copies.
- σ² = 1, ρ = 0,5. n = 10 : 0,55 ; n = 100 : 0,505 ; n = 1 000 : 0,5005. Passer de 10 à 100 termes gagne 0,045, de 100 à l'infini 0,005. neff vaut 1,82, puis 1,98, et jamais plus de 2.
- Le dé avec ρ = 0,05. Le SE plafonne à √(0,05 × 2,917) = 0,382. À n = 10 000, il vaut 0,382, contre 0,017 sous indépendance : 22 fois moins. neff ≈ 20 : dix mille lancers en valent vingt.
- Des lignes par utilisateur. 1 000 lignes venant de 50 utilisateurs à 20 lignes chacun, corrélation 0,2 entre deux lignes d'un même utilisateur, 0 entre utilisateurs. Compter les cases utilisateur par utilisateur donne neff = 1 000/(1 + 19 × 0,2) = 208, et un vrai SE 2,19 fois plus grand que σ/√n (pont b04).
Preuve compter les cases, puis par l'erreur commune
Par l'erreur commune. Xi = μ + C + Ei, avec C, E1, …, En indépendants, Var(C) = ρσ², Var(Ei) = (1 − ρ)σ². Alors Var(Xi) = σ², Cov(Xi, Xj) = Var(C) = ρσ², et X̄ = μ + C + Ē. Donc Var(X̄) = ρσ² + (1 − ρ)σ²/n : la moyenne garde C entière et divise par n la variance des erreurs propres.
Simuler en Python l'erreur commune, et le plancher
import numpy as np
rng = np.random.default_rng(4)
reps, rho = 10_000, 0.5 # sigma^2 = 1
for n in (1, 10, 100, 1000):
C = rng.normal(0, np.sqrt(rho), size=(reps, 1)) # shared error: same for the n terms
E = rng.normal(0, np.sqrt(1 - rho), size=(reps, n)) # each term's own error
xbar = (C + E).mean(axis=1)
print(f"n = {n:4d} Var(Xbar) {xbar.var():.4f} formula {rho + (1 - rho) / n:.4f}")
x = C + E # last batch: check one pair
print(f"corr(X1, X2) = {np.corrcoef(x[:, 0], x[:, 1])[0, 1]:.3f}")
n = 1 Var(Xbar) 0.9931 formula 1.0000 n = 10 Var(Xbar) 0.5443 formula 0.5500 n = 100 Var(Xbar) 0.5014 formula 0.5050 n = 1000 Var(Xbar) 0.5043 formula 0.5005 corr(X1, X2) = 0.492
Où ça casse
- Compter n sans regarder ρ. Dès que ρσ² domine, ajouter des termes ne change plus rien : neff plafonne à 1/ρ.
- Les cas courants sont corrélés. Lignes d'un même utilisateur, points successifs d'une série temporelle, erreurs des plis d'une validation croisée (p06-02), arbres d'une forêt entraînés sur des données qui se recouvrent (p07-02).
- ρ se mesure rarement. On le baisse par construction (tirer au hasard les variables explicatives (features) dans une forêt, grouper par utilisateur, rééchantillonner par blocs) plutôt qu'on ne l'estime.
- Le bootstrap de lignes suppose ρ = 0. Il reproduit le σ/√n trop petit (p01-05) ; il faut rééchantillonner les unités indépendantes.
- Un ρ négatif n'ouvre pas de plancher négatif. ρ ≥ −1/(n − 1) : −0,111 à n = 10, −0,010 à n = 100.
n termes de variance σ² et de corrélation commune ρ : Var(X̄) = ρσ² + (1 − ρ)σ²/n → ρσ². Moyenner n'efface que la part non partagée ; au plus 1/ρ termes indépendants.
Monte Carlo : une espérance est une moyenne qu'on simule culture
Brunton 35
Brunton conclut que la LGN est « la base de l'échantillonnage Monte Carlo ». L'idée se retourne : au lieu de calculer une espérance, on la simule. Pour E[g(X)], tire N valeurs de X, calcule g sur chacune et fais la moyenne. La LGN garantit que cette moyenne tend vers E[g(X)], et l'erreur standard σg/√N dit à quelle vitesse.
L'exemple classique : lance des fléchettes au hasard dans le carré [0, 1]². La part qui tombe dans le quart de disque x² + y² ≤ 1 estime son aire, π/4 = 0,785, donc quatre fois cette part estime π. Avec N = 1 000 fléchettes, le SE sur π vaut 4 × √(0,785 × 0,215/1 000) = 0,052 ; pour un SE dix fois plus petit, il en faut cent fois plus.
Chaque point est une fléchette : bleue dans le quart de disque, rouge dehors. Dans le second panneau, l'estimation 4 × (part des bleues) contre le nombre N de fléchettes, et la bande π ± 2 SE qui se resserre en 1/√N. Départ : 1 000 fléchettes, SE 0,052. Ajoute-en 100, puis va jusqu'à 5 000 (SE 0,023) : l'estimation reste dans la bande, qui se resserre, sans jamais tomber exactement sur π. Nouvelle graine rejoue l'expérience.
- Il faut savoir tirer selon la loi de X ; les tirages sont indépendants et de même loi, c'est la LGN de la notion 4 appliquée à g(X).
- Var(g(X)) doit être finie pour que le SE existe.
- Une probabilité est l'espérance d'une indicatrice, P(A) = E[1{A}] : elle s'estime de la même façon.
- La vitesse 1/√N ne dépend pas de la dimension de X : c'est ce qui rend Monte Carlo utile là où une intégrale sur une grille serait impossible. La constante σg, elle, peut en dépendre.
Exemples simples π, deux dés, E[e^Z], une perte moyenne
- π. N = 1 000 : SE 0,052 ; N = 100 000 : SE 0,0052.
- Deux dés. P(somme ≥ 10) : l'indicatrice vaut 1 pour 6 issues sur 36, et sa fréquence sur N lancers simulés tend vers 1/6 = 0,167.
- E[eZ] pour Z normale centrée réduite. La moyenne de ez sur un million de tirages donne 1,648 ; la valeur exacte est e0,5 = 1,649, alors que eE[Z] = 1 (code). Monte Carlo calcule E[g(X)], qui n'est pas g(E[X]) (l08, notion 5).
- Une perte moyenne. La perte moyenne sur un jeu de test est une estimation Monte Carlo de la perte espérée, avec le SE σℓ/√n. Le gradient d'un mini-batch de B exemples tirés au hasard estime le gradient moyen avec un bruit en 1/√B : quadrupler le batch ne divise ce bruit que par 2.
Simuler en Python π à trois tailles, et E[e^Z]
import numpy as np
rng = np.random.default_rng(17)
for N in (100, 10_000, 1_000_000):
x, y = rng.random(N), rng.random(N)
inside = x**2 + y**2 <= 1 # g = indicator of the quarter disc
est = 4 * inside.mean()
se = 4 * inside.std() / np.sqrt(N)
print(f"N = {N:9d} pi estimate {est:.4f} error {abs(est - np.pi):.4f} SE {se:.4f}")
z = rng.normal(size=1_000_000)
print(f"E[exp(Z)] ~ {np.exp(z).mean():.4f} exact e^0.5 = {np.exp(0.5):.4f} exp(E[Z]) = 1")
N = 100 pi estimate 3.1600 error 0.0184 SE 0.1629 N = 10000 pi estimate 3.1480 error 0.0064 SE 0.0164 N = 1000000 pi estimate 3.1427 error 0.0011 SE 0.0016 E[exp(Z)] ~ 1.6480 exact e^0.5 = 1.6487 exp(E[Z]) = 1
Où ça casse
- 1/√N est lent. Une décimale de plus coûte 100 fois plus de tirages.
- Événement rare. Pour p = 10−4 et N = 104, on attend un seul succès : le SE relatif √((1 − p)/(Np)) vaut 100 %. On reformule le problème (échantillonnage préférentiel, importance sampling) plutôt que de tirer plus.
- Tirages dépendants. Les méthodes de Monte Carlo par chaînes de Markov (MCMC) produisent des tirages corrélés : le SE se calcule avec un neff (notion 6), pas avec N.
- Variance infinie. Si E[g(X)] existe mais pas Var(g(X)), la moyenne converge encore, sans la vitesse σg/√N et très irrégulièrement.
- Le générateur. Une graine fixée rend l'expérience reproductible ; deux simulations qui partagent une graine ne sont pas indépendantes.
Monte Carlo : une espérance est une moyenne qu'on peut simuler. La LGN garantit la convergence, σg/√N en donne la vitesse, quelle que soit la dimension.
Résumé
- Markov, pour X ≥ 0 : P(X ≥ a) ≤ E[X]/a ; la loi {0, a} atteint la borne.
- Chebyshev, pour toute loi de variance finie : P(|X − μ| ≥ kσ) ≤ 1/k², soit 25 % à 2σ, contre 4,6 % pour une normale.
- X̄ est une variable aléatoire, x̄ sa réalisation, μ un nombre fixe.
- E[X̄] = μ par linéarité seule ; Var(X̄) = σ²/n : l'indépendance annule les covariances, la même loi donne σ² à chaque terme.
- LGN : P(|X̄ − μ| ≥ ε) ≤ σ²/(nε²) → 0 ; la somme, elle, s'écarte en σ√n.
- SE = σ/√n : diviser la largeur par 2 coûte 4 fois plus de données ; accuracy : √(p(1 − p)/n).
- Termes de corrélation commune ρ : Var(X̄) = ρσ² + (1 − ρ)σ²/n → ρσ², au plus 1/ρ termes indépendants.
- Monte Carlo : une espérance se simule par une moyenne, d'erreur σg/√N.
Chaîne verbalisée — une prise, à voix haute
- Pourquoi Markov exige-t-il X ≥ 0 ?Sinon un contrepoids négatif équilibre n'importe quelle masse à droite : X ∈ {−30, 20} avec P(X = 20) = 0,8 a une moyenne de 10 et P(X ≥ 20) = 0,8 > ½.
- Chebyshev à 2σ : quelle part de la masse au plus, et combien pour une normale ?Au plus 25 %, pour toute loi de variance finie ; une normale en met 4,6 %.
- μ, X̄, x̄ : lequel est aléatoire ?X̄, la procédure « jeter n dés et moyenner » ; x̄ est sa réalisation, μ un nombre fixe de la loi.
- Que valent E[X̄] et Var(X̄), et quelle hypothèse sert à chaque ligne ?E[X̄] = μ par linéarité, sans hypothèse. Var(X̄) = σ²/n : l'indépendance annule les covariances, la même loi donne σ² à chaque terme, et 1/n sort au carré.
- Pourquoi la moyenne converge-t-elle, et que fait la somme pendant ce temps ?Var(X̄) = σ²/n → 0, et Chebyshev donne P(|X̄ − μ| ≥ ε) ≤ σ²/(nε²) → 0. La somme s'écarte de nμ en σ√n : rien ne se compense.
- Ton accuracy a un SE d'un point sur 1 000 exemples. Combien d'exemples pour un demi-point ?4 000 : le SE est en 1/√n, diviser par 2 coûte ×4.
- n termes de corrélation commune ρ : que devient Var(X̄) quand n grandit ?ρσ² + (1 − ρ)σ²/n → ρσ² : un plancher ; au plus 1/ρ termes indépendants.
Où ça sert ensuite
stats::chebyshev (notion 2) · stats::lgn (notions 3 et 4) · stats::se (notions 5 et 6). Markov (notion 1) et Monte Carlo (notion 7) sont de la culture, sans carte.
Une carte se fait depuis le « ce qu'on garde » d'une notion OUTIL, après ta lecture, dans tes mots.