Code
library(dplyr)
library(ggplot2)
library(gt)
library(targets)
results <- tar_read(econometric_results, store = here::here("_targets"))Étape 11 — DEPP A5 Mobilité des personnels
library(dplyr)
library(ggplot2)
library(gt)
library(targets)
results <- tar_read(econometric_results, store = here::here("_targets"))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.
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.
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.
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.
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 |
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.
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.
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 |
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.