-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Ce document décrit le format de données utilisé pour enregistrer les résulats des élections présidentielles ainsi que les sondages qui les concernent.
Résultats d'élections
Le format de données ne devrait pas être sujet à controverse. Le fichier est, au niveau 0 de la hiérarchie, une map qui lie une année à la structure suivante:
"premier_tour" : {
"source": str # lien vers la source de la donnée
"inscrits": int,
"votants": int,
"exprimes": int,
"resultats": Dict[str, int]
},
"second_tour": {} # idem premier_tour
- Comment prendre en compte les différents échelons auxquel les résultats sont donnés?
Sondages d'intentions de vote
On remplit d'abord pour chaque sondage quelques informations de base:
- nom court
AAAAMMJJ_<nom de l'institut> - nom de l'institut
institut - date de debut de l'enquete
date_debut - date de fin de l'enquete
date_fin - date a laquelle on rentre les resultats du sondage
- source utilisée pour remplir les donées (lien vers la notice habituellement)
source - la méthode utilisée pour réaliser le sondage
methode - nombre de personnes interrogees
interroges
Puis les résultats
- Les intentions pour le premier tour
premier_tour - Les intentions pour le second tour
second_tour - Les reports premier tour/second tour
reports - L'estimation de la participation
participation
La participation
[A COMPLETER]
Les instituts estiment et communiquent la participation de deux manière différentes:
- Un chiffre brut
- Un histogramme qui donne la % de gens qui pensent aller voter avec une certitude de 10, 9,... 1.
Intentions pour le premier et le second tour
Echantillon, base, etc
Interrogés
Toutes les notices donnent le nombre d'interrogés qui sont inscrits sur les liste électorales. Pas besoin de donner le nombre de personnes interrogées car cela n'apporte aucune information. Ici, interroges voudra dire interrogé et inscrit sur les listes électorales.
Base
La plupart du temps les résultats ne sont pas communiqués sur la base des inscrits mais sur un ensemble plus restreint. On a recensé les bases suivantes:
- Inscrits, que l'on notera
I - Inscrits sûrs de voter, que l'on notera
SV - Inscrits sûrs de voter et sûrs de leur choix, que l'on notera
SVC
Parmi les gens interrogés tout le monde n'exprime pas d'opinion. On note le nombre de personnes qui expriment une opinion intentions_exprimees. On note le pourcentage de personnes ne s'étant pas prononcées nspp.
Gérer plusieurs hypothèses
Options pour les résultats avec plusieurs hypothèses. Il est pratique de donner un nom à chaque hypothèse pour pouvoir les retrouver plus facilement par la suite. Les résultats correspond à une hypothèse ont donc la structure suivante:
premier_tour: {
"machin": {
hypothese: "Machin candidat du centre-centre-centre droit",
base: str,
nspp: float
intentions_exprimees: int
intentions: Dict[str, float]
}
}
Mais ce format a des difficultés dès lors qu'il n'y a plus qu'un scénario testé. Il vaut donc peut-être mieux utiliser une liste à la place. Lorsqu'il n'y a qu'un scénario, le champ hypothese est null:
premier_tour: [
{
hypothese: null,
base: str,
nspp: float
intentions_exprimees: int
intentions: Dict[str, float]
}
]
La sûreté du vote
Il est primordial de noter la sûreté du vote car c'est un facteur important dans l'incertitude du modèle. Il y a plusieurs cas de figure:
- La sûreté est donnée pour chaque candidat;
- La sûreté moyenne est donnée;
- La sûreté n'est donnée que pour certains candidats.
On suivra le format suivant:
certitude: {
ensemble: Optional[float],
detail: Optional[Dict[str, float]]
}
Lorsque la certitude est donnée pour chaque candidat, detail est un dictionnaire candidat -> certitude. Si un candidat est absent il n'apparaît pas dans le dictionnaire. Si une certitude globale est donnée, elle va dans le champ ensemble. Si rien n'est donné, les deux champs sont null.
Reports du premier au second tour
Les reports de voix du premier au second tour sont une information importante pour le modèle. Pour éviter de répéter les noms des candidats on donnera à ce champ la structure suivante:
{
"hypothese": Optional[str]
"candidats_premier_tour": List[str]
"candidats_second_tour": List[str]
"reports": List[List[float]]
}
`
Les candidats
Il peut être utile de recenser tous les candidats et certaines informations à leur sujet (parti, nuance politiques). Pour éviter de multiples répétitions les informations sont enregistrées séparémment des sondages, à la fin du fichier:
{
sondages: {}
candidats: {}
}
Accessoirement, cela évite d'avoir à rentrer le nom des candidats en dur dans le script de validation.