1 Objectif : Dynamique de population des poissons d’eau douce de Bretagne

Script : 20_pre_traitements_donnees_ope_especes

Il s’agit de réaliser une étape de pré-traitements et de mise en qualité des données sur la sélection des opérations réalisée précedemment. Il s’agit également de réaliser une mise en qualité des données individuelles des espèces propres à chacune des opérations. Il s’agit notamment d’observer les valeurs aberrantes contenues dans les mesures individuelles des poissons (mesures de tailles / poids / …).

2 Installation

2.1 Paramètres

Des paramètres sont fixés et sont modifiables selon les préférences et les objectifs visés. Parmi ces paramètres :

  • Sélection des passages de pêche à retirer : dans notre étude, les passages “2” et “3” sont retirés par soucis d’homogénéité entre les différents protocoles de pêches. Seuls les passages “0” et “1” sont conservés. Ces derniers correspondent au premier ou à l’unique passage réalisé lors d’une opération de pêche.

2.2 Chargement des packages et des données

library(aspe)
#install.packages("C:/Users/pablo.vigneron/Downloads/PascalIrz-aspeQual-643d282.tar.gz", repos = NULL, type = "source")
#devtools::install_github("PascalIrz/aspeQual") # Instalation du package 'aspeQual'
library(aspeQual)
library(tidyverse)
library(readxl)
library(DT)
load(file = "../processed_data/selection_especes.rda")
load(file = "../processed_data/selection_pop_ope.rda")
rdata_tables <- misc_nom_dernier_fichier(
  repertoire = "../../../../Liste_rouge_BFC/raw_data",
  pattern = "^tables")
load(rdata_tables) # Chargement des données 

mei_table <- misc_nom_dernier_fichier(
  repertoire = "../../../../Liste_rouge_BFC/raw_data",
  pattern = "^mei")
load(mei_table) # Chargement des données 
## Lire le fichier Excel contenant les classes de maturité des espèces
traits_biologiques <- read_excel("../raw_data/traits_biologiques.xlsx")
source(file = "../R/detecter_erreurs_tailles.R")
source(file = "../R/classe_couleur_erreur.R")

3 Constitution du jeu de données

Dans cette étude, nous souhaitons distinguer les individus “adultes” des individus “juvéniles”. Pour cela, nous devons réaliser une “classe de taille” de référence permettant, à partir de la taille des poissons pêchés lors des opérations, de séparer les poissons “adultes” des “juvéniles”. Ce choix est réalisé en raisonnance avec la méthodologie de la liste rouge qui incite à n’évaluer que les individus matures dans les analyses si les données le permettent (UICN France, 2018).

3.1 Selection des tailles de maturité des espèces

En complément de la base aspe, un tableau indiquant pour chaque espèce la taille maximale des 0+ est constitué (= taille référence minimum adulte). La longueur du poisson est utilisée comme proxy de son âge. Les tailles de maturité de référence sont renseignées à partir de 5 sources différentes pour chacune des espèces, et rassemblées dans un fichier Excel à importer sur R.

3.1.1 Construction du fichier Excel “traits_biologiques”

L’excel “traits_biologiques” doit être constitué en amont de l’exécution de ce script. Il contient 7 colonnes et 1 ligne par espèce présente sur la région étudiée :

  • 1ere colonne : “espece_presence_lrr_2015” : la valeur 1 est inscrite si l’espèce a été présente sur la précédente lrr ; la valeur 0 est inscrite dans le cas contraire.

  • 2ème colonne : “esp_nom_commun” : nom commun de l’espèce.

  • 3ème colonne : “esp_code_alternatif” : code à 3 lettres de l’espèce.

  • n colonne(s) : valeurs de taille référence minimum adulte issue de la documentation.

  • n+1 colonne : “taille_maturite_ref” : valeur médiane des différentes tailles issues de la documentation*.

  • Dans le cas de cette étude - 5 colonnes issues de différentes sources : 1 et 2 : Ouvrages d’identification des poissons d’eau douce de France (Keith et al., 2020 ; Derouch, 2024); 3 : Observation des courbes de tailles dans le fichier R “estimation_taille_0+” à partir des données de taille de la base aspe; 4 : Valeurs de fishbase ; 5 : Valeurs de référence des espèces d’Occitanie.

    Les différentes tailles de référence sont donc regroupées dans le tableau traits_biologiques et pour chacune des espèces, la médiane de l’ensemble des valeurs recueillies a été retenue pour être inscrite comme la valeur de référence de maturité.

traits_biologiques <- traits_biologiques %>% # Construction d'un jeu de données contenant les tailles de maturité
  select(esp_code_alternatif, taille_maturite_ref)
mei_for_join <- temp_df %>%
  rename(lop_id = mei_lop_id)

3.2 Création d’un jeu de données des mesures individuelles

Il s’agit maintenant de créer un dataframe contenant l’ensemble des données individuelles relatives aux espèces sélectionnées ainsi qu’aux opérations de pêches contenues dans la passerelle (cf script 00_selection_pop_ope et 03_analyse_selection_especes). La taille des poissons est indiquée en millimètre et le poids en gramme. Dans ce nouveau jeu de données mei_ope_selection, nous ne retenons que les données en lien avec le dataframe esp_ope_selection (espèces sélectionnées lors du dernier script).

mei_ope_selection <- passerelle %>%
  mef_ajouter_ope_date() %>%
  left_join(y = mei_for_join) %>% 
  # left_join(mei_for_join , by = "lop_id") %>% #ajouter les mei manuellement
  # mef_ajouter_mei() %>%
  mef_ajouter_lots() %>%
  mef_ajouter_type_protocole() %>%
  mef_ajouter_passage() %>% # Ajout des passages de pêches
  mef_ajouter_type_lot() %>%
  mef_ajouter_type_longueur() %>%
  select(
    ope_id,
    lop_id,
    lop_effectif,
    esp_code_alternatif,
    mei_id,
    sta_id,
    pop_id,
    mei_taille,
    pas_numero,
    tyl_libelle,
    pro_libelle,
    annee,
    tlo_libelle
  )

4 Modif provisoire : Pour le df final script GLMM et GAMMS

Attention lop_effectif correspond à l’effectis totale du lots !! Prenons l’exemple d’un lot de 4 CHA, on retrouvera 4 lignes avec chacune la valeur de 4 pour l’effectif. Pour le df finale, il faut que chaque effectif correspondent à 1 seul effectif par ligne !!!

mei_ope_selection_test <- mei_ope_selection %>% 
  mutate(lop_effectif_r = if_else(lop_effectif >= 1, 1, 0))

Nous retirons les passages supérieurs à 1 qui ne seront pas étudiés par soucis d’homogénéité des données (cf Paramètres). Nous ne considérons que les espèces sélectionnées suite au script 03_selection_especes (contenues dans l’objet mes_especes).

mei_ope_selection <- mei_ope_selection %>% 
  mutate(pas_numero = replace_na(pas_numero,0)) %>% # Passages "NA" transformés en "0" (équivalent)
  filter(!pas_numero %in% params$passage_a_retirer,
         esp_code_alternatif %in% mes_especes) %>% # Passages "2" et "3" sont retirés
  distinct()

4.1 Données manquantes

Certaines valeurs absentes / manquantes (“NA”) peuvent être observées au sein du jeu de données constitué. Celles-ci peuvent être dûes à des problèmes de retranscription dans la base de données aspe. Les lignes contenant des valeurs manquantes sont regroupées dans un dataframe valeur_na.

valeur_na <- mei_ope_selection %>% # Isolement des lignes contenant des NA dans un dataframe
  filter(if_any(everything(), is.na))
  
mei_ope_selection <- na.omit(mei_ope_selection)

La taille médiane des espèces à l’échelle de leur station est calculée dans le jeu de données esp_taille_med_sta. Ces valeurs sont ensuite assignées comme valeurs de références en cas de valeurs manquantes (à la station).

esp_taille_na_med_sta <- mei_ope_selection %>% # Dataframe contenant les tailles médiannes des espèces par station
  group_by(sta_id,
           esp_code_alternatif) %>%
  summarise(mei_taille_med = median(mei_taille, na.rm = TRUE)) %>%
  ungroup()
summary(esp_taille_na_med_sta)
##      sta_id        esp_code_alternatif mei_taille_med 
##  Min.   :   2422   Length:2396         Min.   : 20.0  
##  1st Qu.:   8843   Class :character    1st Qu.: 64.0  
##  Median :  19140   Mode  :character    Median : 91.0  
##  Mean   :  58115                       Mean   :134.8  
##  3rd Qu.:  19791                       3rd Qu.:144.0  
##  Max.   :4331694                       Max.   :960.0
valeur_na_complet <- valeur_na %>% # Remplacement valeurs de tailles manquantes par les valeurs du dataframe esp_taille_na_med_sta
  left_join(esp_taille_na_med_sta, by = c("sta_id", "esp_code_alternatif")) %>% 
  mutate(mei_taille = coalesce(mei_taille, mei_taille_med)) %>% 
  select(-mei_taille_med)

Le jeu de données initial mei_ope_selection est ensuite complété des lignes précèdemment retirées (les valeurs de tailles manquantes sont remplacées par les données de tailles médianes des espèces à l’échelle de la station).

mei_ope_selection <- bind_rows(mei_ope_selection, valeur_na_complet)

4.2 Distinction des classes d’âges

Une distinction des classes d’âges est réalisée sur le jeu de données mei_ope_selection : à chaque espèce correspond alors 3 stades différents : - “ad”: individu adulte dont la taille est supérieure à la taille_maturite_ref spécifique à l’espèce ; - “juv”: individu juvénile dont la taille est inférieure à la taille_maturité_ref spécifique à l’espèce ; - “ind”: Indifférencié = toutes classes d’âges confondues (ad + juv).

mei_ope_selection <- mei_ope_selection %>% 
  left_join(traits_biologiques) 

mei_ope_selection <- mei_ope_selection %>% 
  mutate(stade = ifelse(mei_ope_selection$mei_taille < mei_ope_selection$taille_maturite_ref,
                         "juv","ad")) # Ajout du stade pour chacune des lignes de mei_ope_selection

5 Relation tailles / poids

La mise en place des relations tailles / poids est réalisée grâce au package apse et au tutoriel Construire des relations taille- poids, réalisé par Mr Pascal Irz (https://rpubs.com/kamoke/729779). Cette relation nous permet de relier la longueur d’un poisson à son poids. Les mesures de poids sont rarement prises lors des pêches mais son pourtant nécessaires dans le calcul d’indicateurs simples comme pour les biomasses. Ainsi, nous utilisons cette relation afin d’obtenir des valeurs de poids indicatives remplaçant les valeurs NA de poids dans notre jeu de données mei_ope_selection. Elles seront alors remplacées par des estimations de poids en fonction de la taille du poissons : poids_tp.

mei_taille_poids <- aspe::data_taille_poids %>% # Utilisation des relations taille - poids du package aspe
  group_by(esp_code_alternatif,
           tlo_libelle) %>%
  arrange(source) %>%
  slice(1)
# nb : vérifier qu'on a bien les tailles pour tous les poissons avant d'appliquer la taille-poids
# combinaisons espèces - type de longueur absentes de la table de conversion
  
mei_tp_manquantes <- mei_ope_selection %>%
  select(esp_code_alternatif,
         tlo_libelle) %>%
  distinct() %>%
  left_join(y = mei_taille_poids) %>%
  filter(is.na(a))
  
# nb : certaines espèces n'ont pas de relation en longueur fourche, on approxime par la longueur totale
  
mei_esp_tp_manquantes <- mei_tp_manquantes %>%
  pull(esp_code_alternatif)

#Modif temporaire des NA pour tester le code !!!!

# mei_ope_selection <- mei_ope_selection %>%
#   filter(!esp_code_alternatif %in% c("SPI", "VAI", "ABL", "BOU", "CHA", "ASP"))
mei_ope_selection <- mei_ope_selection %>%
  mutate(tlo_libelle = ifelse(
      esp_code_alternatif %in% mei_esp_tp_manquantes &
        tlo_libelle == "Fourche", "Totale",
      tlo_libelle
    ))

On ajoute les poids_tp dans notre jeu de données mei_ope_selection :

mei_ope_selection <- mei_ope_selection %>%
  left_join(y = mei_taille_poids,
            by = c("esp_code_alternatif", "tlo_libelle")) %>%
  mutate(poids_tp = a * ((mei_taille / 10) ^ b)) # On ajoute les poids_tp 

6 Qualité des données individuelles (tailles / poids)

Maintenant que nous avons toutes les données regroupées dans un dataframe général (mei_ope_selection), nous pouvons passer au traitement qualitatif des données individuelles des poissons et notamment des valeurs poids et de tailles.

6.1 Vérification des poids estimés

En ajoutant les valeurs de poids mesurés (mei_poids), nous pouvons les comparer aux poids estimés par la relation (poids_tp). Il s’agit de regarder les différences entre les poids réels et les poids estimés.

mei_ope_selection <- mei_ope_selection %>% # Ajout des mesures de poids existantes
  left_join(y = mei_for_join ) %>% #ajouter les mei manuellement
   # mef_ajouter_mei() %>% #Ajout des données individuelles de poids
  select(ope_id:poids_tp, mei_poids)
mei_ope_selection_poids <- mei_ope_selection %>%
  filter(!is.na(mei_poids)) # Filtrer les données pour enlever les NA dans la colonne mei_poids
ggplot(mei_ope_selection_poids, aes(x = poids_tp, y = mei_poids, color = esp_code_alternatif)) +
  geom_point(alpha = 0.7, size = 3) +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = "red") +
  facet_wrap(~ esp_code_alternatif, scales = "free", labeller = label_wrap_gen(width = 8)) +
  labs(title = "Comparaison des valeurs estimées et réelles de poids par espèce",
    x = "Poids estimé (poids_tp)",
    y = "Poids réel (mei_poids)",
    color = "Code Espèce") +
  theme_minimal(base_size = 15) +
  theme(panel.background = element_rect(fill = "#faf0e0"),
    plot.title = element_text(hjust = 0.5, size = 20, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, size = 16),
    legend.position = "bottom",
    legend.title = element_text(size = 14),
    legend.text = element_text(size = 12),
    strip.background = element_rect(fill = "lightgrey", color = "black", size = 1),
    strip.text = element_text(size = 14, face = "bold")
  ) + guides(color = guide_legend(override.aes = list(size = 4)))

Nous observons que beaucoup de valeurs “0” sont présentes dans les valeurs de poids réelles. Il s’agit très probablement de valeurs “NA” inscrites en 0. Ces dernières sont à corriger dans la base ASPE.

6.2 Vérification des tailles

6.2.1 Mise en place de seuils de détection d’erreurs de tailles

Il s’agit de mettre en place des seuils pour détecter des erreurs potentielles dans les tailles de poissons. Il s’agit donc d’instaurer des valeurs de tailles “minimum” et “maximum” pour chaque espèce. Pour cela, nous crééons un jeu de données ne contenant que les lignes ayant fait l’objet de mesures sur la longueur totale du poisson :

esp_lt_data <- mei_ope_selection %>%
  ungroup() %>% 
  filter(tlo_libelle == "Totale", 
         esp_code_alternatif == esp_code_alternatif)

La fonction qtp_seuils permet d’isoler les tailles minimum et maximum des différentes espèces au sein du jeu de données esp_lt_data. Cette fonction est tirée du packages aspeQual dédié à la mise en qualité de la base aspe réalisé par Mr Pascal Irz.

mei_df_seuils <- aspeQual::qtp_seuils(df = esp_lt_data,
                                      var_taxon = esp_code_alternatif,
                                      var_a_tester = mei_taille,
                                      seuil_densite = 0.001)

mei_df_seuil est un jeu de données contenant les tailles minimum et maximum de chacune des espèces présentes dans mei_ope_selection. Les deux dataframes sont alors empilés :

mei_ope_selection <- mei_ope_selection %>% # Joindre les seuils calculés avec le jeu de données principal
  left_join(mei_df_seuils, by = "esp_code_alternatif")

6.3 Détection des erreurs de tailles

La fonction detecter_erreurs_tailles est créée afin de recenser les valeurs de tailles abérantes contenues dans un dataframe. Elle est appliquée sur notre jeu de données mei_ope_selection. erreur_df est le jeu de données dans lequel l’ensemble des données de tailles supérieures ou inférieures aux seuils calculés précédemment sont stockées. Il est nécessaire de corriger ces éventuelles erreurs de saisies ou d’unités directement dans la base aspe.

erreurs_df <- detecter_erreurs_tailles(df = mei_ope_selection)
##     ope_id esp_code_alternatif   mei_id mini maxi mei_taille
## 1    36700                 GOU  6201034   13  173        444
## 2    36821                 VAI  6198627   11   98        105
## 3    36612                 VAI  6465676   11   98        100
## 4    37308                 GOU  6466009   13  173        176
## 5    37308                 GOU  6466010   13  173        175
## 6    37228                 GOU  6199519   13  173         11
## 7    36323                 GOU  6316115   13  173         10
## 8    37215                 BLN  6427008   18  235         17
## 9    37215                 BLN  6427007   18  235         17
## 10   35881                 VAI  6352432   11   98        104
## 11   35881                 VAI  6352420   11   98        101
## 12   37498                 VAI  6510554   11   98         99
## 13   38012                 SPI  6582505   17  135         14
## 14   37023                 VAI  6204129   11   98        222
## 15   37023                 VAI 10566714   11   98        127
## 16   37023                 VAI 10566715   11   98        124
## 17   36974                 GOU  6308924   13  173        194
## 18   36092                 CHA  6428484    7  138          5
## 19   37240                 GOU  6269161   13  173        198
## 20   36555                 VAI 10233973   11   98        100
## 21   36986                 GOU  6242344   13  173        175
## 22   36092                 CHA  6428481    7  138          6
## 23   35848                 VAI  6202093   11   98         99
## 24   36676                 VAI  6320598   11   98        102
## 25   36676                 VAI  6320585   11   98        101
## 26   36676                 VAI 10586083   11   98        102
## 27   36820                 ABL  6393552   14  170        196
## 28   36820                 ABL  6393550   14  170        180
## 29   36820                 ABL  6393555   14  170        189
## 30   35881                 LOF  6275714   18  126        133
## 31   36675                 VAI  6473956   11   98        103
## 32   36675                 VAI  6473958   11   98         99
## 33   37425                 VAI  6473486   11   98         99
## 34   36984                 VAI  6436267   11   98        100
## 35   36916                 LOF  6238803   18  126        143
## 36   36713                 VAI  6358050   11   98       4058
## 37   36625                 CHE  6308103    4  537          1
## 38   37868                 VAI  6528732   11   98        107
## 39   37868                 VAI  6528730   11   98        139
## 40   37868                 VAI  6528735   11   98        135
## 41   37868                 VAI  6528733   11   98        120
## 42   37868                 VAI  6528731   11   98        107
## 43   37868                 VAI  6528734   11   98        106
## 44   37998                 VAI  6533318   11   98        741
## 45   37998                 VAI 10826543   11   98        119
## 46   37998                 VAI 10826544   11   98        356
## 47   37998                 VAI 10826545   11   98        263
## 48   37998                 VAI 10826546   11   98        102
## 49   37998                 VAI 10826547   11   98        206
## 50   37998                 VAI 10826548   11   98        156
## 51   37998                 VAI 10826549   11   98        136
## 52   37998                 VAI 10826550   11   98        189
## 53   37998                 VAI 10826552   11   98        165
## 54   37998                 VAI 10826553   11   98        361
## 55   37998                 VAI 10826554   11   98        191
## 56   37998                 VAI 10826555   11   98        110
## 57   37998                 VAI 10826556   11   98        110
## 58   37998                 VAI 10826557   11   98        114
## 59   37998                 VAI 10826558   11   98        177
## 60   37998                 VAI 10826559   11   98        102
## 61   37998                 VAI 10826560   11   98        169
## 62   37998                 VAI 10826563   11   98        182
## 63   37998                 VAI 10826564   11   98        110
## 64   37998                 VAI 10826565   11   98        186
## 65   37998                 VAI 10826566   11   98        146
## 66   37998                 VAI 10826567   11   98        194
## 67   37998                 VAI 10826569   11   98        125
## 68   37998                 VAI 10826570   11   98        286
## 69   37998                 VAI 10826571   11   98        155
## 70   37998                 VAI 10826573   11   98        223
## 71   37998                 VAI 10826574   11   98        202
## 72   37998                 VAI 10826576   11   98        182
## 73   37998                 VAI 10826577   11   98        216
## 74   37998                 VAI 10826578   11   98        243
## 75   37998                 VAI 10826579   11   98        243
## 76   37998                 VAI 10826581   11   98        105
## 77   37998                 VAI 10826582   11   98        204
## 78   37998                 VAI 10826584   11   98        233
## 79   37998                 VAI 10826585   11   98        104
## 80   37998                 VAI 10826586   11   98        451
## 81   37998                 VAI 10826589   11   98        247
## 82   37998                 VAI 10826590   11   98        316
## 83   37998                 VAI 10826591   11   98        232
## 84   37998                 VAI 10826593   11   98        117
## 85   37998                 VAI 10826594   11   98        108
## 86   37998                 VAI 10826595   11   98        131
## 87   37998                 VAI 10826596   11   98        173
## 88   37998                 VAI 10826597   11   98        117
## 89   37998                 VAI 10826598   11   98        114
## 90   37998                 VAI 10826600   11   98        177
## 91   37998                 VAI 10826601   11   98        218
## 92   37998                 VAI 10826604   11   98        252
## 93   37998                 VAI 10826605   11   98        168
## 94   37998                 VAI 10826606   11   98        251
## 95   37998                 VAI 10826608   11   98        127
## 96   37998                 VAI 10826609   11   98        108
## 97   37998                 VAI 10826610   11   98        212
## 98   37998                 VAI 10826611   11   98        184
## 99   37998                 VAI 10826612   11   98        237
## 100  37998                 VAI 10826613   11   98        146
## 101  37998                 VAI 10826614   11   98        229
## 102  37998                 VAI 10826615   11   98        214
## 103  37998                 VAI 10826616   11   98        249
## 104  37998                 VAI 10826617   11   98        148
## 105  37998                 VAI 10826618   11   98        221
## 106  37998                 VAI 10826619   11   98        124
## 107  37998                 VAI 10826620   11   98        224
## 108  37998                 VAI 10826621   11   98        155
## 109  37998                 VAI 10826622   11   98        316
## 110  37998                 VAI 10826623   11   98        173
## 111  37998                 VAI 10826624   11   98        198
## 112  37998                 VAI 10826625   11   98        306
## 113  37998                 VAI 10826626   11   98        167
## 114  37998                 VAI 10826627   11   98        140
## 115  37998                 VAI 10826630   11   98        199
## 116  37998                 VAI 10826631   11   98        148
## 117  37998                 VAI 10826632   11   98        167
## 118  37998                 VAI 10826633   11   98        279
## 119  37998                 VAI 10826634   11   98        140
## 120  37998                 VAI 10826635   11   98        276
## 121  37998                 VAI 10826636   11   98        166
## 122  37998                 VAI 10826637   11   98        127
## 123  37998                 VAI 10826638   11   98        242
## 124  37998                 VAI 10826640   11   98        124
## 125  37998                 VAI 10826641   11   98        139
## 126  37998                 VAI 10826642   11   98        115
## 127  37998                 VAI 10826643   11   98        225
## 128  37998                 VAI 10826644   11   98        110
## 129  37998                 VAI 10826645   11   98        386
## 130  38086                 CHA 10223182    7  138       1001
## 131  38086                 CHA 10223183    7  138        248
## 132  38101                 VAI 10226648   11   98        104
## 133  38101                 VAI 10226651   11   98        101
## 134  38101                 VAI 10226652   11   98        102
## 135  38101                 VAI 10226653   11   98        100
## 136  38101                 VAI 10226654   11   98        101
## 137  38101                 VAI 10226655   11   98        102
## 138  38101                 VAI 10226656   11   98        101
## 139  38101                 VAI 10226658   11   98        100
## 140  38101                 VAI 10226659   11   98        101
## 141  38101                 VAI 10226661   11   98        101
## 142  38101                 VAI 10226662   11   98         99
## 143  38101                 VAI 10226663   11   98         99
## 144  38101                 VAI 10226664   11   98        101
## 145  38101                 VAI 10226665   11   98        102
## 146  37663                 CHA  6552722    7  138        145
## 147  37483                 VAI 10222842   11   98         99
## 148  37825                 GOU  6600509   13  173        180
## 149  37665                 CHA  6494372    7  138        145
## 150  38073                 ABL  6568532   14  170         10
## 151  38371                 VAI  6653502   11   98        102
## 152  38341                 VAI  6656349   11   98         99
## 153  17110                 SPI  2930957   17  135        150
## 154  35980                 ABL  6232465   14  170        177
## 155  38568                 LOF  6724014   18  126          8
## 156  38568                 LOF  6724015   18  126          8
## 157  38579                 CHA  6725576    7  138          3
## 158  38582                 CHE  6726143    4  537          3
## 159  38591                 LOF  6729725   18  126          8
## 160  38596                 CHA  6730997    7  138          6
## 161  38599                 CHA  6731925    7  138        146
## 162  38599                 CHA  6731942    7  138        146
## 163  38604                 GOU  6732420   13  173          5
## 164  38608                 SPI  6733053   17  135          3
## 165  38622                 CHA  6738345    7  138          6
## 166  38623                 GAR  6738702    4  333        375
## 167  38624                 GAR  6739205    4  333        350
## 168  38624                 CHE  6739233    4  537          3
## 169  38624                 GOU  6739391   13  173          8
## 170  38629                 GOU  6740880   13  173          9
## 171  38637                 PER  6743859   10  437        540
## 172  38654                 GOU  6748481   13  173          5
## 173  38672                 BAF  6754086    6  701       1116
## 174  39233                 SPI  6913727   17  135         12
## 175  39233                 SPI  6913731   17  135         12
## 176  39298                 SPI  6934191   17  135        145
## 177  39408                 VAI  6955478   11   98          3
## 178  39414                 GOU  6956513   13  173        190
## 179  39542                 ABL  6985918   14  170        190
## 180  39406                 BAF  7012775    6  701        710
## 181  38586                 CHA  6726727    7  138        164
## 182  38648                 GOU  6746919   13  173          6
## 183  38648                 GOU  6746923   13  173          8
## 184  38654                 VAI  6748066   11   98          8
## 185  38654                 VAI  6748121   11   98          7
## 186  38730                 VAI  6773328   11   98        100
## 187  81743                 LOF  7960328   18  126        130
## 188  81848                 ROT  8028121   14  364        390
## 189  82200                 TRF  8250854    4  588        610
## 190  82213                 VAI  8252584   11   98          9
## 191  82536                 CHE  8765771    4  537        550
## 192  82552                 CHE  8774527    4  537        700
## 193  82555                 ABL  8776326   14  170        173
## 194  82559                 VAI  8777334   11   98        102
## 195  83436                 LOF 11167860   18  126        127
## 196  84091                 ABL 12135314   14  170        174
## 197  84280                 ROT 12243700   14  364          6
## 198  84322                 CHE 12265537    4  537        540
## 199  84367                 LOF 12304688   18  126          7
## 200  84480                 LOF 12409770   18  126         15
## 201  84854                 CHE 13766310    4  537        570
## 202  84854                 LOF 13766439   18  126          7
## 203  84854                 SPI 13766483   17  135          7
## 204  84854                 VAI 13766559   11   98          8
## 205  84854                 VAI 13766589   11   98          6
## 206  84856                 VAI 13767241   11   98          6
## 207  84863                 VAI 13845457   11   98          7
## 208  84862                 VAI 13845168   11   98          6
## 209  84863                 LOF 13845393   18  126        182
## 210  84863                 LOF 13845394   18  126        185
## 211  84864                 ABL 13845658   14  170          3
## 212  84864                 ABL 13845689   14  170         10
## 213  84864                 ABL 13845707   14  170          8
## 214  84864                 ABL 13845708   14  170          7
## 215  84864                 LOF 13845624   18  126          9
## 216  84869                 CHA 13847361    7  138        167
## 217  84872                 ABL 13848354   14  170        190
## 218  84878                 GOU 13856006   13  173          8
## 219  86197                 LOF 18382995   18  126        168
## 220  86197                 VAI 18383040   11   98          3
## 221  86335                 LOF 18680169   18  126         15
## 222  86463                 LOF 18815173   18  126          3
## 223  86483                 SPI 18820410   17  135        137
## 224  86483                 SPI 18820791   17  135        136
## 225  86621                 GOU 18856401   13  173        179
## 226  86621                 SPI 18856493   17  135          7
## 227  86631                 VAI 18858451   11   98          8
## 228  86689                 LOF 18924059   18  126        192
## 229  86689                 LOF 19873303   18  126        140
## 230  86692                 GOU 18929322   13  173        187
## 231  86710                 CHE 18934934    4  537          3
## 232  87037                 GOU 19249669   13  173        200
## 233  87037                 VAN 19249670    3  335        510
## 234  87036                 VAI 19249412   11   98        101
## 235  87037                 VAI 19249711   11   98        100
## 236  87057                 VAI 19255034   11   98          6
## 237  87064                 GAR 19257444    4  333        367
## 238  87113                 VAI 19721242   11   98        106
## 239  87113                 VAI 19286402   11   98        132
## 240  87172                 GOU 19308331   13  173        185
## 241  87179                 ABL 19317838   14  170        200
## 242  87315                 SPI 19539755   17  135         13
## 243  87425                 LOF 19666800   18  126        197
## 244  87425                 LOF 19668643   18  126        148
## 245  87425                 LOF 19668648   18  126        155
## 246  35882                 SPI  6273159   17  135        143
## 247  37549                 TRF  6508127    4  588        605
## 248  35833                 GAR  6384804    4  333        350
## 249  37373                 GOU  6231816   13  173        190
## 250  38332                 CHE  6671365    4  537        555
## 251  37527                 BLN  6603193   18  235        240
## 252  36985                 GOU  6321273   13  173        245
## 253  36335                 VAN  6383635    3  335        375
## 254  38142                 VAI  6487356   11   98        100
## 255  38008                 BAF  6531849    6  701        715
## 256  37934                 GAR  6562893    4  333        380
## 257  37439                 BRB  6464672    5  480        570
## 258  36681                 VAI  6195497   11   98        110
## 259  37289                 CHE  6472677    4  537        570
## 260  35980                 GAR  6422620    4  333        338
## 261  37654                 GAR  6529382    4  333        352
## 262  38187                 TRF  6543170    4  588        610
## 263  38180                 CHE  6604425    4  537        546
## 264  37620                 BAF  6496269    6  701        710
## 265  37825                 TRF  6618947    4  588        620
## 266  36151                 GOU  6390742   13  173        188
## 267  37929                 ABL  6605799   14  170        175
## 268  37841                 CHE  6601035    4  537        570
## 269  38073                 HOT  6624895    5  601        668
## 270  38141                 GOU  6563837   13  173        180
## 271  36152                 VAI  6387655   11   98        100
## 272  38086                 BLN  6505686   18  235        270
## 273  37631                 CHE  6566493    4  537        570
## 274  36793                 CHE  6310605    4  537        575
## 275  37653                 ROT  6493954   14  364        410
## 276  36168                 CHE  6350108    4  537        615
## 277  36078                 GOU  6201572   13  173        181
## 278  37935                 GAR  6523916    4  333        365
## 279  37372                 GOU  6387526   13  173        178
## 280  36649                 CHE  6325936    4  537        572
## 281  37826                 GAR  6580134    4  333        345
## 282  37371                 GOU  6200067   13  173        175
## 283  36477                 VAI  6348238   11   98        100
## 284  37491                 CHE  6495435    4  537        590
## 285  38276                 BAF  6690498    6  701        730
## 286  37631                 VAN  6510171    3  335        365
## 287  37627                 BLN  6487211   18  235        245
## 288  38225                 PER  6603798   10  437        438
## 289  37371                 GOU  6238574   13  173        185
## 290  38139                 VAI  6528470   11   98        110
## 291  38182                 TRF  6506631    4  588        595
## 292  37855                 GOU  6568064   13  173        195
## 293  36575                 ABL  6427919   14  170        171
## 294  38139                 VAI  6566487   11   98        105
## 295  37825                 TRF  6581367    4  588        590
## 296  37308                 GAR  6237848    4  333        340
## 297  38437                 LOF  6692350   18  126        148
## 298  37934                 GAR  6487450    4  333        345
## 299  37993                 GOU  6492165   13  173        190
## 300  17804                 TRF  3131056    4  588        590
## 301  38406                 GOU  6661117   13  173        180
## 302  37371                 GOU  6391418   13  173        176
## 303  38014                 CHE  6486458    4  537        560
## 304  38182                 TRF  6506630    4  588        715
## 305  38389                 CHE  6661693    4  537        540
## 306  35859                 LOF  6269971   18  126        128
## 307  37930                 BAF  6510875    6  701        730
## 308  37851                 GOU  6514872   13  173        182
## 309  38195                 CHE  6544329    4  537        550
## 310  38143                 VAI  6487234   11   98        100
## 311  37491                 HOT  6532249    5  601        660
## 312  37400                 BAF  6194800    6  701        800
## 313  37854                 GOU  6512871   13  173        199
## 314  37801                 GAR  6600003    4  333        370
## 315  38142                 GOU  6524841   13  173        175
## 316  37620                 CHE  6496273    4  537        540
## 317  38301                 GOU  6660659   13  173        175
## 318  37622                 TRF  6511619    4  588        676
## 319  37371                 GOU  6276669   13  173        183
## 320  35900                 VAI  6314156   11   98         99
## 321  37655                 ROT  6601856   14  364        385
## 322  37238                 ABL  6466156   14  170        180
## 323  36625                 ROT  6308335   14  364        382
## 324  36529                 GAR  6359339    4  333        970
## 325  87608                 BLN 20603632   18  235        238
## 326  88230                 LOF 21068719   18  126        136
## 327  88344                 VAI 21153573   11   98        105
## 328  88368                 CHE 21184329    4  537        559
## 329  88368                 CHE 21184330    4  537        570
## 330  88368                 CHE 21184334    4  537        550
## 331  88368                 CHE 21184339    4  537        592
## 332  88376                 GOU 21189522   13  173        187
## 333  88382                 GAR 21197389    4  333        339
## 334  88405                 VAI 21212657   11   98        100
## 335  88405                 VAI 21212658   11   98        109
## 336  88652                 CHE 21370800    4  537        567
## 337  88842                 HOT 21563252    5  601        712
## 338  88844                 CHE 21565883    4  537        587
## 339  88847                 GOU 21568774   13  173        183
## 340  88920                 CHE 21655357    4  537        578
## 341  88924                 GAR 21661619    4  333        422
## 342  88925                 GAR 21661782    4  333        341
## 343  88925                 GAR 21661786    4  333        352
## 344  88926                 ROT 21663015   14  364        371
## 345  88926                 CHE 21662794    4  537        544
## 346  37227                 SPI  6470634   17  135         15
## 347  38123                 BLN  6626994   18  235       1025
## 348  38123                 GOU  6515034   13  173       4100
## 349  38123                 GOU 10810321   13  173        407
## 350  38123                 GOU 10810322   13  173       1030
## 351  38123                 GOU 10810323   13  173        608
## 352  38123                 GOU 10810324   13  173        668
## 353  38123                 GOU 10810325   13  173        392
## 354  38123                 GOU 10810326   13  173        828
## 355  38123                 GOU 10810327   13  173        535
## 356  38123                 GOU 10810328   13  173       1785
## 357  38123                 GOU 10810329   13  173        541
## 358  38123                 GOU 10810330   13  173       1303
## 359  38123                 GOU 10810331   13  173       1225
## 360  38123                 GOU 10810332   13  173        429
## 361  38123                 GOU 10810333   13  173        619
## 362  38123                 GOU 10810334   13  173        443
## 363  38123                 GOU 10810335   13  173        355
## 364  38123                 GOU 10810336   13  173        623
## 365  38123                 GOU 10810337   13  173        290
## 366  38123                 GOU 10810338   13  173       1842
## 367  38123                 GOU 10810339   13  173       1198
## 368  38123                 GOU 10810340   13  173        579
## 369  38123                 GOU 10810341   13  173        237
## 370  38123                 GOU 10810342   13  173       1821
## 371  38123                 GOU 10810343   13  173        841
## 372  38123                 GOU 10810344   13  173        348
## 373  38123                 GOU 10810345   13  173        495
## 374  38123                 GOU 10810346   13  173        304
## 375  38123                 GOU 10810347   13  173        314
## 376  90254                 CHE 22548473    4  537        620
## 377  90254                 BAF 22548476    6  701        740
## 378  90259                 BAF 22554508    6  701        720
## 379  90259                 BAF 22554509    6  701        750
## 380  90259                 CHE 22554511    4  537        570
## 381  90259                 CHE 22554513    4  537        570
## 382  90427                 BAF 22624462    6  701        725
## 383  90977                 GOU 22884843   13  173        177
## 384  90984                 CHE 22885894    4  537        550
## 385  91033                 BAF 22905417    6  701        715
## 386  91051                 CHE 22920705    4  537        540
## 387  91092                 GAR 22946345    4  333        335
## 388  91103                 CHE 22955218    4  537        551
## 389  91108                 CHE 22957544    4  537        563
## 390  91341                 GAR 23200501    4  333        352
## 391  90719                 VAI 22754672   11   98        106
## 392  38591                 VAI  6729053   11   98          4
## 393  22943                 VAR  3811446   60  175         52
## 394  36534                 GOU  6279281   13  173          6
## 395  22943                 VAR  3811443   60  175         58
## 396  22943                 VAR  3811445   60  175         57
## 397  22943                 VAR  3811197   60  175         43
## 398  22943                 VAR  3811432   60  175         46
## 399  22943                 VAR  3811187   60  175         56
## 400  22943                 VAR  3811200   60  175         53
## 401  22943                 VAR  3811450   60  175         51
## 402  22943                 VAR  3811202   60  175         42
## 403  22943                 VAR  3811199   60  175         57
## 404  22943                 VAR  3811434   60  175         53
## 405  92406                 VAI 24010818   11   98        103
## 406  92406                 VAI 24010838   11   98        102
## 407  92406                 VAI 24010841   11   98        105
## 408  92406                 VAI 24010847   11   98        107
## 409  92406                 VAI 24010855   11   98        101
## 410  92935                 ABL 24279232   14  170        178
## 411  92956                 VAI 24287561   11   98         99
## 412  92982                 LOF 24305142   18  126         10
## 413  93048                 GOU 24360160   13  173        175
## 414  93064                 CHE 24373032    4  537        573
## 415  93064                 SPI 24373960   17  135        148
## 416  93080                 SPI 24379497   17  135        156
## 417  93125                 CHE 24408508    4  537        575
## 418  93140                 CHE 24431246    4  537        588
## 419  93141                 LOF 24435345   18  126        128
## 420  93141                 GAR 24435331    4  333        355
## 421  94884                 VAI 25339623   11   98        100
## 422  94945                 LOF 25390405   18  126         15
## 423  95729                 CHE 26399005    4  537        550
## 424  95729                 CHE 26399007    4  537        600
## 425  95809                 VAI 26453108   11   98        113
## 426  95809                 VAI 26453109   11   98        118
## 427  95831                 TRF 26513847    4  588        590
## 428  95908                 ABL 26569496   14  170        191
## 429  95958                 PER 26618414   10  437        471
## 430  96029                 ABL 26692564   14  170        202

Nous affichons, par ordre de priorité, les erreurs les plus abérrantes contenues dans le jeu de données erreurs_df. Nous fixons l’ordre d’abérration des données à travers les variables var_rouge / var_darkorange / var_orange, contenues dans la fonction classe_couleur_erreur.

erreurs_df <- erreurs_df %>% 
  rowwise() %>%
  mutate(color = classe_couleur_erreur(var_taille = mei_taille,
                                valeur_mini = mini,
                                valeur_maxi = maxi,
                                var_rouge = 150, # Rouge lorsque la taille réelle dépasse 150mm de la taille indiquée comme maximum
                                var_darkorange = 75,
                                var_orange = 25)) %>%
  ungroup() %>%
  mutate(severity = case_when(
    color == "red" ~ 1,
    color == "darkorange" ~ 2,
    color == "orange" ~ 3,
    TRUE ~ 4)) %>%  # Pour s'assurer qu'il y a une valeur de gravité pour chaque ligne
  arrange(severity)

Le tableau d’erreurs peut être affiché, avec en couleur, les ordres de priorités de correction des erreurs (allant de blanc à rouge).

datatable(erreurs_df %>% select(-severity), options = list(pageLength = 25)) %>%
  formatStyle('color',
    columns = c("ope_id", "esp_code_alternatif", "mei_id", "mini", "maxi", "mei_taille"),
    target = 'row',
    backgroundColor = styleEqual(
      c("red", "darkorange", "orange"), 
      c("red", "darkorange", "orange")))

7 Qualité des données de lots (lop_id / lop_effectif)

7.1 Vérification lop_id

Dans le jeu de données mei_ope_selection, on s’attend à avoir autant de ligne lop_id (identifiants de lots) que de ligne lop_effectif (effectifs des lots). Il peut cependant y avoir des exceptions, notamment lorsque la nature du lot est “S/M” et a une valeur d’effectif de 30.

verif_effectif <- mei_ope_selection %>%
  group_by(esp_code_alternatif,
           lop_id,
           lop_effectif
           ) %>%
  summarise(nbr_lignes = n()) %>%
  ungroup()

resultat_verif_effectif <- verif_effectif %>%
  filter(nbr_lignes!= lop_effectif)

Lorsque le nombre de ligne est supérieur au lop_effectif, il s’agit d’erreur de retranscription. On remplace alors la valeur de lop_effectif par le nombre de ligne contenu dans la colonne “nbr_lignes”.

mei_ope_selection <- mei_ope_selection %>%
  left_join(verif_effectif, by = c("esp_code_alternatif", "lop_id", "lop_effectif")) %>%
  mutate(lop_effectif = ifelse(lop_effectif < nbr_lignes, nbr_lignes, lop_effectif)) %>%
  select(-nbr_lignes)

7.2 Vérification mei_id

Dans ce même jeu de données, il doit normalement n’y avoir qu’un mei_id par ligne (et pas de doublons) : ainsi, nb_unique doit théoriquement être égal au nombre total de lignes de mei_ope_selection (nous devons cependant y soustraire les mei_id ayant des valeurs NA (cas anormaux venant de la base ASPE - à corriger - mais sans conséquence pour la suite de l’analyse)).

nb_unique <- mei_ope_selection %>% # Calcul du nombre unique de mei_id
  summarise(nb_unique = n_distinct(mei_id, na.rm = TRUE)) %>% 
  pull()

nb_na <- mei_ope_selection %>%
  summarise(nb_na = sum(is.na(mei_id))) %>%
  pull(nb_na)

nb_lignes <- mei_ope_selection %>% 
  nrow() # Nombre de lignes dans mei_ope_selection
# Comparaison et affichage du message
if (nb_unique + nb_na == nb_lignes) {
  print("Le nombre de valeurs uniques de mei_id est égal au nombre de lignes de mei_ope_selection.")
} else {
  print("Le nombre de valeurs uniques de mei_id n'est pas égal au nombre de lignes de mei_ope_selection.")}
## [1] "Le nombre de valeurs uniques de mei_id est égal au nombre de lignes de mei_ope_selection."

Dans l’exemple de la Bretagne, on observe que le nombre de valeurs uniques de mei_id n’est pas égal au nombre de lignes de mei_ope_selection(en comprennant les valeurs NA). Il est donc necessaire de corriger ces erreurs ; temporairement, on assigne à ces NA un identifiant provisoire afin de ne pas avoir de blocage pour la suite de l’étude.

mei_ope_selection <- mei_ope_selection %>% # Convertir mei_id en chaîne de caractères
  mutate(mei_id = as.character(mei_id))

# Création d'un vecteur de noms pour remplacer les NA
na_vigilance <- paste0("na_vigilance_", seq_along(which(is.na(mei_ope_selection$mei_id))))

mei_ope_selection <- mei_ope_selection %>% # Remplacement des NA dans mei_id par les valeurs de na_vigilance
  mutate(mei_id = replace(mei_id, is.na(mei_id), na_vigilance))
mei_ope_selection <- mei_ope_selection %>% 
  mutate(stade = as.factor(stade))
summary(mei_ope_selection)
##      ope_id          lop_id         lop_effectif    esp_code_alternatif
##  Min.   :11207   Min.   :1504948   Min.   :   1.0   Length:1090516     
##  1st Qu.:37427   1st Qu.:4304354   1st Qu.:  28.0   Class :character   
##  Median :38424   Median :4411155   Median : 105.0   Mode  :character   
##  Mean   :59130   Mean   :4769976   Mean   : 284.2                      
##  3rd Qu.:87910   3rd Qu.:5479731   3rd Qu.: 312.0                      
##  Max.   :96052   Max.   :6076699   Max.   :3511.0                      
##                                                                        
##     mei_id              sta_id            pop_id           mei_taille     
##  Length:1090516     Min.   :   2422   Min.   :    9872   Min.   :   1.00  
##  Class :character   1st Qu.:   8843   1st Qu.:   33328   1st Qu.:  47.00  
##  Mode  :character   Median :  18976   Median :   67711   Median :  63.00  
##                     Mean   :  76254   Mean   :  263959   Mean   :  76.61  
##                     3rd Qu.:  19639   3rd Qu.:   69335   3rd Qu.:  86.00  
##                     Max.   :4331694   Max.   :14895981   Max.   :4100.00  
##                                                                           
##    pas_numero     tyl_libelle        pro_libelle            annee     
##  Min.   :0.0000   Length:1090516     Length:1090516     Min.   :2007  
##  1st Qu.:0.0000   Class :character   Class :character   1st Qu.:2013  
##  Median :0.0000   Mode  :character   Mode  :character   Median :2017  
##  Mean   :0.3984                                         Mean   :2017  
##  3rd Qu.:1.0000                                         3rd Qu.:2022  
##  Max.   :1.0000                                         Max.   :2025  
##                                                                       
##  tlo_libelle        taille_maturite_ref  stade        esp_nom_latin     
##  Length:1090516     Min.   : 34.0       ad  :238839   Length:1090516    
##  Class :character   1st Qu.: 70.0       juv :780143   Class :character  
##  Mode  :character   Median :100.0       NA's: 71534   Mode  :character  
##                     Mean   :110.8                                       
##                     3rd Qu.:100.0                                       
##                     Max.   :750.0                                       
##                     NA's   :71534                                       
##        a                  b            source             n_etudes     
##  Min.   :0.001088   Min.   :2.476   Length:1090516     Min.   : 1.000  
##  1st Qu.:0.007115   1st Qu.:2.985   Class :character   1st Qu.: 1.000  
##  Median :0.009881   Median :3.042   Mode  :character   Median : 1.000  
##  Mean   :0.011562   Mean   :3.010                      Mean   : 5.167  
##  3rd Qu.:0.011165   3rd Qu.:3.080                      3rd Qu.: 8.000  
##  Max.   :0.045763   Max.   :3.383                      Max.   :54.000  
##                                                                        
##     poids_tp           mei_poids              mini         maxi       
##  Min.   :     0.00   Min.   :     0.00   Min.   : 3   Min.   :  71.0  
##  1st Qu.:     1.05   1st Qu.:     0.00   1st Qu.: 7   1st Qu.:  98.0  
##  Median :     2.58   Median :     0.00   Median :11   Median : 170.0  
##  Mean   :    19.45   Mean   :    62.28   Mean   :11   Mean   : 233.9  
##  3rd Qu.:     6.34   3rd Qu.:    24.00   3rd Qu.:14   3rd Qu.: 333.0  
##  Max.   :847840.16   Max.   :215142.00   Max.   :60   Max.   :1150.0  
##                      NA's   :955541

8 Sauvegarde

Nous sauvegardons dans un fichier .rda le jeu de données mei_ope_selection qui nous servira pour des analyses futures.

save(mei_ope_selection,
     file = "../processed_data/pre_traitements_donnees_especes.rda")

9 Références bibliographiques

Derouch, M. (2024). Cahier d’identification des Poissons d’eau douce de France. Mèze : Biotope éditions, 128 p. 

Keith, P., Poulet, N., Denys, G., Changeux, T., Feunteun, É., Persat, H. (2020). Les poissons d’eau douce de France. Deuxième édition. Muséum national d’Histoire naturelle, Paris ; Biotope, Mèze, 704 p. (Inventaires & biodiversité ; 18).

Irz, P. (2023). aspeQual: quality control over the aspe database. R package version 1.0.0, https://github.com/PascalIrz/aspeQual/

Irz, P., Mondy, C., Richard, B. Bonnafoux, L. (2024). aspe: An R package to analyse and visualise river fish data in France. R package version 0.4.1, https://github.com/PascalIrz/aspe/

UICN France (2018). Guide pratique pour la réalisation de Listes rouges régionales des espèces menacées - Méthodologie de l’UICN & démarche d’élaboration. Seconde édition. Paris, France.