README.md 6.45 KB
Newer Older
Yoann LE BARS's avatar
Yoann LE BARS committed
1
2
3
Analyse de sondages
===================

Yoann LE BARS's avatar
Yoann LE BARS committed
4
5
Code utilisé dans la série de _live_ intitulée
« La Geste des statistiques et de l’opinion ». Ce code présente une méthode
Yoann LE BARS's avatar
Yoann LE BARS committed
6
7
8
9
simple pour mettre en évidence les tendances mesurées par les sondages. Il
lit une série de sondages dans un fichier pour en produire la courbe des
tendances à l’aide de la méthode des moindres carrés.

Yoann LE BARS's avatar
Yoann LE BARS committed
10
11
12
La documentation du code est
[disponible en ligne](https://ylebars.frama.io/analysesondage/ "Documentation du code").

Yoann LE BARS's avatar
Yoann LE BARS committed
13
14
15
**Table des matières**

* [Lancer le code](#lancer-le-code "Lancer le code")
Yoann LE BARS's avatar
Yoann LE BARS committed
16
* [Format de données](#format-de-données "Format de données")
17
* [Générer la documentation](#générer-la-documentation "Générer la documentation")
Yoann LE BARS's avatar
Yoann LE BARS committed
18
19
20
21
22
23
24
* [Contrat de diffusion](#contrat-de-diffusion "Contrat de diffusion")

Lancer le code
--------------

Ce code fonctionne sur tous les systèmes supporant
[Python 3](https://www.python.org/ "Python scripting language") Pour le faire
Yoann LE BARS's avatar
Yoann LE BARS committed
25
tourner, il vous faut un interprète Python 3. Le code utilise les modules
Yoann LE BARS's avatar
Yoann LE BARS committed
26
27
suivant :

Yoann LE BARS's avatar
Yoann LE BARS committed
28
* [Progressbar](https://pypi.org/project/progressbar/ "Progressbar") ;
Yoann LE BARS's avatar
Yoann LE BARS committed
29
* [SciPy](https://www.scipy.org/ "SciPy") ;
30
* [NumPy](http://www.numpy.org/ "NumPy") ;
31
32
33
* [Matplotlib](https://matplotlib.org/ "Matplotlib") ;
* [Seaborn](https://seaborn.pydata.org/ "Seaborn") ;
* [Pandas](https://pandas.pydata.org/ "Pandas").
Yoann LE BARS's avatar
Yoann LE BARS committed
34
35
36
37
38

Pour le lancer, il suffit d’exécuter le script nommé « analyseSondages.py »
situé dans le répertoire « src ». La syntaxte est la suivante :

```bash
39
analyseSondages.py [-h] [-v] [-p] [-i] [-e nomExclus] ordre confiance nomFichier
Yoann LE BARS's avatar
Yoann LE BARS committed
40
41
42
43
```

Avec `ordre` l’ordre de la fonctionnelle polynomiale d’évaluation des
tendances (nous conseillons d’utiliser 7), `confiance` la taille de
44
45
l’intervalle de confiance en poucentage (la norme dans les sondages
d’opinions est de regarder l’intervalle de confiance à 95 %) et `nomFichier`
Yoann LE BARS's avatar
Yoann LE BARS committed
46
47
le chemin d’accès au fichier contenant les sondages à analyser (il y en de
disponibles dans le répertoire `ressources`).
Yoann LE BARS's avatar
Yoann LE BARS committed
48
49
50
51

L’option `-h` (ou `--help`) produit l’affichage d’un message d’aide et met
fin au programme, tandis que l’option `-v` (ou `--version`) produit
l’affichage de la version du programme et met fin à l’exécution et l’option
Yoann LE BARS's avatar
Yoann LE BARS committed
52
53
`-c` (ou `--exclure`) permet de transmettre un fichier au format CSV dans
lequel chaque valeur est le nom d’un candidat à exclure de l’extrapolation
54
par faute d’un nombre suffisant de données. L’option `-p` (ou `--point`)
Yoann LE BARS's avatar
Yoann LE BARS committed
55
56
bloque l’affichage des points de sondage, tandis que l’option `-e` (ou
`--extrapolation`) bloque l’affichage des extrapolations.
Yoann LE BARS's avatar
Yoann LE BARS committed
57
58
59
60

Format de données
-----------------

61
62
63
64
Le fichier contenant les sondages doit être un fichier au format CSV, encodé
en UTF-8. Le format CSV (_comma separated values_) consiste en un fichier
texte, dans lequel sur chaque ligne les données sont séparées par une
virgule. En passant à la ligne, on créé une nouvelle ligne de données.
Yoann LE BARS's avatar
Yoann LE BARS committed
65

66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
La première ligne indique les dates de début des sondages. La première valeur
de la ligne n’est pas significative, nous conseillons de lui donner la valeur
« Date de début du sondage ». La deuxième valeur n’est pas significative non
plus, nous conseillons de la laisser vide. Ensuite, chaque valeur doit
donner une date de début de sondage, encodée au format ISO « YYYY-MM-DD », à
savoir les quatre chiffres de l’année, un tiret, les deux chiffres du mois,
un tiret et les deux chiffre du jour.

La deuxième ligne indique les dates de début des sondages. La première valeur
de la ligne n’est pas significative, nous conseillons de lui donner la valeur
« Date de fin du sondage ». La deuxième valeur n’est pas significative non
plus, nous conseillons de la laisser vide. Ensuite, chaque valeur doit
donner une date de fin de sondage, encodée au format ISO « YYYY-MM-DD », à
savoir les quatre chiffres de l’année, un tiret, les deux chiffres du mois,
un tiret et les deux chiffre du jour.

Sur la troisième ligne, la première valeur n’est pas significative, mais nous
Yoann LE BARS's avatar
Yoann LE BARS committed
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
avons l’habitude de l’utiliser comme information sur les données contenue sur
cette ligne, à savoir la taille des échantillons en nombre de personne. La
deuxième valeur n’est pas significative. Ensuite, les valeurs doivent donner
la taille des échantillons sondés en nombre de personnes pour chaque sondage.

Les lignes suivantes sont les lignes des intentions de vote associées à
chaque candidat. Elles ont toutes le même format : la première valeur est le
nom du candidat, la deuxième le code de la couleur associée au candidat sur
les graphiques. Enfin, pour chaque sondage, il doit être indiqué les
intentions de vote en %.

Il n’y a pas de limite sur le nombre de sondages analysés, ni sur le nombre
de candidats.

Une liste des couleur possible avec un échantillon est visible à cette URL :

<https://matplotlib.org/stable/gallery/color/named_colors.html>

101
102
103
104
105
Le fichier des exclus doit être également un fichier au format CSV encodé en
UTF-8. Seule la première ligne de ce fichier est prise en compte. Elle doit
comporter les noms des exacts des candidats à exclure de l’interpolation,
avec la même graphie que les noms indiqués dans le fichier de sondage.

106
107
108
109
Générer la documentation
------------------------

La documentation du code est gérée à l’aide de
110
111
[Sphinx](https://www.sphinx-doc.org/ "Sphinx") ainsi que
[Graphviz](https://graphviz.org/ "Graphviz") et utilise le thème
112
113
114
115
116
117
118
119
120
121
[Read the Docs](https://readthedocs.org/ "Read the Docs")
(`sphinx-rtd-theme`). Pour la générer, allez dans le répertoire `doc`. En
exécutant la commande `make`, vous obtiendrez la liste des format de
documentation possible. Par exemple, pour générer la documentation au format
HTML, réalisez la commande suivante :

```bash
make html
```

122
123
124
Un sous répertoire sera alors créé dans `doc/build`. Ainsi, dans l’exemple
précédent, la documentation générée sera placée dans le répertoire
`doc/build/html`, la première page étant intitulée `index.html`.
125

Yoann LE BARS's avatar
Yoann LE BARS committed
126
127
128
129
130
131
132
133
Contrat de diffusion
--------------------

Ce programme est sous contrat de distribution CeCILL v2.1. Vous pouvez le
modifier et le redistribuer, à la condition que vous en citiez l’auteur
original et que vous ne changez pas le contrat de distribution.

Le texte complet du contrat est disponible
Yoann LE BARS's avatar
Yoann LE BARS committed
134
[en ligne](https://cecill.info/licences/Licence_CeCILL_V2.1-fr.html "Contrat CeCILL v2.1").
Yoann LE BARS's avatar
Yoann LE BARS committed
135
136

Copyright © 2021 [Yoann LE BARS](http://le-bars.net/yoann/ "Vu d’ici").