Analyse de données de chronographe¶
Résumé pratique¶
Supposons que nous avons un échantillon de $n$ valeurs, notées $x_1,\ldots,x_n$. La moyenne empirique est $$ \hat{\mu} = \frac{1}{n} \sum_{i = 1}^n x_i, $$ et l'écart-type empirique est $$ \hat{\sigma} = \sqrt{\frac{1}{n-1} \sum_{i = 1}^n (x_i - \hat{\mu})^2}. $$ Si le mesure de moyenne est en général assez fiable, l'évaluation de l'écart-type comporte toujours un bruit important, et l'information de l'écart-type est avant tout qualitative, plus que quantitative.
Explications mathématiques¶
Les preuves sont omises dans les résultats donnés ci-dessous, pour se concentrer sur des considérations pratiques. Le lecteur désirant en connaître davantage pourra par exemple consulter https://bookdown.org/egarpor/inference/
using Distributions
using Plots
using Random
La distribution normale¶
Nous supposerons à fins d'illustrations que la vitesse initiale suit une distribution normale de moyenne 850$m/s$ et d'écart-type 3,5$m/s$, ce qui en Julia peut s'écrire comme
vitesse = Normal(850,3.5)
pdfvitesse(x) = pdf(vitesse, x)
plot(pdfvitesse, 830, 870)
Le graphe correspond à la célèbre courbe en cloche célébrée en probabilité.
Moyenne et écart-type¶
Moyenne¶
La notion de moyenne est assez intuitive, puisque c'est la valeur centrale des observations. Supposons que nous avons $n$ mesures $x_1,\ldots,x_n$, la moyenne échantillonnale vaut $$ \hat{\mu} = \frac{1}{n} \sum_{i = 1}^n x_i. $$ La loi des grands nombres nous apprend que quand $n$ tends vers l'infini, $\hat{\mu}$ converge vers l'espérance de la distribution $\mu = E[X]$, en supposant que toutes les observations sont issues de la même distribution. Mathématiquement parlant, il faut cependant que cette espérance existe, ce qui est le cas pour la quasi totalité des distributions statistiques, et la convergence se fait en probabilité (loi faible des grands nombres) ou presque sûrement (loi forte des grands nombres). Nous pouvons cependant ignorer ces détails mathématiques dans ce qui suit.
Si asymptotiquement, la moyenne est normalement distribuée en vertu du théorème de la limite centrale, les points mesurés peuvent venir d'une autre distribution. Utiliser l'écart-type pour déterminer la proportion de points autour d'une valeur donnée requiert donc l'hypothèse que ceux-ci proviennent d'une loi normale.
Supposons que c'est le cas et simulons des mesures de vitesse avec la distribution préalablement créée. Nous allons générer 10000 mesures, ce qui est bien sûr irréaliste mais permettra de discuter du calcul de l'écart-type. La graine du générateur aléatoire est fixée (2026, puis 2027 et 2028 pour les deux expériences suivantes, valeurs choisies d'avance) : les nombres cités dans le texte sont ceux que chacun obtiendra en réexécutant le notebook avec Julia 1.12 (le flux aléatoire d'une graine n'est pas garanti d'une version de Julia à l'autre).
Random.seed!(2026)
mesures = rand(vitesse, 10000)
Remarquons que la moyenne et l'écart-type de l'échantillon correspondent bien approximativement, mais pas parfaitement, à nos hypothèses de départ:
μ = mean(mesures)
σ = std(mesures)
μ, σ
Regardons à présent l'évolution des moyennes et écart-type empirique en partant de 3 observations jusqu'à 10000. L'analyse est bien entendu idéalisée puisqu'on suppose les mesures parfaites, ce qui ne sera jamais le cas en pratique.
moyennes = [ mean(mesures[1:i]) for i = 3:10000 ]
ecarttypes = [ std(mesures[1:i]) for i = 3:10000 ]
plot(moyennes)
Nous constatons que nous avons rapidement une bonne estimation de la vitesse moyenne. Il en est tout autre pour l'écart-type.
plot(ecarttypes)
Si nous nous intéressons seulement aux 20 premières valeurs (échantillons de taille 3 à 22), nous avons le graphe suivant.
plot(ecarttypes[1:20])
Nous voyons que l'estimateur d'écart-type converge lentement vers la vraie valeur, et il convient de ne pas prendre les valeurs estimées comme précises (alors que l'expérience est idéalisée!). Remarquons que l'application de la formule initiale sur trois observations donne bien la valeur obtenue avec la fonction std:
x=(mesures[1]+mesures[2]+mesures[3])/3
y=(mesures[1]^2+mesures[2]^2+mesures[3]^2)/3
sqrt((y-x^2)*3/2)
En poursuivant sur les vingt tailles d'échantillon suivantes (23 à 42 observations — la même série, prolongée), l'estimation continue de fluctuer :
plot(ecarttypes[21:40])
Intervalles de confiance¶
Si les mesures sont indépendantes et identiquement distribuées (i.i.d.), il est possible de construire un intervalle contenant avec une probabilité donnée la valeur recherchée.
Le théorème de la limite centrale nous informe qu'asymptotiquement $$ P \left[ \mu \in \left[{\hat {\mu }}-|z_{\alpha /2}|{\frac {1}{\sqrt {n}}}\hat{\sigma},{\hat {\mu }}+|z_{\alpha /2}|{\frac {1}{\sqrt {n}}} \hat{\sigma} \right] \right] \rightarrow 1 - \alpha, $$ où $\alpha$ est le niveau auquel l'intervalle de confiance est construit. Des choix typiques sont $\alpha = 0.05$ ou $\alpha = 0.1$, donnant des probabilités respectives de 95% et 90%. $$ P \left[ \sigma^{2} \in \left[\hat{\sigma}^{2}-|z_{\alpha /2}|{\frac {\sqrt{2}}{\sqrt {n}}}\hat{\sigma}^{2}, \hat{\sigma}^{2}+|z_{\alpha /2}|{\frac {\sqrt{2}}{\sqrt {n}}}\hat{\sigma}^{2}\right] \right] \rightarrow 1 - \alpha $$
Ce second intervalle suppose de plus que les observations suivent une loi normale : le facteur $\sqrt{2}$ vient de la variance de $\hat{\sigma}^2$, qui vaut $2\sigma^4/n$ pour une loi normale mais $(\kappa-1)\sigma^4/n$ en général, $\kappa$ étant le kurtosis de la distribution. Contrairement à celui de la moyenne, il ne découle pas du seul théorème de la limite centrale.
Dans le cas où les observations sont i.i.d. et normalement distribuées, nous pouvons remplacer les intervalles de confiance asymptotiques par des intervalles exacts. C'est important en pratique : pour des échantillons de petite taille (typiquement $n < 30$), l'approximation normale est insuffisante et les intervalles basés sur les distributions $t$ de Student et $\chi^2$ sont nettement plus fiables.
où $\chi^2_{n-1}$ désigne la loi chi-carré à $n-1$ degrés de liberté.
Reprenons les données que nous avons générées, en se rappelant que les hypothèses de normalité étaient respectées, et par conséquent, nous pouvons utiliser les dernières formules.
Considérons 20 observations et posons tout d'abord $\alpha$ à 0,05, autrement dit, nous construisons un intervalle de confiance à 95%.
n = 20
S = TDist(n-1)
χ = Chisq(n-1)
α = 0.05
Δμ = quantile(S, 1-α/2)*ecarttypes[n-2]/sqrt(n)
μinf = moyennes[n-2]-Δμ
μsup = moyennes[n-2]+Δμ
σinf = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, 1-α/2))
σsup = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, α/2))
μinf, μsup
L'intervalle de confiance obtenu pour l'écart-type est
σinf, σsup
L'intervalle comprend bien la véritable valeur de 3,5 m/s, mais la borne supérieure est de 4,61 m/s ! Autrement dit, sur base des 20 observations uniquement, il est impossible de s'assurer que l'écart-type est sous la barre des 3,5 m/s. La mesure d'écart-type est par ailleurs
ecarttypes[n-2]
ce qui dans le cas présent est une sous-estimation du véritable écart-type, contribuant à limiter la borne supérieure.
α = 0.1
Δμ = quantile(S, 1-α/2)*ecarttypes[n-2]/sqrt(n)
μinf = moyennes[n-2]-Δμ
μsup = moyennes[n-2]+Δμ
σinf = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, 1-α/2))
σsup = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, α/2))
σinf, σsup
L'imprécision sur l'écart-type est encore très grande.
Refaisons la même expérience, mais avec un écart-type réel de 3 m/s.
vitesse = Normal(850,3.0)
Random.seed!(2027)
mesures = rand(vitesse, 10000)
μ = mean(mesures)
σ = std(mesures)
moyennes = [ mean(mesures[1:i]) for i = 3:10000 ]
ecarttypes = [ std(mesures[1:i]) for i = 3:10000 ]
μ, σ
α = 0.1
Δμ = quantile(S, 1-α/2)*ecarttypes[n-2]/sqrt(n)
μinf = moyennes[n-2]-Δμ
μsup = moyennes[n-2]+Δμ
σinf = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, 1-α/2))
σsup = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, α/2))
σinf, σsup
On voit que l'imprécision rapportée par l'intervalle de confiance reste importante, et la borne supérieure plus grande que 3,5 m/s. Diminuons l'écart-type à 2,5 m/s.
vitesse = Normal(850,2.5)
Random.seed!(2028)
mesures = rand(vitesse, 10000)
μ = mean(mesures)
σ = std(mesures)
moyennes = [ mean(mesures[1:i]) for i = 3:10000 ]
ecarttypes = [ std(mesures[1:i]) for i = 3:10000 ]
μ, σ
α = 0.1
Δμ = quantile(S, 1-α/2)*ecarttypes[n-2]/sqrt(n)
μinf = moyennes[n-2]-Δμ
μsup = moyennes[n-2]+Δμ
σinf = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, 1-α/2))
σsup = sqrt((n-1)ecarttypes[n-2]^2/quantile(χ, α/2))
σinf, σsup
Cette fois, la borne supérieure (3,21 m/s) passe sous les 3,5 m/s. Mais ce n'est pas acquis d'avance, et c'est peut-être la leçon principale de ce notebook : avec un écart-type réel de 2,5 m/s — pourtant nettement sous le seuil — et 20 coups, l'intervalle à 90 % ne passe sous 3,5 m/s qu'avec une probabilité d'environ 60 %. Quatre séries de 20 coups sur dix échoueraient donc à démontrer ce qui est vrai. Avec un écart-type réel de 3 m/s, cette probabilité tombe à 20 % ; avec 3,5 m/s, le cas de la première expérience (intervalle à 95 %), elle n'est que de 3 %.
Ces probabilités ne dépendent pas du tirage : la borne supérieure passe sous 3,5 m/s dès que l'écart-type mesuré est inférieur à 2,55 m/s (à 90 %), et la loi du $\chi^2$ donne la chance que cela arrive.
Conclusion¶
L'estimation statistique est un art en soi, et la qualité des estimateurs dépend de la quantité que nous cherchons à mesurer. L'estimation d'écart-type demeure délicate, et les valeurs doivent être considérées avec l'imprécision qui les entoure.
Recommandations pratiques pour le tireur :
- La moyenne converge vite : 10 à 15 coups suffisent en général pour obtenir une estimation fiable de la vitesse moyenne.
- L'écart-type converge lentement : avec 10 coups, l'intervalle de confiance à 90 % sur l'écart-type va de −27 % à +65 % autour de la valeur estimée. Avec 20 coups, il va encore de −21 % à +37 %. L'intervalle est asymétrique : l'écart-type réel peut être nettement plus grand que la valeur mesurée, bien plus qu'il ne peut être plus petit. Il faut au moins 30 à 40 coups pour obtenir une estimation raisonnablement stable de l'écart-type, et idéalement davantage.
- Ne pas surinterprêter un SD bas : un écart-type de 8 m/s mesuré sur 10 coups pourrait en réalité être de 5,5 comme de 14,6 m/s (intervalle à 95 %). Inversement, un bon SD sur un petit échantillon n'est pas une garantie de régularité.
- L'extreme spread (ES) est encore moins fiable : l'écart extrême (différence entre la vitesse la plus haute et la plus basse) dépend entièrement de deux valeurs isolées et croît mécaniquement avec le nombre de coups. C'est un indicateur très bruité qu'il convient de relativiser.