La partie statistique de pyMath est un module python qui permet generer des données statistiques et de les analyser pour un niveau collège - début de lycée.
Analyse des données
-------------------
La gestion des données statistiques se fait à travers 2 classes: *Dataset* (ensemble de données) et *WeightedDataset* (ensemble de données pondérées).
>>> w = WeightedDataset({1:3, 2:4, 3:5}, data_name = "Nombre de frères", weight_name = "Effectifs" )
>>> print(w)
{1:3, 2:4, 3:5}
Le passage du *Dataset* à *WeightedDataset* revient à compter les effectifs de chaque classe (il n'est pas encore possible de définir des classes sous forme d'intervals).
..code-block:: python
>>> W = WeightedDataset(d)
>>> print(W)
{1: 2, 2: 1, 3: 1, 4: 2}
Une fois les données définies, on peut calculer les indicateurs statistiques suivants:
- L'effectif total (ou la pondération totale):
..code-block:: python
>>> d.effectif_total()
6
>>> w.effectif_total()
12
- La somme:
..code-block:: python
>>> d.sum()
15
>>> w.sum() #/!\ c'est une somme pondérée
26
- La moyenne:
..code-block:: python
>>> d.mean()
2.5
>>> w.mean()
2.17
- La variance et l'écart-type (sd):
..code-block:: python
>>> d.variance()
1.58
>>> d.sd()
1.26
>>> w.variance()
0.64
>>> w.sd()
0.8
- Les quartiles et les valeurs extrèmes:
..code-block:: python
>>> max(d)
4
>>> d.quartiles() #(min, Q1, Me, Q3, Max)
(1, 3, 3, 4, 4)
>>> d.quartile(1) # Q1
3
>>> min(w)
1
>>> w.quartiles() #(min, Q1, Me, Q3, Max)
(1, 1.5, 2, 3, 3)
>>> w.quartile(2) #Me
2
Enfin une fonction rudimentaire a été ajouté pour présenter ces données dans un tableau formaté pour Latex
Par défaut, les données sont générées suivant une loi normale de paramètres 0, 1 et les valeurs sont arrondis à deux chiffres après la virgule.
Ces paramètres sont modifiables pour avoir une gestion plus fine des données souhaitées.
Distribution des données
^^^^^^^^^^^^^^^^^^^^^^^^
La méthode random accepte deux arguments pour gérer la création de données:
-*distrib*: cet argument peut avoir deux formes. Soit c'est la fonction qui genèrera des données soit c'est un élément de la liste ["gauss", "uniform", "randint", "choice"] qui fera directement appel aux fonctions correspondantes du module *random* intégré dans python.
- rd_args: Ce sont les arguments à faire passer à *distrib*.
..code-block:: python
>>> Dataset.random(10, distrib = "uniform", rd_args = (20, 30)) # des données uniformes entre 20 et 30
On peut vouloir (en particulier pour une distribution normale - gaussienne) que les valeurs générées soient comprises entre deux nombres. Deux arguments gèrent la valeur maximale et minimale: *v_min* et *v_max*.