-
Notifications
You must be signed in to change notification settings - Fork 1
Home
See https://osf.io/hka6m/overview for the protocol.
Dans select.jl, la fonction create_subgroups et ses sous-fonctions manipulent trois valeurs principales :
pool : un dataframe réunissant:
- par ligne: l'ensemble des individus d'un groupe d'âge et de sexe,
- par colonne : leurs propriétés:
availability_week(Date),dose1_week(Date),death_week(Date) etDCCI(Int64).
group : un dictionnaire associant:
- des clés, qui sont les dates de début des périodes d'observation (un an) de chaque sous-groupe;
- aux valeurs, qui sont des dataframes réunissant:
- par ligne: l'ensemble des individus d'un sous-groupe,
- par colonne: leurs propriétés:
vaccinated(Bool),entry(Date),exit(Date),death(Date) etDCCI(type décrit ci-après).
DCCI est un vecteur de paires dont le premier élément est l'indice DCCI d'un individu, et le deuxième la date où il a remplacé le précédant non-vacciné. Son type exact est: Vector{Tuple{Int64, Date}}. À la fin de la construction de group_dict, le champ DCCI des individus vaccinés est un vecteur d'une unique paire, alors que celui des individus non-vaccinés est un vecteur d'une ou plusieurs paires, car les individus non-vaccinés peuvent être remplacés. Pour les non-vaccinés, le champ DCCI peut donc représenter un individu composite.
agenda : un agenda indiquant quand il y a des non-vaccinés à remplacer, dans quels sous-groupes ils doivent être remplacés, et quels non-vaccinés doivent être remplacés. Son type est: Dict{Date,Dict{Date,Vector{Int}}} où: la première date représente la semaine à laquelle il faut faire le replacement, la seconde date le subgroup dans lequel faire le remplacement, et le Vector{Int} les numéros de lignes où faire le remplacement dans le subgroup. Notons qu'en pratique, il n'y a pas de vrai remplacement: dans group, à la colonne DCCI on ajoute au vecteur une paire comportant le DCCI et la date d'entrée du nouveau non-vacciné. En effet, la valeur DCCI de chaque individu sera utilisée plus tard, pour la standardisation par DCCI.
L'algorithme est le suivant:
group est initialement vide.
De façon itérative, chaque semaine:
- on va chercher dans
pooll'ensemble des individus qui se vaccinent cette semaine; - on sélectionne dans
poolle même nombre d'individus qui:- sont vivants
- ne sont pas vaccinés cette semaine
- ne sont pas dans un autre subgroup (c'est-à-dire que leur date de disponibilité, renseignée à la colonne
avalability_weekest inférieure à la semaine courante. Au début,avalability_weekest initialisée àDate(-10000, 01, 01), ce qui signifie qu'avant d'intégrer un sous-groupe, un non-vacciné est toujours disponible.
- on écrit dans l'agenda:
- les dates auxquels des non-vaccinés devront être remplacés dans le futur (pas maintenant!)
- le subgroup dans lequel des non-vaccinés devront être remplacés (identifié par une date)
- les lignes du DataFrame, représentant le subgroup, où les non-vaccinés devont être remplacés.
- on ouvre l'agenda et on regarde si cette semaine:
- il y a des non-vaccinés à remplacer (sinon on ne fait rien),
- si oui, on effectue les remplacements dans les subgroups et aux lignes indiquées dans l'agenda,
- et on écrit dans l'agenda les informations nécessaires si certains nouveaux non-vaccinés doivent être remplacés plus tard, selon la même procédure.