Actualisation des fonctions de dommages aux entreprises.

R
gt-amc
entreprise

Actualisation des fonctions de dommages aux entreprises avec des indices INSEE.

Auteur·rice
Date de publication

6 mars 2026

Objectifs

Cette méthodologie vise à montrer comment actualiser les fonctions de dommages aux entreprises produites en 2016 à l’échelle nationale en France avec l’aide d’indices INSEE.

Logiciels et bibliothèques requis

ImportantInstallation des logiciels et bibliothèques requis

Le code ci-dessous est destiné à être exécuté dans R. Il est donc nécessaire que R soit installé sur votre système.

Cette méthode utilise la bibliothèque R suivante (les instructions d’installations sont disponibles sur son site web) :

  • floodam.data qui permet de réaliser des opérations adaptées aux données de l’observatoire.
ImportantConditions pour aller au bout de la méthode.

TEMPORAIRE : Le code ci dessous est éxécutable pour les membres du dépôt floodam.data tant que les fonctions développées pour cette méthode ne sont pas incluses dans les librairies de manière permanente.

Déroulement de la méthode

Premièrement il faut charger le bibliothèque floodam.data, définir les chemins d’accès à vos fichiers et dossiers et définir les variables d’intérêts pour paramétrer l’actualisation des fonctions de dommages.

NoteSauvegarde des données téléchargées et produites

Veuillez noter que nous avons définit des chemins temporaires tempdir() pour sauvegarder les données téléchargées et actualisées. Si vous souhaitez conserver les données, pensez à définir un autre chemin (variable path_output) dans le code qui suit.

Au moment où cette notice méthodologique a été rédigée, les fonctions de dommages publiées sur le site du gouvernement datent de 2016 et le millésime de l’INSEE le plus récent est 2025.

# Chargement des librairies
library(floodam.data)

# Déclaration des chemins et variables
damage = "entreprises"
path_output = file.path(tempdir(), damage)
date_origin = "2016" # date d'origine
date_update = "2025" # date actualisée

Téléchargement des données

Une fois la configuration terminée, nous devons télécharger les séries monétaires à appliquer aux fonctions de dommages et les fonctions de dommages à actualiser. Les séries recommandées INSEE pour l’actualisation des données sont définies dans la notice d’utilisation des fonctions de dommages aux entreprises :

  • batiment.surface : “en cas de nécessité d’exprimer en € d’une autre année, utiliser ICC de l’INSEE.”
  • equipement.stock.employe : “en cas de nécessité d’exprimer en € d’une autre année, utiliser indice IPC (idbank 001643154) de l’INSEE.”
  • total.employe : “en cas de nécessité d’exprimer en € d’une autre année, utiliser moyenne des indices ICC et IPC (idbank 001643154) de l’INSEE.”
  • La série Indice du coût de la construction des immeubles à usage d’habitation (ICC) retenue est la série “000008630”.
  • La série “001643154” identifiée dans la notice est la série arrêtée de 2015 (1901:2015) intitulée “Coefficient de transformation de l’euro ou du franc d’une année, en euro ou en franc d’une autre année”. Nous avons opté pour l’utilisation de la série “001765171” Indice annuel des prix à la consommation (IPC) couvrant les années 2003 à 2025.

Pour cette étape nous mobilisons deux fonctions de floodam.data :

  • download_insee_index() : téléchargement d’une ou plusieurs séries d’indices INSEE
  • download_damage() : téléchargement des fonctions de dommages officielles aux parcelles agricoles, aux logements, aux entreprises ou établissements publics.
# Téléchargement de l'indice à appliquer : IPAMPA
series = setNames(
    c("000008630", "001765171"),
    c("icc", "ipc")
)
lapply(series, floodam.data::download_insee_index, path_output)

# Téléchargement des fonctions de dommages publiées sur le site du gouvernement
floodam.data::download_damage(damage, path_output)
archive_path = file.path(path_output, paste0(damage, ".zip"))
unzip(archive_path, exdir = path_output)

Lecture des données

Une fois les données téléchargées, nous pouvons les lire et les attribuer à des variables. Les deux séries d’indices INSEE téléchargées sont stockées dans une liste nommée indexes tandis que toutes les feuilles du classeur au format .xlsx sont stockées dans une liste nommée dataset.

Pour cette étape nous mobilisons la fonction de floodam.data nommée read_insee_serie() qui permet de lire un ou plusieurs indices INSEE :

# Lecture des indices INSEE
indexes = setNames(lapply(
    file.path(path_output, paste0(series, ".csv")),
    read_insee_serie
), names(series))

# Lecture du contenu de l'archive des fonctions de dommages
damage_path = file.path(path_output, unzip(archive_path, list = TRUE)[["Name"]])
sheet = readxl::excel_sheets(damage_path)

dataset = sapply(
    sheet,
    function(sheet, damage_path) {
        result = as.data.frame(readxl::read_xlsx(
            file.path(damage_path),
            sheet
        ))
    }, damage_path = damage_path
)

Actualisation des fonctions de dommages avec un indice

Nous appliquons ensuite les indices INSEE aux fonctions de dommages de 2016 pour les actualiser à l’année 2025. Comme mentionné plus haut dans la Section 4, nous appliquons des indices différents ou des moyennes d’indices pour chaque fonction de dommages aux entreprises.

Utilisation des indices pour déterminer des ratios à appliquer pour l’actualisation

La méthode générale de calcul est décrite ci-dessous :

\(Pa = Po*R\)

  • \(Pa\) : Prix actualisé
  • \(Po\) : Prix d’origine
  • \(R\) : Ratio entre l’indice de l’année à actualiser et celle d’origine où \(R = Ia/ Io\) avec \(Ia\) étant l’indice de l’année à actualiser et \(Io\) étant l’indice de l’année d’origine

Les indices disponibles pour l’ICC sont trimestriels donc nous faisons une moyenne des trismestres de l’année pour obtenir un indice annuel comme présenté ci-dessous :

  • \(Iicc = (It1 + It2 + It3 + It4)/4\)

Aussi, pour actualiser les indices des fonctions de dommage “total.employe” il est recommandé de faire une moyenne des indices ICC et IPC. Étant donné que les deux séries ne sont pas de la même base, nous faisons une moyenne des ratios calculés pour obtenir le ratio “total” comme ci-dessous :

  • \(Rtotal = (Ricc + Ripc)/2\)
# Trimestrial values for ICC : mean of all available trimesters to obtain one value
## Origin
selection_origin = grep(date_origin, row.names(indexes[["icc"]]))
icc_annual_origin = mean(indexes[["icc"]][selection_origin, "value"])
ipc_origin = indexes[["ipc"]][date_origin, ]

## Update
selection_update = grep(date_update, row.names(indexes[["icc"]]))
icc_annual_update = mean(indexes[["icc"]][selection_update, "value"])
ipc_update = indexes[["ipc"]][date_update, ]

## Ratio for all three sheets to update
ratio_bati = icc_annual_update / icc_annual_origin
ratio_equip = ipc_update / ipc_origin
## A DECIDER POUR RATIO TOTAL : moyenne des ratios ou moyennes des indices (différentes bases)
ratio_total = mean(c(ratio_bati, ratio_equip))

Application des ratios calculés aux fonctions de dommages

Ici nous appliquons les ratios précédemment calculés (ratio_bati, ratio_equip, ratio_total) aux fonctions de dommages respectives (batiment.surface, equipement.stock.employe, total.employe) stockées dans la liste dataset.

# Application des rations calculés aux fonctions de dommages
to_update = c(
    batiment.surface = ratio_bati,
    equipement.stock.employe = ratio_equip,
    total.employe = ratio_total
)
hazard = c("h.min", "h.max", "d.min", "d.max", "alea")

for(i in names(to_update)) {
    selection = names(dataset[[i]]) %in% hazard
    dataset[[i]] = data.frame(
        dataset[[i]][selection],
        dataset[[i]][!selection]*to_update[i]
    )
}

Mise à jour de la notice d’utilisation

Enfin, pour garder trace des actions effectuées nous mettons à jour la notice d’utilisation de ces fonctions puis pouvons exporter la liste au format “.xlsx”.

selection = grep("2.6 Actualisation", dataset[["notice"]][[1]])
dataset[["notice"]][selection, 3] = paste(
    "Les données de ce document résultent de l'actualisation des fonctions de dommages produites en 2016 par l'application d'indices (tels que décrit plus bas).",
    sprintf(
        "L'actualisation a été faite avec la version %s de floodam.data.",
        utils::installed.packages()["floodam.data", "Version"]
    )
)

selection = grep("€ 2016", dataset[["notice"]][[3]])
dataset[["notice"]][selection, 3] = gsub(
    "€ 2016",
    sprintf("€ %s", date_update),
    dataset[["notice"]][selection, 3]
)

# Export as xlsx
export_dir = file.path(path_output, sprintf("%s_%s.xlsx", damage, date_update))
writexl::write_xlsx(
    dataset,
    path = export_dir
)

Visualisation des résultats

TO DO Intégrer une fonction de visualisation dans floodam.data ?

Retour au sommet