1  Mode d’emploi du modèle

1.1 Introduction : refonte récente du modèle

Important

Le modèle Ines a fait l’objet d’une refonte globale entre 2023 et 2024, consécutive aux refontes de l’EEC et de l’ERFS 2021, dont la première mise à disposition concerne le modèle Ines 2023.

Les refontes de l’EEC et de l’ERFS 2021 ont nécessité un travail d’adaptation conséquent de l’ensemble des codes du modèle Ines afin de pérenniser son fonctionnement à compter de ce millésime.
Cette adaptation de forte ampleur a également été l’opportunité d’introduire plusieurs changements importants, dont notamment, une réécriture en R de la quasi-totalité des codes, un changement du dépôt et outils de versionnage, ainsi qu’une restructuration d’ensemble des répertoires, des bases et du fonctionnement du modèle.

Le modèle Ines 2023 basé sur l’ERFS 2021 est mis à disposition sur gitlab.com, et comprend ainsi un ensemble de changements conséquents, explicités dans cette documentation.

Tableau résumé des changement intervenus sur le modèle Ines 2023

Modèle Langage Dépôt Refonte EEC-ERFS Architecture
Ines 2023 R gitlab Adapté ERFS \(\geq\) 2021 Nouvelle
Ines \(\leq\) 2022 SAS adullact Adapté ERFS \(<\) 2021 Ancienne

1.2 Démarrer et config_perso : deux scripts pour lancer le modèle

Pour commencer à travailler à partir du modèle Ines, il faut ouvrir en premier lieu le projet ines_dev.Rproj. Ensuite, les deux scripts permettant de lancer le modèle une première fois sont les scripts demarrer.R et config_perso.R. Ils sont situés à la racine du repo.

  • Le programme demarrer.R doit être systématiquement ouvert pour lancer le modèle. Il permet notamment de charger l’environnement d’Ines (chemins, fonctions spécifiques, jeu de paramètres législatifs…), de paramétrer et d’exécuter l’intégralité du modèle Ines ;

  • le programme config_perso.R permet de définir des informations spécifiques à chaque utilisateur d’Ines : emplacement physique des programmes du modèle Ines, emplacement physique des bases de données ERFS et des sorties d’Ines.

1.3 Démarrer le modèle

Pour démarrer le modèle Ines, il faut donc se placer dans le script demarrer.R. Ce programme comporte divers paramètres structurants, et quelques fonctions clés.

Il faut également, si besoin, installer les packages nécessaires.

# Liste des packages à installer
packages <- c("tidyverse", "openxlsx", "Hmisc", "reshape2", "icarus", 
              "data.table", "arrow", "rio", "dplyr", "ggplot2", "gq")
install.packages(packages)

1.3.1 Paramètres structurants

Un ensemble de paramètres doivent être définis au préalable dans demarrer.R afin de paramétrer la simulation réalisée.

Paramétrage général : il s’agit principalement des paramètres qui définissent l’année de référence et l’année de législation :

  • l’année de référence (anref) correspond au millésime de l’ERFS utilisé en entrée,

  • l’année de législation (anleg) correspond à l’année de la législation sociofiscale simulée.

Important

Le modèle Ines a été construit de façon à simuler une année de législation postérieure de 2 ans à celle du millésime ERFS mobilisé en entrée. Actuellement le modèle ne peut donc fonctionner qu’avec ce décalage de 2 années, soit anleg = anref + 2.

Paramétrage spécifique : il s’agit d’un ensemble de paramètres spécifiques à certains contextes qui permettent par exemple d’activer des modules complémentaires (simulation de la consommation et de la fiscalité indirecte) ou encore de choisir la variable de loyer mobilisée.

1.3.2 Tableau d’enchainement

A la suite de ces paramètres structurants, le tableau d’enchaînement des étapes du modèle Ines est généré sous forme de data.frame au début du programme démarrer. Il peut être visualisé pour connaître l’ensemble des étapes, leur ordre d’exécution ainsi qu’une courte description de chacune. Le lancement du modèle s’appuie sur ce tableau d’enchainement.

id_etape etape description fonction
1 orga_cases Organisation de cases fiscales organise_cases_fiscales
2 parametres Importe les paramètres de la législation importe_parametres
3 convert_erfs Conversion de l’ERFS en format R convertit_erfs
4 regroupe_info_trim Regroupe les infos trims de l’EEC regroupe_info_trim
5 initialisation Initialisation et consolidation initialise
6 correction_erfs Correction de l’ERFS corrige_erfs
7 calendrier_activite Calendrier d’activité calcule_calendrier_activite
8 calendrier_activite_complement Complément de calendrier d’activité complete_calendrier_activite

1.3.3 Fonction lance modèle

Enfin, le lancement du modèle s’effectue à partir de la fonction lance_modele, fonction spécifique du modèle Ines qui fait l’objet d’une documentation .Rd accessible dans la fenêtre “Help” en exécutant la commande lance_modele.
Cette fonction permet de lancer, soit l’intégralité des étapes, soit certaines étapes uniquement, à partir d’un tableau d’enchainement préalablement créé.

Voici un exemple pour lancer le modèle de la première à la dernière étape, sans variante spécifique et dans la branche main.

lance_modele(
  premiere_etape = 1,
  derniere_etape = Inf,
  liste_enchainement = list(tronc = enchainement),
  # pour une variante : list(variante1 = enchainement1, central = enchainement)
  # pour des variantes imbriquées (variante2 s'appuie sur variante1 qui s'appuie sur central):
  # list(variante2 = enchainement2, variante1 = enchainement1, central = enchainement)
  chemin = chemin,
  p_m = p_m,
  repertoire_de_sauvegarde = chemin$repertoire_de_sauvegarde,
  effacer_repertoires_avant = TRUE
  branche = "main"
)

1.3.4 Autres fonctions importantes

Ces fonctions permettent de rentrer plus en détails dans le modèle, ses étapes et ses bases intermédiaires. Elles nécessitent pour être lancées, que le modèle ait tourné une fois du début à la fin dans la branche voulue.

La fonction etudie_etape permet d’étudier une étape spécifique, chargeant ainsi toutes les bases intermédiaires nécessaires.

etudie_etape(
  etape_a_etudier = 51,
  liste_enchainement = list(tronc = enchainement),
  chemin = chemin,
  p_m = p_m,
  repertoire_de_sauvegarde = chemin$repertoire_de_sauvegarde
  # branche ="main" # A commenter en général, permet de se placer dans une branche spécifique du repo
)

La fonction cherche permet, au choix, de chercher :

  • une variable spécifique dans une base intermédiaire ;

  • la dimension d’une base intermédiaire ;

  • une famille d’individus spécifique.

# Ex1 : où est créée une variable ?
cherche(
  base = "modele.baseind",
  requete = "'tri' %in% names(modele.baseind)",
  liste_enchainement = list(tronc = enchainement),
  repertoire_de_sauvegarde = chemin$repertoire_de_sauvegarde,
  # branche = "main"
  )
  
  
# Ex2 : suivi de la dimension d'une base
cherche(
  base = "modele.baseind",
  requete = "nrow(modele.baseind)",
  liste_enchainement = list(tronc = enchainement),
  repertoire_de_sauvegarde = chemin$repertoire_de_sauvegarde,
  # branche = "main"
  )
  
  
# Ex3 : suivi d'une famille en particulière
cherche(
  base = "modele.indivi_anr",
  requete = "modele.indivi_anr %>% filter(idfoyer == 'F21000001A')",
  liste_enchainement = list(tronc = enchainement),
  repertoire_de_sauvegarde = chemin$repertoire_de_sauvegarde,
  # branche = "main"
  )

Enfin, la fonction render permet de comparer les résultats obtenus par le modèle entre deux branches spécifiques. Pour cela, un fichier html est généré.

rmarkdown::render(
  "Rmarkdown/comparaison.Rmd",
  params = list(
    branche_reference = "main",
    liste_enchainement = list(tronc = enchainement),
    branche_a_comparer = "bourse",
    repertoire_de_sauvegarde = repertoire_de_sauvegarde),
  output_file = paste0("comparaison_", format(Sys.time(), "%d_%m_%Y_%Hh%Mm%Ss")),
  output_dir = file.path(repertoire_de_sauvegarde, "sorties")
) |> browseURL()

1.4 Sorties du modèle

Les deux dernières étapes du modèle Ines aboutissent à une table de niveau ménage qui comprend l’ensemble des simulations des transferts socio-fiscaux réalisés ainsi qu’à une sortie excel de résultats agrégés et mis en forme.

Base ménage de sortie : l’avant dernière étape d’Ines (“construit_basemen”) permet de constituer une table de niveau ménage (modele.basemen) qui agrège l’ensemble des simulations réalisées. Le niveau ménage plutôt qu’individuel permet de rassembler l’ensemble des transferts simulés car la plupart ne sont pas individualisables (c’est notamment le cas de la plupart des prestations qui sont perçues au niveau du foyer allocataire ou de l’impôt sur le revenu acquitté au niveau du foyer fiscal).

Sortie excel : la dernière étape d’Ines (“calcule_cibles”) permet de constituer une sortie excel qui présente pour l’ensemble des transferts socio-fiscaux :

  • les masses budgétaires totales,

  • les effectifs de bénéficiaires ou de redevables totaux,

  • des cibles externes actualisées

Cette sortie fournit un ordre de comparaison entre les résultats du modèle et des données de cadrages externes actualisées, à un niveau agrégé. Pour plus d’informations sur la sortie Excel et les cibles, voir le chapitre 13 - Les sorties.