Contribuer à Trajectoire
EN CONSTRUCTION
Fonctionnement en modules
Un programme de microsimulation est particulièrement complexe et il est vital de le fragmenter en étapes simples.
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
puiscotisationSalariale
. Voir le détailvignette(dtIdAnCaisse)
- dtIdAnCaisseBasePoint : les éléments spécifiques au caisses de base par points (MSA exploitant et CNAVPL).
- dtIdAnCaisseFonctionnaire :
indiceFonctionnaire
et autresprimes
ne concernant que les fonctionnaires. - dtIdAnCaisseTrimGratuit : détail de la cause des trimestres acquis gratuitement quand
nbTrimGratuit
est non nul dansdtIdAnCaisse
- 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 decaisse
à 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…)