Économétrie — associations au niveau établissement

Étape 11 — DEPP A5 Mobilité des personnels

Code
library(dplyr)
library(ggplot2)
library(gt)
library(targets)

results <- tar_read(econometric_results, store = here::here("_targets"))

Cadre scientifique et estimand

La granularité publique disponible ne permet pas une économétrie de la mobilité individuelle. L’issue modélisée est strictement la disparition d’une UAI du fichier entre 2024 et 2025. Elle ne constitue ni une fermeture attestée, ni une sortie, ni une mobilité de personnel.

Code
results$framework |>
  gt() |>
  tab_header(title = "Formalisation du modèle")
Formalisation du modèle
ELEMENT DEFINITION
Y Indicateur binaire: UAI observee en 2024 mais absente du fichier 2025
X principales Part d'ETP avec moins de 2 ans d'anciennete dans l'etablissement
Population Etablissements du premier degre observes en 2024, avec covariables completes
Periode Covariables 2024 et presence dans le fichier 2025
Variables de controle Log(1 + ETP), part de femmes, part agee de 50 ans ou plus et secteur
Hypotheses H1: composition et taille sont associees a l'absence en 2025; H2: l'association d'anciennete peut varier selon le secteur
Estimand Odds ratio conditionnel d'absence du fichier, au niveau UAI
Causalite Association conditionnelle uniquement; aucune intervention ni assignation exogene

L’estimation principale est une régression logistique :

[ {P(Y_i=1X_i)}= _0+_1(1+ETP_i)+2Anc{<2,i}{10pp}+3Age{50+,i}{10pp} +_4Femmes_i^{10pp}+Secteur_i. ]

La population d’estimation contient 27 151 établissements observés en 2024 avec covariables complètes. Les parts sont des compositions d’ETP agrégées au niveau établissement; leurs coefficients et odds ratios correspondent à une augmentation de 10 points de pourcentage.

Coefficients et odds ratios

Code
results$coefficients |>
  select(term, estimate, std.error, statistic, p.value, odds_ratio, or_ic95_basse, or_ic95_haute) |>
  mutate(across(where(is.numeric), ~ round(.x, 4))) |>
  gt() |>
  tab_header(title = "Régression logistique principale",
             subtitle = "Coefficients, odds ratios et intervalles de confiance à 95 %")
Régression logistique principale
Coefficients, odds ratios et intervalles de confiance à 95 %
term estimate std.error statistic p.value odds_ratio or_ic95_basse or_ic95_haute
(Intercept) -2.8813 1.2620 -2.2831 0.0224 0.0561 0.0047 0.6651
log_etp -2.1476 0.3490 -6.1534 0.0000 0.1168 0.0589 0.2314
anciennete_moins_2_10pp 0.0513 0.0488 1.0508 0.2933 1.0526 0.9566 1.1583
age_50_plus_10pp 0.0121 0.0441 0.2749 0.7834 1.0122 0.9283 1.1036
femmes_10pp 0.0593 0.0758 0.7827 0.4338 1.0611 0.9147 1.2310
secteurPUBLIC 1.5030 0.5862 2.5638 0.0104 4.4953 1.4248 14.1831

Un odds ratio supérieur à 1 indique une association avec des odds plus élevées d’absence du fichier en 2025, toutes les autres variables incluses dans le modèle maintenues constantes. Cette formule décrit un ajustement statistique conditionnel; elle ne signifie pas que les groupes sont rendus comparables par expérimentation et ne démontre aucun effet causal.

Multicolinéarité

Code
results$vif |>
  mutate(vif = round(vif, 3)) |>
  gt() |>
  tab_header(title = "VIF des covariables numériques", subtitle = "Seuil d'alerte documentaire : 5")
VIF des covariables numériques
Seuil d'alerte documentaire : 5
variable vif seuil_alerte statut
log_etp 1.041 5 OK
anciennete_moins_2_10pp 1.073 5 OK
age_50_plus_10pp 1.090 5 OK
femmes_10pp 1.024 5 OK

Le nombre de condition de la matrice complète est présenté avec les autres diagnostics. Le VIF numérique ne couvre pas à lui seul le facteur sectoriel.

Tests et diagnostics

Code
results$diagnostics |>
  mutate(RESULTAT = signif(RESULTAT, 4)) |>
  gt() |>
  tab_header(title = "Diagnostics du modèle")
Diagnostics du modèle
DIAGNOSTIC RESULTAT INTERPRETATION
Evenements Y=1 1.230e+02 Information effective pour l'issue rare
Taux d'evenement 4.530e-03 Part des UAI 2024 absentes en 2025
AUC apparente 7.061e-01 Discrimination interne, sans validation externe
Score de Brier 4.498e-03 Erreur quadratique probabiliste
Deviance / ddl residuels 5.546e-02 Dispersion descriptive
Condition number 1.392e+00 Multicolinearite globale de la matrice
Link test: terme quadratique p 9.642e-01 Une faible p-valeur signale une specification possiblement incomplete
Interaction anciennete x secteur: test LR p 3.077e-01 Teste l'apport de l'interaction secteur x anciennete
Observations influentes (Cook > 4/n) 1.230e+02 Points a examiner; aucun retrait silencieux
Coefficients finis 1.000e+00 Controle de separation numerique
Convergence des trois modeles 3.000e+00 Trois convergences attendues
Code
results$calibration |>
  mutate(across(c(taux_observe, probabilite_predite), ~ round(.x, 4))) |>
  gt() |>
  tab_header(title = "Calibration apparente par décile de risque prédit")
Calibration apparente par décile de risque prédit
groupe observations evenements taux_observe probabilite_predite
[4.32e-05,0.00085] 2716 1 0.0004 0.0005
(0.00135,0.00199] 2714 6 0.0022 0.0016
(0.00085,0.00135] 2716 2 0.0007 0.0011
(0.00199,0.00275] 2715 9 0.0033 0.0024
(0.00769,0.00968] 2708 17 0.0063 0.0087
(0.00275,0.00374] 2715 8 0.0029 0.0032
(0.00493,0.00627] 2729 19 0.0070 0.0056
(0.00374,0.00493] 2715 9 0.0033 0.0043
(0.00968,0.0168] 2715 32 0.0118 0.0109
(0.00627,0.00769] 2708 20 0.0074 0.0070

Ces diagnostics sont internes à l’échantillon. Ils ne constituent pas une validation externe et ne corrigent pas une éventuelle confusion non observée.

Interaction et robustesse

L’interaction entre ancienneté courte et secteur est évaluée par un test du rapport de vraisemblance. Une spécification probit sert de contrôle de sensibilité du lien. Elle ne change ni la population ni la nature associative de l’analyse. Le statut d’éducation prioritaire, issu d’un snapshot 2026, est exclu afin d’éviter une fuite temporelle vers l’issue 2025. fixest et plm ne sont pas mobilisés : deux millésimes et une issue de présence unique ne permettent pas d’identifier un modèle de panel individuel pertinent.

Code
results$robustness |>
  mutate(across(where(is.numeric), ~ round(.x, 4))) |>
  gt() |>
  tab_header(title = "Robustesse de l'association avec l'ancienneté courte")
Robustesse de l'association avec l'ancienneté courte
term estimate conf.low conf.high p.value modele echelle
anciennete_moins_2_10pp 1.0526 0.9566 1.1583 0.2933 Logit principal odds ratio
anciennete_moins_2_10pp 0.7032 0.3009 1.6431 0.4161 Logit avec interaction odds ratio
anciennete_moins_2_10pp 0.0158 -0.0183 0.0499 0.3644 Probit coefficient probit

Limites d’interprétation

Code
results$limits |>
  gt() |>
  tab_header(title = "Limites et décisions méthodologiques")
Limites et décisions méthodologiques
LIMITE CONSEQUENCE DECISION
Issue observee Absence du fichier != fermeture, sortie ou mobilite Nommer l'issue exactement
Granularite UAI et non personnel individuel Interdire l'interpretation individuelle
Temporalite Deux millesimes seulement Ne pas utiliser plm/fixest
Education prioritaire Statut issu d'un snapshot 2026, posterieur a l'issue Exclure cette variable du modele pour eviter une fuite temporelle
Endogeneite Confusion residuelle et selection possibles Ne revendiquer aucun effet causal
Validation Performances apparentes sur l'echantillon d'estimation Ne pas promettre de prediction hors echantillon

L’analyse estime des associations conditionnelles au niveau des établissements. Elle ne permet aucune conclusion causale sur l’effet du territoire, de l’éducation prioritaire, de l’âge ou de l’ancienneté sur une mobilité professionnelle individuelle.