Octave est un logiciel libre en grande partie compatible avec le logiciel commercial MatlabTM. Il est disponible sur le site http://www.octave.org. Pour tracer les graphiques, il utilise le logiciel Gnuplot (http://www.gnuplot.info). De nombreuses fonctions statistiques sont intégrées à Octave, seules certaines d’entre elles seront présentées et utilisées dans ce document.
Soit un fichier mesures.dat contenant N valeurs, on charge le fichier en mémoire et on trie les valeurs par ordre croissant :
|
On peut alors très simplement calculer la valeur moyenne des valeurs, l’écart-type sans biais, les valeurs centrées réduites ainsi que l’incertitude-type de type A.
|
Pour effectuer un test du 2, il faut tout d’abord déterminer le nombre de classes.
|
On détermine ensuite les bornes de chacun des intervalles :
|
On calcule alors les fréquences pour chacune des classes.
|
On cherche les fréquences théoriques. Celles-ci sont obtenues à partir de la fonction de cumul de la loi normale (figures 1 et 2).
|
On peut alors calculer la valeur totale 2, et en déduire la probabilité
de commettre une erreur en
rejetant l’hypothèse gaussienne.
|
Connaissant 2 et le nombre de degrés de liberté L = NCl - 3, on est donc capable de calculer
.
Octave fournit également la fonction chisquare_inv qui calcule
2 à partir de L et
(c’est cette
fonction qui peut être utilisée pour remplir la table du
2). Les fonctions implémentées dans Octave
travaillent en fait sur la quantité 1 -
, on aura donc 1 -
=chisquare_cdf(
2,L) et
2 =chisquare_inv(1 -
,L).
Pour le test de Smirnov-Kolmogorov, on calcule tout d’abord les cumulants, en tenant compte du cas particulier des valeurs multiples.
|
Le cumul théorique (figure 2) est ensuite calculé, afin d’obtenir l’écart avec le cumul obtenu précédemment, et l’écart maximal de ||F - Fn*|| est recherché.
|
Il nous faut à présent, comme pour le test du 2, calculer la probabilté
SK de commettre une
erreur en rejetant l’hypothèse gaussienne. Pour cela, Octave nous propose deux fonctions. La
première fonction est kolmogorov_smirnov_cdf(x). Or la table disponible dans la
littérature donnant
SK en fonction du nombre de mesures et de l’écart maximal des cumulants
comporte deux entrées. L’explication est que la fonction définie par Octave n’est que la formule
asymptotique pour le calcul de la probabilité, prenant comme argument
.max||F - F
n*||,
cette formule étant valable pour un nombre de mesures n supérieur à 35 ou 100 selon les
auteurs.
![]() | (1) |
La deuxième fonction présente dans Octave s’utilise de la manière suivante :
[SK, ks] = kolmogorov_smirnov_test(vcr, "normal", "<>") . Elle prend
donc directement les valeurs centrées réduites des mesures en argument, et retourne
SK et
ks=
.max||F - F
n*||. Cette deuxième fonction est donc légèrement plus directe que la première
présentée, mais elle souffre du même défaut.
La solution consiste donc à implémenter la véritable fonction donnant SK. Cette fonction est
définie par la formule suivante :
![]() | (2) |
où |x| représente la partie entière de x.
On va donc créer la fonction skbl.m (pour Smirnov-Kolmogorov bilatéral).
|
Il est donc à présent trivial de calculer SK en faisant appel à cette routine.
|
On peut remarquer que si l’on sait à présent calculer SK à partir de n et de l’écart maximal, on ne
connaît pas la fonction inverse permettant d’obtenir la table de Smirnov-Kolmogorov. En fait, cette
fonction n’existe pas, on est obligé de procéder par dichotomie. L’algorithme suivant permet de calculer
la table de Smirnov-Kolmogorov telle que publiée dans [Mesure physique et instrumentation, D.
Barchiesi, Ellipses, 2003].
|
On peut remarquer que pour des valeurs de = max||F - Fn*|| faibles, l’équation 2 donne un
résultat supérieur à 1 !
On cherche à déterminer l’intervalle dans lequelle on aura P% de chance d’obtenir une nouvelle
mesure. Si l’on suppose la répartition des mesures gaussiennes, alors l’intervalle est : [-k
;
+ k
]
avec
la valeur moyenne des mesures,
l’écart-type sans biais et k le facteur d’élargissement obtenu
à l’aide du code suivant :
|
On pourra vérifier que pic=stdnormal_cdf(k1)*2-1.
On cherche à déterminer l’intervalle dans lequelle on aura P% de chance d’obtenir la valeur mesurée. Si
l’on suppose la répartition des mesures gaussiennes, alors la valeur moyenne suit la loi de Student
(figure 3) et l’intervalle est : [ - k
;
+ k
] avec
la valeur moyenne des mesures,
l’écart-type sans biais, n le nombre de mesures et k le facteur d’élargissement obtenu à
l’aide du code suivant (le calcul fait apparaître la quantité n - 1 qui est le degré de liberté
L) :
|
Les fonctions de répartitions ou de cumul présentées dans les paragraphes précédents sont calculables
directement à l’aide des formules qui suivent. Par contre, comme dans le cas de la distribution de
Smirnov-Kolomogorov, les fonctions inverses font appel à des algorithmes plus complexes qu’un calcul
d’intégrale, et ne sont pas décrites ici.
Moyenne : =
i=1Nm
i.
Écart-type sans biais : N =
Valeur centrée réduite :
stdnormal_pdf(x) : e-x2/2
stdnormal_cdf(x) : (1 + erf(x/
)) avec erf(z) =
t=0ze-t2
dt, soit après changement
de variable
= t
pour le calcul de l’intégrale erf(z) =
+
=0ze-
2/2d
t_pdf(x,n) : avec
(a,b) =
et
(z) =
t=0
tz-1e-tdt
Il est possible d’améliorer les codes présentés en rajoutant le tracé des histogrammes, des cumulants,...
$Id: stat_octave.tex,v 1.7 2004/11/16 13:10:27 alex Exp $