Skip to content
sulivanShu edited this page Jan 15, 2026 · 18 revisions

See https://osf.io/hka6m/overview for the protocol.

Description conceptuelle de select.jl

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) et DCCI (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) et DCCI (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 pool l'ensemble des individus qui se vaccinent cette semaine;
  • on sélectionne dans pool le 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_week est inférieure à la semaine courante. Au début, avalability_week est 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.

Clone this wiki locally