Sélection du Kish
Ce document décrit une méthode pour sélectionner le Kish dans Pogues.
Mise à jour du 19/01/2024
Une nouvelle version de ce guide de sélection d'individu qui inclut un aléa basé sur le prénom du répondant afin de distinguer les personnes nées les mêmes jour et mois.
Principe
On considère que l'on procède à l'identification du Kish à travers les étapes suivantes :
- on demande le nombre d'habitants du ménage
- on boucle sur ce nombre pour collecter les prénoms et les dates de naissance de chacun des membres du ménage
- une dernière boucle va permettre de filtrer le questionnement sur le seul Kish
Structure du questionnaire
Séquence d'identification
On construit une séquence contenant les questions permettant d'identifier le Kish contenant la question du nombre d'habitants et la sous-séquence d'identification.
On crée une séquence contenant une première question pour collecter le nombre d'habitants (variable numérique collectée NBHAB
).
On crée ensuite dans cette même séquence une sous-séquence IDENTIFICATION
contenant :
- une question pour collecter le prénom de chaque habitant (variable texte collectée
PRENOM
). - une question pour collecter la date de naissance (variable date
DATE_DE_NAISANCE
)
Il faut ensuite créer une boucle BOUCLE_PRENOMS
sur cette sous-séquence avec la formule cast($NBHAB$, integer)
pour le minimum et le maximum.
Séquence de questions
On crée la séquence de questionnement
Une séquence contenant une question QUESTION_POUR_LE_KISH
, dont le libellé est personnalisé avec le prénom (via la formule VTL "Question pour " || cast($PRENOM$, string)
).
On crée la boucle BOUCLE_QUESTION_KISH
basée sur BOUCLE_PRENOMS
qui englobe la séquence de questions pour le Kish.
Calcul du Kish
Les éléments permettant de procéder au calcul lui-même
Le coeur de la sélection est la formule permettant de former un score de sélection :
cast(if $MOIS_NAISSANCE_INT$ < 6 then $MOIS_NAISSANCE_INT$ + 12 else $MOIS_NAISSANCE_INT$, string) || "." || $JOUR_NAISSANCE_STR$
Elle donnera par exemple :
- pour la date de naissance
01/06/2000
le score6.01
- pour
10/05/1990
le score17.10
On ajoute à ce premier score un aléa tiré à partir de la position de certaines lettres dans le prénom, voir les formules ci-dessous des variables ALEA_PRENOM
et SCORE_KISH_INT_ALEA_PRENOM
. Cela permet de traiter le cas de personnes nées les mêmes jour et mois.
Note
La formule donnée plus bas pour la création de l'aléa peut être adaptée, amendée pour améliorer la production d'un aléa. Cependant, il faut veiller à rester parcimonieux pour ne pas créer un code difficile à maintenir.
Par ailleurs, on introduira dans le courant du S1 2024 une fonction VTL pour générer de l'aléa, elle pourra remplacer une formule complexe dans ce contexte.
On sélectionne ensuite l'individu dont le score est le plus bas.
Les variables calculées nécessaires sont :
Variable | Portée | VTL |
---|---|---|
MOIS_NAISSANCE_INT | BOUCLE_PRENOMS | cast(cast(cast($DATE_DE_NAISSANCE$, date, "YYYY-MM-DD"), string, "MM"), integer) |
JOUR_NAISSANCE_STR | BOUCLE_PRENOMS | cast(cast($DATE_DE_NAISSANCE$, date, "YYYY-MM-DD"),string, "DD") |
SCORE_KISH | BOUCLE_PRENOMS | cast(if $MOIS_NAISSANCE_INT$ < 6 then $MOIS_NAISSANCE_INT$ + 12 else $MOIS_NAISSANCE_INT$, string) || "." || $JOUR_NAISSANCE_STR$ |
SCORE_KISH_INT | BOUCLE_PRENOMS | cast($SCORE_KISH$, number) |
ALEA_PRENOM | BOUCLE_PRENOMS | instr(lower(PRENOM), "e") + instr(lower(PRENOM), "a") + instr(lower(PRENOM), "i") + instr(lower(PRENOM), "s") + instr(lower(PRENOM), "n") + instr(lower(PRENOM), "r") + instr(lower(PRENOM), "t") + instr(lower(PRENOM), "o") |
SCORE_KISH_INT_ALEA_PRENOM | BOUCLE_PRENOMS | $SCORE_KISH_INT$ + $ALEA_PRENOM$ / 100 |
KISH_MIN | Questionnaire | min($SCORE_KISH_INT_ALEA_PRENOM$) |
KISH_INDICATOR | BOUCLE_PRENOMS | if $KISH_MIN$ = $SCORE_KISH_INT_ALEA_PRENOM$ then 1 else 0 |
NB_POTENTIAL_KISH | Questionnaire | sum($KISH_INDICATOR$) |
Filtre
Pour ne présenter qu'un seul jeu de questions à l'individu sélectionné, il est nécessaire d'ajouter un filtre sur ces questions à partir du score calculé en amont.
Le filtre a pour formule $KISH_INDICATOR$ = 1
.
Questionnaire exemple
Pour référence, un questionnaire implémentant cette solution.