Valid XHTML     Valid CSS2    

Décomposition, Conception et Réalisation d'Applications

T.D. 3 : Comptages, moyennes, tracés et statistiques

                    gilles.hunault "at" univ-angers.fr

Table des matières cliquable

  1. Comptages élémentaires pour une variable qualitative binaire

  2. Comptages avancés

  3. Comptages élémentaires pour une variable qualitative éventuellement ordinale

  4. Moyennes d'une variable quantitative

  5. Tracés adaptés aux comptages et moyennes

  6. Statistiques descriptives, statistiques inférentielles et programmation

  7. Affichages «intelligents» de résultats

  8. Search and display en Python, R et PHP

Il est possible d'afficher toutes les solutions via ?solutions=1 et de les masquer via ?solutions=0.

 

1. Comptages élémentaires pour une variable qualitative binaire

On s'intéresse ici au comptage d'une variable qualitative binaire, disons le code-sexe d'un individu dans un échantillon donné. comme pour le fichier cs.txt ci-dessous, où le code-sexe est défini par 1 pour Homme et 2 pour Femme. Quels calculs peut-on faire ? Quels calculs doit-on faire ? Comment présenter les résultats ? Quelles sont les formules ? Peut-on se contenter de juste calculer et afficher les pourcentages ?

Fichier cs.txt :


     IDEN AGE PROF ETUD SEXE REGI USAG
     M001  62    1    2    2    2    3
     M002  60    9    3    1    4    1
     M003  31    9    4    2    4    1
     M004  27    8    4    2    1    1
     M005  22    8    4    1    1    2
     M006  70    4    1    2    1    1
     M007  19    8    4    2    4    2
     M008  53    6    2    2    2    3
     M009  62   16    4    1    2    2
     M010  63   16    0    2    1    0
     M011  65   16    0    1    1    0
     M012  11   12    2    2    4    2
     M013  78   16    3    1    4    1
     M014  20    8    4    1    4    2
     M015  48    1    2    2    3    1
     M016  50    1    1    2    4    2
     M017  49    7    4    1    4    1
     M018  44    1    1    2    2    1
     M019  21    8    4    2    2    2
     M020  23   13    3    2    1    2
     M021  28    6    4    1    3    1
     M022  47    6    2    1    1    1
     M023  64    2    2    1    1    2
     M024  26    8    4    1    4    1
     M025  14   12    2    2    1    2
     M026  43    1    1    1    1    2
     M027  61   16    1    2    1    0
     M028  15   12    3    2    1    2
     M029  29    0    2    2    1    1
     M030  24    1    2    2    1    2
     M031  41    9    4    2    1    1
     M032  37    9    4    2    2    1
     M033  73   16    1    2    1    1
     M034  12   12    2    2    4    1
     M035  40   13    2    2    4    0
     M036  42    7    3    1    3    0
     

Ecrire un programme AWK pour fournir le nombre et le pourcentage d'hommes et de femmes (numéro de la colonne SEXE à déterminer par programme) pour le fichier cs.csv -- le séparateur est le point-virgule -- dont voici un extrait :

Fichier cs.csv (extrait) :


     IDEN;AGE;PROF;ETUD;SEXE;REGI;USAG
     M001;62;1;2;2;2;3
     M002;60;9;3;1;4;1
     M003;31;9;4;2;4;1
     M004;27;8;4;2;1;1
     

Modèle d'affichage :


     Résultats pour la colonne SEXE, colonne numéro 5 (36 valeurs)
      moda 1 efectif 13 pourcentage  36.11
      moda 2 efectif 23 pourcentage  63.89
     

Donner enfin le code R et Python qui effectue les mêmes calculs à l'aide de fonctions déjà existantes.

En admettant que les valeurs du code sexe correspondent au champ SEXE d'une table CS dans une base de données RECENSE, quel serait le code MySQL équivalent, sachant qu'on désirerait un affichage (sans doute incomplet) comme ci-dessous :


     +------+----------+-------+---+
     | sexe | Effectif | pct   | % |
     +------+----------+-------+---+
     |    2 |       23 | 63.89 | % |
     |    1 |       13 | 36.11 | % |
     +------+----------+-------+---+
     

On pourra suivre la méthode ci-dessous pour réaliser le tri à plat :


     ## méthode pour calculer le tri à plat d'une variable qualitative
     
     # 1. lire      les données
     # 2. calculer  les effectifs
     # 3. calculer  les pourcentages
     # 4. créer     une structure d'accueil des modalités, des effectifs et des pourcentages
     # 5. trier     éventuellement cette structure par pourcentage décroissant
     
     # 6. afficher  la structure
     

Solution :  

 

2. Comptages avancés

On admet maintenant qu'il s'agit d'informations qualitatives (sexe : homme/femme ; polio : malade/sain ; état civil : célibataire, marié, veuf-veuve...) issues de grands fichiers de données, disons, plusieurs milliers ou millions de lignes, comme pour le fichier polio.dar qui contient presque 402 000 lignes. On suppose également que chaque fichier est utilisé une seule fois par an, en fin d'année. Peut-on définir, pour une année donnée, un fichier de taille minimale correspondant aux mêmes informations résumées ? Que doit-on alors stocker comme informations si on veut pouvoir comparer les comptages par année, si on veut les cumuler ?

Si on nomme $m_{i}$ les modalités de la variable, $n_{i,a}$ les effectifs associés pour l'année $a$ et $f_{i,a}$ les effectifs relatifs pour l'année $a$, donner la formule qui permet d'obtenir les effectifs cumulés $C_{i,a+1}$ et celle des effectifs relatifs cumulés $F_{i,a+1}$ à partir des valeurs de $n_{i,a}$, de $c_{i,a}$ et de $n_{i,a+1}$ si on suppose qu'on est rendu à l'année $a+1$ et qu'on vient de calculer les $n_{i,a+1}$.

Au passage, comment produit-on des formules de mathématiques dans une page Web ?

Solution :  

 

3. Comptages élémentaires pour une variable qualitative éventuellement ordinale

On travaille maintenant avec une variable ordinale, par exemple le degré de sévérité d'une maladie, comme dans le fichier malades.txt où le code 0 signifie non malade, le code 1 signifie un peu malade, le code 2 signifie malade, le code 3 signifie très malade et le code 4 signifie très gravement malade. Un exemple de code réel est par exemple le score METAVIR F.

Fichier malades.txt :


     iden Score
     I0001 1
     I0002 4
     I0003 4
     I0004 0
     I0005 1
     [...]
     I9805 2
     I9806 3
     

Reprendre la discussion sur les calculs et le stockage.

Solution :  

 

4. Moyennes d'une variable quantitative

On s'intéresse ici au résumé nommé moyenne arithmétique d'une variable quantitative, comme par exemple l'âge d'une personne exprimé en années. Si on dispose d'un fichier comme ages.txt où sur chaque ligne on a un identifiant et l'âge, comment calculer rapidement cette moyenne ?

Fichier ages.txt :


     Patient  Age
     I001     35
     I012     18
     I103     12
     I017     20
     I088     14
     

On vient de calculer la moyenne arithmétique $m$ de $n$ valeurs. Si on rajoute une $n+1$-ème valeur notée $x$, quelle est la nouvelle valeur de la moyenne ?

On vient de calculer la moyenne arithmétique $m_1$ de $n_1$ valeurs et la moyenne arithmétique $m_2$ de $n_2$ valeurs. Quelle est la valeur de la moyenne des $n_1+n_2$ valeurs ?

On admet maintenant qu'il s'agit d'informations quantitatives (ages, salaires...) issues de grands fichiers de données, disons, plusieurs milliers ou millions de lignes, comme les fichiers de recensement nationaux. On suppose également que chaque fichier est utilisé une seule fois par an, en fin d'année pour des informations résumées. Peut-on définir, pour une année donnée, un fichier de taille minimale correspondant aux mêmes informations résumées si on s'intéresse juste à la moyenne ? Que doit-on alors stocker comme informations si on veut pouvoir comparer les moyennes par année, si on veut les cumuler ?

Si,pour la variable $i$, on note $n_{i,a}$ le nombre de valeurs pour l'an $a$ et $s_{i,a}$ la somme de ces valeurs pour l'an $a$, donner la formule qui permet d'obtenir pour l'année suivante la moyenne $M_{i,a+1}$ globale cumulée à partir des valeurs de $n_{j,a}$, de $s_{j,a}$ et $m_{j,a}$ pour $i\leqslant j$.

Est-ce qu'il existe d'autre types de moyennes ? Ou d'autres résumés des données ?

Que signifie l'expression « la moyenne est invariante par permutation » ? A quoi cela peut-il servir de le savoir si on programme un calcul de moyenne ?

Solution :  

 

5. Tracés adaptés aux comptages et moyennes

Y a-t-il des représentations graphiques classiques pour les comptages, pour les valeurs, pour les moyennes ? Comment les nomme-t-on ? Est-ce que les logiciels Microsoft Excel et Libre Office Calc les implémentent ? Y a-t-il des précautions à prendre au niveau des graphiques ?

Solution :  

 

6. Statistiques descriptives, statistiques inférentielles et programmation

Comment décrit-on en statistiques une variable qualitative ? Et une variable quantitative ? Et les deux en même temps ?

Comment fait-on en statistiques pour comparer des comptages, des moyennes, et plus généralement des séries de valeurs ?

Que faut-il en déduire si on doit programmer des calculs statistiques ?

Solution :  

 

7. Affichages «intelligents» de résultats

7.1 Affichages en général

Si on devait présenter les résultats de plusieurs variables qualitatives non nécessairement binaires, quel serait l'affichage le plus «intelligent» statistiquement ?

Et pour plusieurs variables quantitatives non nécessairement de même unité ?

Là encore, que faut-il en déduire si on doit programmer des affichages issus de calculs statistiques ?

7.2 Affichage des résultats de variables qualitatives

Reprendre les solutions AWK et R de la question 1 afin d'avoir un affichage avec des labels de modalité, des effectifs décroissants, des pourcentages avec un nombre choisi de décimales.

En supposant qu'on dispose en PHP du tableau suivant (obtenu comment ?), donner ensuite une solution PHP et Javascript qui permet de choisir la colonne de tri.


           array (size=2)
             'Homme' => int 13
             'Femme' => int 23
     
     
     
           array (
             'Homme' => 13,
             'Femme' => 23,
           )
     

Trouver un exemple numérique qui montre que le tri par pourcentage arrondi décroissant n'est pas équivalent au tri par effectif décroissant.

Solution :  

 

8. Search and display en Python, R et PHP

A partir d'un fichier Excel nommé elf.xls supposé exister, avec une colonne AGE de nombres entiers on veut afficher les nbVal premières lignes triées par age décroissant. Donner une solution en interactif puis faire une fonction avec le nom du fichier et le nom de la colonne passés en paramètres obligatoires et nbVal passé en paramètre optionnel, avec la valeur 5 par défaut. On fournira une solution R puis une solution Python.

Donner les grandes lignes d'un code PHP qui réalise la même chose et qui en plus produit un fichier PDF des données sélectionnées.

Solution :  

 

       retour au plan de cours  

 

Code-source PHP de cette page ; code Javascript associé.

 

retour gH    Retour à la page principale de   (gH)