Indicateurs financiers des opérateurs de l’enseignement supérieur - fr-esr-operateurs-indicateurs-financiers

Données - SIES

Source : SIES, data.enseignementsup-recherche.gouv.fr. Indicateurs financiers (comptes financiers et budgets) des universités et autres opérateurs de l’enseignement supérieur : produits, charges de personnel, ressources propres, fonds de roulement et trésorerie.

Finances des opérateurs

Les montants sont en euros ; les ratios (*_produits_encaissables) en %. Seuls les comptes financiers (et non les budgets) sont retenus, à partir de 2012. Les totaux dépendent du nombre d’établissements déclarants (les charges de personnel ne sont renseignées qu’à partir de 2018, les droits d’inscription manquent en 2016-2017).

Ressources propres, personnel et subventions (médiane des établissements)

Code
cf |>
  group_by(date) |>
  summarise(`Ressources propres / produits` = median(ressources_propres_produits_encaissables, na.rm = TRUE),
            `Charges de personnel / produits` = median(charges_de_personnel_produits_encaissables, na.rm = TRUE),
            `Charges décaissables / produits` = median(charges_decaissables_produits_encaissables, na.rm = TRUE)) |>
  pivot_longer(-date) |>
  ggplot(aes(x = date, y = value / 100, color = name)) +
  geom_line() + geom_point(size = 0.8) + theme_minimal() + xlab("") + ylab("Médiane des établissements") +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  theme(legend.position = "bottom", legend.title = element_blank())

Fonds de roulement et trésorerie, en jours de fonctionnement

Code
cf |>
  group_by(date) |>
  summarise(`Fonds de roulement` = median(fonds_de_roulement_en_jours_de_fonctionnement, na.rm = TRUE),
            `Trésorerie` = median(tresorerie_en_jours_de_fonctionnement, na.rm = TRUE)) |>
  pivot_longer(-date) |>
  ggplot(aes(x = date, y = value, color = name)) +
  geom_line() + geom_point(size = 0.8) + theme_minimal() + xlab("") + ylab("Jours (médiane des établissements)") +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  theme(legend.position = "bottom", legend.title = element_blank())

Masse salariale et produits de fonctionnement (total des opérateurs)

Code
cf |>
  group_by(date) |>
  summarise(`Charges de personnel` = ssum(charges_de_personnel),
            `Produits de fonctionnement encaissables` = ssum(produits_de_fonctionnement_encaissables)) |>
  pivot_longer(-date) |>
  ggplot(aes(x = date, y = value / 1e9, color = name)) +
  geom_line() + geom_point(size = 0.8) + theme_minimal() + xlab("") + ylab("Milliards d'euros") +
  scale_y_continuous(limits = c(0, NA)) +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  theme(legend.position = "bottom", legend.title = element_blank())

Ressources propres : droits d’inscription, ANR, contrats

Code
cf |>
  group_by(date) |>
  summarise(`Droits d'inscription` = ssum(droits_d_inscription),
            `ANR hors PIA` = ssum(anr_hors_investissements_d_avenir),
            `ANR investissements d'avenir` = ssum(anr_investissements_d_avenir),
            `Contrats de recherche hors ANR` = ssum(contrats_et_prestations_de_recherche_hors_anr),
            `Formation continue` = ssum(formation_continue_diplomes_propres_et_vae),
            `Taxe d'apprentissage` = ssum(taxe_d_apprentissage)) |>
  pivot_longer(-date) |>
  ggplot(aes(x = date, y = value / 1e6, color = name)) +
  geom_line() + theme_minimal() + xlab("") + ylab("Millions d'euros") +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  theme(legend.position = "bottom", legend.title = element_blank())

Principaux établissements par produits de fonctionnement

Code
cf |>
  filter(exercice == max(exercice)) |>
  slice_max(produits_de_fonctionnement_encaissables, n = 20) |>
  mutate(etablissement_lib = fct_reorder(str_trunc(etablissement_lib, 45), produits_de_fonctionnement_encaissables)) |>
  ggplot(aes(x = etablissement_lib, y = produits_de_fonctionnement_encaissables / 1e6)) +
  geom_col(fill = "#2166ac") + coord_flip() + theme_minimal() +
  xlab("") + ylab("Millions d'euros (dernier exercice)")

Compétences élargies (RCE)

Code
cf |>
  filter(!is.na(vague)) |>
  group_by(date, vague) |>
  summarise(value = median(charges_de_personnel_produits_encaissables, na.rm = TRUE), .groups = "drop") |>
  ggplot(aes(x = date, y = value / 100, color = vague)) +
  geom_line() + theme_minimal() + xlab("") + ylab("Charges de personnel / produits (médiane)") +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  theme(legend.position = "bottom") + labs(color = "Vague RCE")