« Python pour le calcul scientifique/Statistiques » : différence entre les versions

Aller à la navigation Aller à la recherche
explicitation de l'espace de nom
(explicitation de l'espace de nom)
 
Rappel : la classe des matrices ''(ndarray)'' dispose de méthodes permettant de calculer des statistiques sur les éléments des matrices :
* <code>.min()</code> : minimum des valeurs ;
* <code>.max()</code> : maximum des valeurs ;
* <code>.ptp()</code> : écart amplitude « max – min » ''({{lang|en|peak to peak}})'' ;
* <code>.mean()</code> : moyenne ;
* <code>.std()</code> : écart type ''({{lang|en|standard deviation}})''.
 
== Statistiques descriptives ==
 
NumPy fournit la fonction <code>np.quantile()</code> qui détermine les quantiles avec la syntaxe :
<source lang="python">
np.quantile(M, q)
np.quantile(M, [0, 0.25, 0.5, 0.75, 1])
</source>
Si un des éléments de la matrice est un NaN, le résultat est un NaN. Pour éviter cela, on peut utiliser la fonction <code>np.nanquantile()</code> qui ignore les NaN.
 
Les fonctions <code>np.percentile()</code> et <code>np.nanpercentile()</code> donnent les centiles ; on indique alors le centile que l'on veut sous la forme d'un nombre entier entre 0 et 100.
 
Nous disposons également des fonctions suivantes :
* <code>np.amin()</code>, <code>np.nanmin()</code> : minimum ;
* <code>np.amax()</code>, <code>np.nanmax()</code> : maximum ;
* <code>np.ptp()</code> : amplitude.
 
Notons que pour toutes les fonctions, il est possible d'indiquer l'axe selon lequel on effectue le calcul. Par exemple,
 
NumPy fournit les indicateurs de tendance centrale suivants :
* <code>np.mean()</code> et <code>np.nanmean()</code> : moyenne ;
* <code>np.average()</code> et <code>np.nanaverage()</code> : moyenne pondérée ; la syntaxe est <code>np.average(M, axe, poids)</code> ou bien <code>np.average(M, weights = poids)</code> (voir ci-après) ;
* <code>np.median()</code> et <code>np.nanmedian()</code> : médiane.
En terme de performances, la fonction <code>np.mean()</code> est équivalente à la méthode <code>M.mean()</code> et à la fonction <code>np.average()</code> sans poids (ce qui équivaut donc à la moyenne). En revanche, la fonction <code>np.nanmean()</code> est plus lente, de même que la fonction <code>np.average()</code> lorsque l'on utilise des poids (même s'ils sont tous égaux à 1).
 
 
NumPy fournit également les indicateurs de dispersion suivants :
* <code>np.std()</code>, <code>np.nanstd()</code> : écart type ''({{lang|en|standard deviation}})'' ;
* <code>np.var()</code>, <code>np.np.nanvar()</code> : variance.
 
== Fréquence, histogramme ==
 
On peut générer une matrice aléatoire avec les fonctions <code>np.random.rand()</code>, qui utilise une loi uniforme sur [0 ; 1], et <code>np.random.randn()</code> qui utilise une loi normale centrée réduite.
 
Lorsque l'on dispose d'une série de données aléatoires, qu'elles aient été mesurées ou bien générées par une fonction aléatoire, on peut ensuite les mettre dans des classes ''({{lang|en|bins}})''. Les classes sont définies par un vecteur (ou une liste, un n-uplet) <code>[c1, c2,c3, …, cn]</code>. La classe 0 désigne les valeurs inférieures à ''c''<sub>1</sub> ; la classe 1 désigne les valeurs ''c''<sub>1</sub> ≤ ''x'' &lt; ''c''<sub>2</sub> ; la classe ''n'' (<code>n == len(classes)</code>) désigne les valeurs supérieures à ''c<sub>n</sub>''.
 
La fonction <code>np.digitize()</code> indique dans quelle classe se trouve un nombre. Si on lui donne une matrice (ou un vecteur, une liste, un n-uplet), il renvoie une matrice de même dimension, <code>np.digitize(M, classes)[i, j]</code> étant la classe de l'élément <code>M[i, j]</code>. Par exemple :
 
<source lang="python">
[[Fichier:Histogramme loi normale 50 ech numpy pyplot.png|vignette|Histogramme tracé avec Python/Numpy/Matplotlib.]]
 
La fonction <code>np.histogram()</code> détermine ''n'' classes de même taille et renvoie deux vecteurs : la première contient le nombre d'éléments dans chaque classe et la seconde décrit les classes (c'est-à-dire les bornes des classes).
 
Pour tracer l'histogramme, nous disposons de la fonction <code>matplotlib.pyplotplt.hist()</code> :
<source lang="python">
M = np.random.randn(50)
</source>
 
La fonction <code>np.bincount()</code> travaille sur les listes de nombre entiers. Elle renvoie un n-uplet, <code>np.bincount(M)[i]</code> est le nombre de fois que le nombre ''i'' revient dans la matrice M — rappel, le premier élément du n-uplet <code>np.bincount(M)</code> a l'indice 0 donc correspond au nombre de fois que le nombre 0 apparaît dans la matrice M.
 
== Notes et références ==
13 667

modifications

Menu de navigation