Aller au contenu

Encadrez un paramètre par un intervalle de confiance

« La masse moyenne des paquets est estimée à 250,3 g. » Cette phrase est incomplète : 250,3 g à 0,01 g près, ou à 5 g près ? Une estimation ponctuelle sans indication de précision ne permet aucune décision.

L’intervalle de confiance répond à ce manque : au lieu d’un nombre, on donne une fourchette, construite pour contenir le vrai paramètre avec une probabilité choisie à l’avance. Pour le construire, il faut connaître la loi de quelques statistiques clés, et donc trois lois nées de la loi normale. Notre fil rouge : une torréfaction qui remplit des paquets de café de 250 g.

Le responsable qualité pèse 10 paquets pris au hasard en sortie de chaîne (en grammes) :

251,3248,7250,9252,4249,5250,2247,8251,7250,6249,9

On trouve xˉ10=250,3\bar x_{10} = 250{,}3 g, une somme des carrés des écarts de 17,44 et donc s~102=17,44/9≈1,938\tilde s_{10}^2 = 17{,}44/9 \approx 1{,}938, soit s~10≈1,392\tilde s_{10} \approx 1{,}392 g. On suppose que la masse d’un paquet suit une loi normale N(m,σ2)\mathcal{N}(m, \sigma^2), de paramètres inconnus. Que peut-on dire de mm et de σ\sigma ?

Si Z1,…,ZkZ_1, \dots, Z_k sont indépendantes de loi N(0,1)\mathcal{N}(0, 1), la somme de leurs carrés suit la loi du chi-deux à kk degrés de liberté :

Z12+⋯+Zk2∼χk2Z_1^2 + \dots + Z_k^2 \sim \chi^2_k

C’est une loi positive, d’espérance kk et de variance 2k2k, dissymétrique (étalée à droite) pour les petits kk.

0510152025x0,00,10,20,30,40,5densité de χ²ₖk = 1k = 3k = 9pointillés : espérance kvariance 2k
Une somme de carrés est positive : la loi du chi-deux vit sur [0, +∞[. Plus k est grand, plus elle se décale vers la droite (espérance k) et s'étale (variance 2k).

Pourquoi cette somme a-t-elle une loi aussi simple ? La démonstration, faite en cours, tient en trois étapes, qui passent par les lois gamma Γ(a,λ)\Gamma(a, \lambda) de densité λaΓ(a)xa−1e−λx\frac{\lambda^a}{\Gamma(a)} x^{a-1} e^{-\lambda x} sur ]0,+∞[]0, +\infty[.

  1. Un seul carré. Si Z∼N(0,1)Z \sim \mathcal{N}(0, 1) et Y=Z2Y = Z^2, alors pour y>0y > 0, P(Y≤y)=2P(0≤Z≤y)P(Y \le y) = 2P(0 \le Z \le \sqrt{y}). En dérivant (ou par le changement de variable x=u2x = u^2 dans l’intégrale), la densité de YY vaut 12πy−1/2e−y/2\frac{1}{\sqrt{2\pi}} y^{-1/2} e^{-y/2} : c’est la loi Γ(12,12)\Gamma(\frac{1}{2}, \frac{1}{2}), autrement dit χ12\chi^2_1.
  2. Somme de deux gammas. Si X∼Γ(a,λ)X \sim \Gamma(a, \lambda) et Y∼Γ(b,λ)Y \sim \Gamma(b, \lambda) sont indépendantes, alors X+Y∼Γ(a+b,λ)X + Y \sim \Gamma(a + b, \lambda). On le montre par le produit de convolution, avec le changement de variable y=usy = us qui fait apparaître l’intégrale bêta ∫01ub−1(1−u)a−1du=Γ(a)Γ(b)Γ(a+b)\int_0^1 u^{b-1}(1-u)^{a-1}du = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)}.
  3. Récurrence. En ajoutant les carrés un à un, Z12+⋯+Zk2∼Γ(k2,12)Z_1^2 + \dots + Z_k^2 \sim \Gamma(\frac{k}{2}, \frac{1}{2}), qui est par définition la loi χk2\chi^2_k.

Si Z∼N(0,1)Z \sim \mathcal{N}(0, 1) et Y∼χk2Y \sim \chi^2_k sont indépendantes, alors

T=ZY/k∼TkT = \frac{Z}{\sqrt{Y / k}} \sim \mathcal{T}_k

suit la loi de Student à kk degrés de liberté. Elle est symétrique, en cloche, avec des queues plus épaisses que la normale ; quand kk grandit, elle se rapproche de N(0,1)\mathcal{N}(0, 1).

−4−20240,00,10,20,30,4densité1,962,262queues plus épaissesN(0, 1)Student à 9 ddlStudent à 2 ddl
La Student a des queues plus épaisses que la normale : pour laisser 2,5 % dans chaque queue, il faut aller jusqu'à 2,262 avec 9 ddl au lieu de 1,96.

Si U∼χk2U \sim \chi^2_k et V∼χl2V \sim \chi^2_l sont indépendantes, alors

F=U/kV/l∼Fk,lF = \frac{U / k}{V / l} \sim \mathcal{F}_{k, l}

suit la loi de Fisher à (k,l)(k, l) degrés de liberté. Deux relations utiles : 1/F∼Fl,k1/F \sim \mathcal{F}_{l, k}, et le carré d’une Student Tl\mathcal{T}_l suit une F1,l\mathcal{F}_{1, l}.

Ce théorème relie tout cela à nos paquets. Si X1,…,XnX_1, \dots, X_n sont i.i.d. de loi N(m,σ2)\mathcal{N}(m, \sigma^2), alors :

  • Xˉn\bar X_n et S~n2\tilde S_n^2 sont indépendantes ;
  • (n−1) S~n2σ2∼χn−12\dfrac{(n-1)\,\tilde S_n^2}{\sigma^2} \sim \chi^2_{n-1} ;
  • n (Xˉn−m)S~n∼Tn−1\dfrac{\sqrt{n}\,(\bar X_n - m)}{\tilde S_n} \sim \mathcal{T}_{n-1}.

La troisième ligne est la clé : en remplaçant l’écart-type inconnu σ\sigma par son estimation S~n\tilde S_n, la loi normale devient une loi de Student. Les n−1n - 1 degrés de liberté rappellent qu’on a estimé la moyenne.

Un intervalle de confiance (IC) de niveau 1−α1 - \alpha pour θ\theta est un intervalle [A,B][A, B], dont les bornes sont des statistiques (donc aléatoires), tel que

P(A≤θ≤B)=1−αP(A \le \theta \le B) = 1 - \alpha

Le niveau usuel est 95 % (α=0,05\alpha = 0{,}05). La recette est toujours la même : trouver une fonction pivot, c’est-à-dire une expression qui dépend des données et de θ\theta, mais dont la loi est entièrement connue ; l’encadrer entre deux quantiles ; puis isoler θ\theta.

On note zpz_p, tk;pt_{k;p}, χk;p2\chi^2_{k;p} et fk,l;pf_{k,l;p} les quantiles d’ordre pp des lois N(0,1)\mathcal{N}(0, 1), Tk\mathcal{T}_k, χk2\chi^2_k et Fk,l\mathcal{F}_{k,l} (la valeur qui laisse une probabilité pp à sa gauche).

Le pivot est n(Xˉn−m)/S~n∼Tn−1\sqrt{n}(\bar X_n - m)/\tilde S_n \sim \mathcal{T}_{n-1}. Par symétrie,

P(−tn−1;1−α/2≤n (Xˉn−m)S~n≤tn−1;1−α/2)=1−αP\left( -t_{n-1;1-\alpha/2} \le \frac{\sqrt{n}\,(\bar X_n - m)}{\tilde S_n} \le t_{n-1;1-\alpha/2} \right) = 1 - \alpha

et en isolant mm :

IC1−α(m)=[Xˉn−tn−1;1−α/2S~nn ; Xˉn+tn−1;1−α/2S~nn]IC_{1-\alpha}(m) = \left[ \bar X_n - t_{n-1;1-\alpha/2} \frac{\tilde S_n}{\sqrt{n}} \ ;\ \bar X_n + t_{n-1;1-\alpha/2} \frac{\tilde S_n}{\sqrt{n}} \right]

La quantité S~n/n\tilde S_n/\sqrt{n} s’appelle l’erreur-type (standard error) de la moyenne.

248249250251252253254masse (g)Student : [249,30 ; 251,30]1,96 (piège) : [249,44 ; 251,16]cible 250 gles 10 paquets
L'intervalle de Student (en vert) est un peu plus large que celui obtenu avec 1,96 (en rose), qui oublie que σ a été estimé : c'est le piège ci-dessous.

Si σ\sigma était connu, on utiliserait le pivot normal et le quantile z1−α/2=1,96z_{1-\alpha/2} = 1{,}96 à la place de tn−1;1−α/2t_{n-1;1-\alpha/2}. Et si la loi n’est pas normale mais nn est grand (disons au moins 30), le TCL justifie l’intervalle approché Xˉn±z1−α/2 S~n/n\bar X_n \pm z_{1-\alpha/2}\,\tilde S_n/\sqrt{n}.

Le pivot est (n−1)S~n2/σ2∼χn−12(n-1)\tilde S_n^2/\sigma^2 \sim \chi^2_{n-1}. La loi n’étant pas symétrique, on prend deux quantiles différents :

IC1−α(σ2)=[(n−1) S~n2χn−1;1−α/22 ; (n−1) S~n2χn−1;α/22]IC_{1-\alpha}(\sigma^2) = \left[ \frac{(n-1)\,\tilde S_n^2}{\chi^2_{n-1;1-\alpha/2}} \ ;\ \frac{(n-1)\,\tilde S_n^2}{\chi^2_{n-1;\alpha/2}} \right]

Attention à l’inversion : le grand quantile donne la borne inférieure.

0510152025(n − 1) S̃² / σ², loi du χ² à 9 ddl0,000,020,040,060,080,100,120,14densité2,70019,02395 %2,5 %2,5 %borne haute : σ² ≤ 17,44 / 2,700 ≈ 6,46borne basse :σ² ≥ 17,44 / 19,023 ≈ 0,92
On encadre le pivot entre deux quantiles non symétriques, puis on inverse : le grand quantile 19,023 donne la borne basse de σ², le petit quantile 2,700 la borne haute.

Dans une enquête auprès de 400 étudiants rennais, 136 déclarent venir à vélo : p^=0,34\hat p = 0{,}34. Pour nn grand, le TCL donne n(p^−p)/p(1−p)≈N(0,1)\sqrt{n}(\hat p - p)/\sqrt{p(1-p)} \approx \mathcal{N}(0, 1). En remplaçant pp par p^\hat p sous la racine, on obtient l’intervalle approché

IC1−α(p)≈[p^−z1−α/2p^(1−p^)n ; p^+z1−α/2p^(1−p^)n]IC_{1-\alpha}(p) \approx \left[ \hat p - z_{1-\alpha/2}\sqrt{\frac{\hat p(1-\hat p)}{n}} \ ;\ \hat p + z_{1-\alpha/2}\sqrt{\frac{\hat p(1-\hat p)}{n}} \right]

Ici, la demi-largeur vaut 1,960,34×0,66/400≈0,0461{,}96\sqrt{0{,}34 \times 0{,}66/400} \approx 0{,}046 : entre 29,4 % et 38,6 % des étudiants viennent à vélo.

Combien faut-il interroger de personnes pour une précision donnée ? Comme p(1−p)≤1/4p(1-p) \le 1/4, il suffit que 1,96×12n≤e1{,}96 \times \frac{1}{2\sqrt{n}} \le e, soit n≥(1,96/(2e))2n \ge (1{,}96/(2e))^2. Pour ±3\pm 3 points, n≥1 068n \ge 1\,068 ; pour ±2\pm 2 points, n≥2 401n \ge 2\,401. Diviser l’erreur par deux coûte quatre fois plus de données.

05001 0001 5002 0002 5003 0003 5004 000taille de l’échantillon n0246810demi-largeur à 95 % (points)± 3 points : n ≥ 1 068± 2 points : n ≥ 2 401enquête vélo : n = 400, ± 4,9 points au pire(± 4,6 avec p̂ = 0,34)
La précision décroît en 1/√n : passer de ±3 à ±2 points coûte plus du double d'enquêtés, et chaque gain supplémentaire devient de plus en plus cher.
cafe <- c(251.3, 248.7, 250.9, 252.4, 249.5, 250.2, 247.8, 251.7, 250.6, 249.9)
t.test(cafe)$conf.int # IC à 95 % sur la moyenne
n <- length(cafe); s2 <- var(cafe)
(n - 1) * s2 / qchisq(c(0.975, 0.025), df = n - 1) # IC sur la variance
prop.test(136, 400, correct = FALSE)$conf.int # IC sur une proportion (variante de Wilson)
import numpy as np
from scipy import stats
cafe = np.array([251.3, 248.7, 250.9, 252.4, 249.5, 250.2, 247.8, 251.7, 250.6, 249.9])
n, m, s = len(cafe), cafe.mean(), cafe.std(ddof=1)
print(stats.t.interval(0.95, df=n - 1, loc=m, scale=s / np.sqrt(n))) # (249.30, 251.30)
print((n - 1) * s**2 / stats.chi2.ppf([0.975, 0.025], df=n - 1)) # (0.92, 6.46)

Une fois calculé, [249,30 ; 251,30][249{,}30 \ ;\ 251{,}30] est un intervalle fixe, et mm est un nombre fixe : soit mm est dedans, soit il n’y est pas. Il n’y a plus rien d’aléatoire. Le « 95 % » porte sur la procédure : si l’on répétait l’échantillonnage un grand nombre de fois, 95 % des intervalles ainsi construits contiendraient mm.

Une simulation le vérifie : en tirant 20 000 échantillons de 10 paquets d’une loi normale de moyenne 250, l’intervalle de Student contient 250 dans 94,8 % des cas.

248,0248,5249,0249,5250,0250,5251,0251,5252,0masse (g) : 50 échantillons simulés de 10 paquets, IC de Student à 95 %vraie moyenne m = 25047 intervalles sur 50 contiennent m ; les 3 autres (en rose) le manquent
Chaque échantillon donne un intervalle différent ; la vraie moyenne, elle, ne bouge pas. Environ 95 % des intervalles la capturent : le niveau est une propriété de la méthode.

La largeur de l’intervalle dépend de trois choses :

  • le niveau : plus on veut être sûr, plus l’intervalle est large ;
  • la dispersion σ\sigma des données ;
  • la taille nn : la largeur décroît en 1/n1/\sqrt{n}.
  • χk2\chi^2_k est la loi d’une somme de kk carrés de normales centrées réduites indépendantes (c’est une loi gamma Γ(k/2,1/2)\Gamma(k/2, 1/2)) ; Student et Fisher en dérivent.
  • Théorème de Fisher (échantillon gaussien) : Xˉn\bar X_n et S~n2\tilde S_n^2 indépendantes, (n−1)S~n2/σ2∼χn−12(n-1)\tilde S_n^2/\sigma^2 \sim \chi^2_{n-1}, n(Xˉn−m)/S~n∼Tn−1\sqrt{n}(\bar X_n - m)/\tilde S_n \sim \mathcal{T}_{n-1}.
  • Un IC se construit à partir d’une fonction pivot de loi connue, encadrée par deux quantiles.
  • Moyenne : xˉ±tn−1;1−α/2 s~/n\bar x \pm t_{n-1;1-\alpha/2}\,\tilde s/\sqrt{n} ; variance : quantiles du chi-deux, inversés ; proportion : p^±z1−α/2p^(1−p^)/n\hat p \pm z_{1-\alpha/2}\sqrt{\hat p(1-\hat p)/n}.
  • Le niveau de confiance est une propriété de la méthode, pas de l’intervalle calculé ; la largeur décroît en 1/n1/\sqrt{n}.

Exercice · Lire une sortie et recalculer un intervalle

facile

Sur 25 trajets domicile-école, un étudiant mesure une durée moyenne de 23,4 minutes, avec un écart-type corrigé de 4,5 minutes. On admet la normalité. Donnez un IC à 95 % de la durée moyenne (t24;0,975≈2,064t_{24;0,975} \approx 2{,}064).

Voir la solution

L’erreur-type vaut 4,5/25=0,94{,}5/\sqrt{25} = 0{,}9 minute. La demi-largeur vaut 2,064×0,9≈1,862{,}064 \times 0{,}9 \approx 1{,}86 minute. D’où

IC95 %(m)≈[21,5 ; 25,3] minutes.IC_{95\,\%}(m) \approx [21{,}5 \ ;\ 25{,}3] \text{ minutes.}

En code

import numpy as np
from scipy import stats
n, moyenne, s = 25, 23.4, 4.5
erreur_type = s / np.sqrt(n) # 0.9
t = stats.t.ppf(0.975, df=n - 1) # 2.064
print(moyenne - t * erreur_type, moyenne + t * erreur_type) # 21.54 25.26

Exercice · Taille d'échantillon d'un sondage

moyen

Un institut veut estimer à ±2,5\pm 2{,}5 points près (niveau 95 %) la part de Rennais favorables à une nouvelle ligne de tramway.

  1. Combien de personnes interroger, sans information préalable ?
  2. Et si une étude précédente indique une proportion proche de 10 % ?
Voir la solution
  1. Sans information, on se place dans le pire cas p(1−p)=1/4p(1-p) = 1/4 : n≥(1,96/(2×0,025))2=39,22≈1 536,6n \ge (1{,}96/(2 \times 0{,}025))^2 = 39{,}2^2 \approx 1\,536{,}6, donc 1 537 personnes.
  2. Avec p≈0,1p \approx 0{,}1 : n≥1,962×0,1×0,9/0,0252≈553,2n \ge 1{,}96^2 \times 0{,}1 \times 0{,}9 / 0{,}025^2 \approx 553{,}2, donc environ 554 personnes. Une proportion éloignée de 50 % est plus facile à estimer avec une précision absolue donnée.

En code

import numpy as np
from scipy import stats
z = stats.norm.ppf(0.975) # 1.96
e = 0.025 # précision voulue : 2,5 points
def taille(p): # plus petit n tel que z*sqrt(p(1-p)/n) <= e
return z**2 * p * (1 - p) / e**2
print(taille(0.5), int(np.ceil(taille(0.5)))) # 1536.6 1537 (pire cas)
print(taille(0.1), int(np.ceil(taille(0.1)))) # 553.2 554

Exercice · Démontrer une relation entre lois

difficile

Montrez que si T∼TkT \sim \mathcal{T}_k, alors T2∼F1,kT^2 \sim \mathcal{F}_{1,k}. Déduisez-en le lien entre tk;0,975t_{k;0,975} et f1,k;0,95f_{1,k;0,95}.

Voir la solution

Par définition, T=Z/Y/kT = Z/\sqrt{Y/k} avec Z∼N(0,1)Z \sim \mathcal{N}(0,1) et Y∼χk2Y \sim \chi^2_k indépendantes. Donc T2=Z2/1Y/kT^2 = \frac{Z^2 / 1}{Y / k}. Or Z2∼χ12Z^2 \sim \chi^2_1 (première étape de la preuve du chi-deux), et Z2Z^2 reste indépendante de YY. C’est exactement la définition de F1,k\mathcal{F}_{1,k}.

Par symétrie de la loi de Student, P(T2≤t2)=P(−t≤T≤t)P(T^2 \le t^2) = P(-t \le T \le t). Avec t=tk;0,975t = t_{k;0,975}, cette probabilité vaut 0,950{,}95. Donc f1,k;0,95=tk;0,9752f_{1,k;0,95} = t_{k;0,975}^2. Par exemple, 2,2622≈5,12=f1,9;0,952{,}262^2 \approx 5{,}12 = f_{1,9;0,95}. Ce lien reviendra en régression : le test de Student sur une pente et le test de Fisher global coïncident en régression simple.

En code

import numpy as np
from scipy import stats
k = 9
print(stats.t.ppf(0.975, k)**2, stats.f.ppf(0.95, 1, k)) # 5.117 5.117
# Simulation : T = Z / sqrt(Y / k), puis on compare T^2 à la loi F(1, k)
rng = np.random.default_rng(0)
Z = rng.standard_normal(100_000)
Y = rng.chisquare(k, 100_000)
T2 = (Z / np.sqrt(Y / k))**2
print(np.quantile(T2, [0.5, 0.9, 0.95])) # 0.49 3.37 5.13 (simulés)
print(stats.f.ppf([0.5, 0.9, 0.95], 1, k)) # 0.49 3.36 5.12 (loi F(1, 9))