1 Mode d’emploi du modèle
1.1 Introduction : refonte récente du modèle
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.
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.