Contribuer à Trajectoire

Avertissement

EN CONSTRUCTION

Fonctionnement en modules

Un programme de microsimulation est particulièrement complexe et il est vital de le fragmenter en étapes simples.

Avertissement

Il est impératif que les contributeurs au projet apportent leurs modifications au bon endroit. Le contributeur qui veut ajouter une nouvelle propriété aura la tentation de l’incorporer dans un des modules qu’il a bien exploré, c’est souvent une mauvaise pratique. Avoir une vision exhaustive des modules est préférable. Dans le doute, créer un module indépendant.

Il faut, pour chaque étape, être précis sur ses intrants, les calculs effectués puis ses sortants. Dans le code de Trajectoire, une étape se présente sous la forme suivante :

La fonction charge() charge les intrants nécessaires, après les calculs la fonction sauvegarde() sauve les bases créées ou modifiées d’intérêt pour la suite.

La fonction charge() charge pour chaque base demandée la sauvegarde la plus récente dans le processus qui contient la base. Dans le cas d’une variante son fonctionnement diffère un peu.

Les calculs de l’étape sont préférentiellement englobés dans une fonction. Différents avantages :

  • permet de créer une documentation incluant des exemples reproductibles
  • permet de l’utiliser dans un autre contexte
  • s’arrête à la première erreur dans R
  • force à préciser les intrants
  • renforce la reproductibilité
  • efface les objets temporaires à la fin de la fonction

La fonction sauvegarde sauve les bases indiquées dans le répertoire de l’étape.

Système de sauvegarde

Les bases de données sont sauvegardées au format qs qui allie rapidité de traitement et faible volume de base.

Les bases sauvegardées à chaque étape permettent de conserver les traitements effectués et de diagnostiquer d’éventuels problèmes (notamment via la réalisation de graphiques).

Système de base

Les bases sont nommées par leur clé. On leur ajoute le préfixe dt, référence au paquet principal utilisé data.table.

Une valeur manquante n’a jamais le sens de “non pertinent” mais de “en attente de remplissage”. Par exemple la variable remuneration est manquante pour les individus en projection avant l’étape d’équation de salaire. C’est normal, elle n’a pas encore été remplie. A contrario, la variable indiceFonctionnaire ne sera jamais associée à quelqu’un travaillant dans le privé.

Cette logique conduit à des sous-bases permettant au passage des gains de mémoire vive.

Les bases

En gras les bases principales.

Les bases individuelles

  • dtId : La base principale contenant les informations individuelles par exemple sexe, dateNaissance, paysNaissance.
  • dtIdInactifs : Une base contenant les individus de l’échantillon EIC qui n’apparaissent jamais dans aucune caisse de retraite.
  • dtIdMortsAvantLiq : Les individus morts avant d’avoir pu liquider aucune de leurs pensions. Ils contribuent aux cotisations mais pas aux prestations.

Les bases (individu, caisse)

Le format (individu, caisse) est le plus naturel pour le système de retraites français. C’est celui de l’EIR.

  • dtIdCaisse : La base contenant les dates de liquidation dateLiq et le détail des pensions à la liquidation.
  • dtIdCaisseBase : ne contient que les information (individu, caisse) spécifique aux régimes de base, par exemple le nombre de trimestres validés
  • dtIdCaisseSam : le Salaire Annuel Moyen calculé dans l’étape calculSAM() qui ne concerne que les caisses des régimes alignés.

Les bases (individu, caisse, annee)

C’est le format de l’EIC. Il permet de suivre année après année les cotisations des individus auprès des caisses.

  • dtIdAnCaisse : contient les éléments communs à tous les régimes de base, remuneration, nbTrimCotise puis cotisationSalariale. Voir le détail vignette(dtIdAnCaisse)
  • dtIdAnCaisseBasePoint : les éléments spécifiques au caisses de base par points (MSA exploitant et CNAVPL).
  • dtIdAnCaisseFonctionnaire : indiceFonctionnaire et autres primes ne concernant que les fonctionnaires.
  • dtIdAnCaisseTrimGratuit : détail de la cause des trimestres acquis gratuitement quand nbTrimGratuit est non nul dans dtIdAnCaisse
  • dtIdAnCaisseComplementaire : les nombres de points acquis annuellement dans les différentes complémentaires

les bases intermédiaires diverses

  • dtIdAn : base (id, année) qui contient les états Trajectoire annuels. C’est une base transitoire pour projeter dans l’avenir les carrières.
  • dtMatriceTransition : la matrice de transition construite dans calculeMatriceTransition()
  • dtIdAnTrim : Seule base utilisant un pas temporel trimestriel qui est un zoom sur la fin de carrière des individus entre leur AOD et leur AAD. Permet de déterminer leur taux plein calculTauxPlein() et leur date de liquidation pour leur caisse principale.
  • dtIdAnEtat : créée par l’étape affineEtatCnav() qui passe du concept de caisse à celui d’etat. La différence étant le découpage de la caisse Cnav en 4 états “Salarié du privé non cadre”, “Salarié du privé cadre”, “Contractuel de la FP” et “AVPF”.

Programmation en R avec une utilisation intensive du paquet data.table

Le langage R a été choisi pour coder le modèle TRAJECTOiRE, par cohérence avec les choix logiciels de l’Insee (langage libre, gratuit, performant, avec une très grande communauté d’utilisateurs statisticiens et informaticiens). Les programmes ont été codés de manière aussi transparente que possible, de sorte à ce que, le cas échéant, la traduction dans un autre langage de programmation (type Python) soit facile.

Le camelCase a été choisi pour nommer les noms des objets (bases, variables…)