Script : 03_selection_especes

Après avoir sélectionné les points de prélèvements et les opérations de pêche de l’aire géographique ciblée, un tri sur les données des espèces péchées durant ces opérations est réalisé. Il s’agit de retirer du jeu initial les données non nécessaires ou obsolètes pour notre étude.

1 Installation

1.1 Chargement des packages et des données

library(tidyverse)
library(aspe)
library(ggrepel)
library(janitor)
library(scales)
load(file = "../processed_data/selection_pop_ope.rda")

Nous avons besoin de charger la table aspe des données de mesures individuelles (cette dernière est lourde, elle peut donc mettre un certain temps à charger).

rdata_tables <- misc_nom_dernier_fichier(
  repertoire = "../../../../Liste_rouge_BFC/raw_data",
  pattern = "^tables")
load(rdata_tables) # Chargement des données 

2 Chargement de la table aspe des données de mesures individuelles

mei_table <- misc_nom_dernier_fichier(
  repertoire = "../../../../Liste_rouge_BFC/raw_data",
  pattern = "^mei")
load(mei_table) # Chargement des données 

3 Chargement de la base taxref

Pour constituer la liste complètes des espèces à évaluer de la liste rouge régionale de BFC, on importe la base taxref_v18. Pour pouvoir ajouter les libéllés de nom d’espèces au jeu de donnée de base par la suite, on importe un dataframe avec les codes espèces de la BDD Aspe esp_code_alternatif.

base_tax_ref_aspe <- readxl::read_xlsx("../raw_data/ASPE_Suivi référentiel taxon_20250603 (1).xlsx", skip = 3)
base_tax_ref_uicn <- readr::read_delim('../raw_data/TAXREFv18.txt') 
tax_ref_uicn <- base_tax_ref_uicn %>%
  clean_names() %>%
  select(
    phylum,
    classe,
    ordre,
    famille,
    sous_famille,
    cd_ref,
    cd_nom,
    nom_complet,
    nom_valide,
    nom_vern,
    lb_nom,
    fr
  ) %>%
  filter(classe == "Actinopterygii" | classe == "Petromyzonti") %>%
  select(cd_nom, classe, ordre, famille, nom_valide, nom_vern,lb_nom ) %>%
  rename(code_taxref = cd_nom, 
         nom_commun = nom_vern,
         nom_scientifique = lb_nom)
tax_ref_aspe <- base_tax_ref_aspe %>%
  clean_names() %>% 
  rename(esp_code_alternatif = code_alternatif_aspe,
         localite = hexagone_h_outre_mer_om, 
         nom_vernaculaire = nom_commun, 
         taxon = poisson_p_macro_crustaces_mc_amphibien_a) %>% 
  filter(localite == "H", 
         taxon == "P") %>% 
  select(esp_code_alternatif, nom_vernaculaire, nom_latin, code_taxref, esp_code_alternatif)

On importe également une liste d’espèces réalisé par l’OFB en 2016 avec les statut d’autochtonie qu’on appelera liste_esp_bfc.

liste_esp_bfc <- readxl::read_xlsx("../raw_data/espèces de poisson BFC.xlsx") %>% 
  rename(esp_code_alternatif = "Code espèce") %>% 
  mutate(esp_code_alternatif = fct_recode(esp_code_alternatif, "GTN" = "GOT"))  # Correction de l'ancien code du gobie à tâche noire de GOT en GTN

4 Constitution du jeu de données

4.1 Création du dataframe

Un nouveau jeu de données esp_ope_selection est créé à partir des stations et des opérations retenues dans la passerelle. Il contient les données spécifiques aux opérations : les résultats des pêches et certaines données de contexte (surface de pêche / date de pêche / effectifs / lots de poissons / données individuelles).

esp_ope_selection <- passerelle %>% # dataframe contenant toutes les espèces présentes dans les opérations de pêches sélectionnées
  left_join(y=lot_poissons %>% # Ajout des lots de poissons
              select(lop_id,
                     esp_id = lop_esp_id,
                     lop_effectif)) %>% 
  left_join(y= ref_espece %>% # Ajout des références des espèces péchées
               select(esp_id,
                      esp_code_alternatif)) %>% 
  left_join(y=operation %>% 
               select(ope_id, 
                       ope_surface_calculee, # Ajout des surfaces de pêches
                       passage$pas_numero)) %>% 
  mef_ajouter_ope_date() %>%  # Ajout des dates de pêches
  select(ope_id,
         lop_effectif,
         lop_id,
         esp_code_alternatif,
         annee,
         ope_surface_calculee) %>%
  distinct()

4.2 Tri du dataframe

Dans le cadre de notre étude, seules les espèces de poissons d’eau douce nous intéressent. Nous retirons alors les autres espèces du jeu de données esp_ope_selection établis dans les paramètres (cf params : “especes_a_retier”)

  • Différents éco-types de Carpe (“CCX” _ “CMI” _ “CCU”) sont rassemblés sous un même code esp_code_alternatif : “CCO”.

  • “APP”,“ASA”, “OCL”, “PCC”,“PFL” sont retirées car ce sont des espèces d’écrevisses

  • “BRX”,“CAX”,“CCU”,“GOX”, “LPX”, “CYP” sont retirées car ce sont des espèces indéterminées.

  • “HBG” : Hybride Brème/Gardon

A finir la prise de décision !!! :

  • “CAA” est le nouveau code de “CAD”

  • “VAR” : arrivé de la vandoise rostrée où modification de l’identification de “VAN”?

  • “ROI” Rotengle italien ?

  • “GOU”=> “GOO” : à partir d’environ 2018 : changement d’identification le Goujon (GOU) devient le Goujon occitan (GOO)

esp_ope_selection <- esp_ope_selection %>%
  mutate(esp_code_alternatif =
           case_when(
             esp_code_alternatif %in% c("CCX", "CMI", "CCU") ~ "CCO",
             # Transformation CCX, CMI et CCU en CCO
             TRUE ~ esp_code_alternatif
           )) %>%
  filter(!(esp_code_alternatif %in% params$especes_a_retirer)) %>% # Espèces à retirer
  mutate(esp_code_alternatif = fct_recode(esp_code_alternatif, "CAA" = "CAD")) # Correction de l'ancien code du Carassin doré de CAD en CAA

5 Analyse des données espèces

Nous souhaitons obtenir une vision globale des données contenues dans le dataframe esp_ope_selection afin de savoir si les espèces sélectionnées dans la liste rouge régionale 2014 sont bien cohérentes avec les espèces contenues dans ce nouveau jeu de données (ayant eu une décenies de données ajoutées depuis la dernière LRR.

Pour obtenir un point de vue générale sur les différentes espèces contenues dans ce jeu de données, un graphique bivarié est réalisé : il représente le pourcentage d’occurrence des espèces en fonction de la densité surfacique moyenne des espèces sur les 20 dernières années. Ce graphique pourra alors nous indiquer quelles espèces sont majoritairement présentes sur le territoire, ainsi que pour lesquelles les donnée disponibles sont suffisantes pour pouvoir étudier leur évolution démographique.

5.1 Densités surfaciques des espèces

Les densités surfaciques moyennes sont calculées pour chaque espèce à l’opération. Elles sont regroupées dans le dataframe ope_esp_densite.

ope_esp_densite <- esp_ope_selection %>% 
  group_by(ope_id,
           esp_code_alternatif,
           ope_surface_calculee) %>% # Ajout des surfaces d'opération
  summarise(effectif= sum(lop_effectif)) %>% # Calcul des effectifs par espèces, par opérations
  ungroup() %>% 
  mutate(valeur = effectif/ope_surface_calculee) # Densités surfaciques par espèces, par opérations

ope_esp_densite_cal <- ope_esp_densite %>% # Création d'un dataframe simplifié pour le futur calcul
  select(ope_id,
         esp_code_alternatif,
         valeur)

# Calcul de la densité surfacique moyenne pour chaque espèce (toutes opérations confondues)
esp_densite_moyenne <- ope_esp_densite %>%
  group_by(esp_code_alternatif) %>%
  summarise(densite_moy = mean(valeur)) 

5.2 Effectif des espèces

Les effectifs de chaque espèce sont calculés, à l’échelle de l’opération, sur les 20 dernières années de données dans esp_effectif :

esp_effectif <- ope_esp_densite %>% # Calcul de l'effectif total pour chaque espèce sur toutes les opérations
  group_by(esp_code_alternatif) %>%
  summarise(effectif_total = sum(effectif)) 
ggplot(esp_effectif,
       aes(x = esp_code_alternatif, y = effectif_total, fill = effectif_total)) +
  geom_col() +
  scale_fill_gradient(low = "darkseagreen3", high = "darkseagreen4") +
  scale_y_log10(
    name = "Effectif total (échelle log10)",
    breaks = c(1, 10, 100, 1000),
    labels = comma
  ) +
  coord_flip() +
  theme_minimal() +
  labs(x = "Espèces", y = "Effectif total") +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    panel.grid.major = element_line(color = "#ffffff"),
    panel.grid.minor = element_line(color = "#ffffff"),
    panel.background = element_rect(fill = "#faf0e6")
  )

5.3 Construction du jeu de donnée finale esp_ope_selection

Pour construire le df esp_ope_selection, pusieurs jeu de donnée vont être fusionné :

  1. tax_ref_uicn possède les nom commun et nom complet scientique des espèces de poissons.

  2. tax_ref_aspe possède les codes espèces de la base aspe permettant des jointures entre tables.

  3. liste_esp_bfc possède les codes espèces, une liste des espèces de 2016 sur la région avec les statuts d’autochtonies.

  4. base_liste_complete_bfc_aspe correspond au df de la période complète régionale de la base aspe toute stations confondues, export présent directement dans processed_data.

  5. liste_correc_autochtonie correspond à une liste provisoire issus des fusions des df précédent. Il est présent en export dans processed_data

  6. liste_bfc_sp_cor correspond à un df de toutes les espèces présentes en BFC avec les noms taxref, les codes aspe, les statut d’autochtonie par bassins- versants et quelques corrections. Il est présent en export dans processed_data. Il a été construit à partir de la fusion des jeux de données précédents ainsi qu’un ajout de correction manuellement sur de nouvelles colonnes, sur Excel. Il est une correction directe du df précédent liste_correc_autochtonie.

  7. esp_ope_selection correspond au df de la période 2007-2025 avec les stations sélectionnées pour l’analyse des données.

5.3.1 Ajout des noms espèces - taxref v18 au dataframe esp_ope_selection

On cherche à intégrer les libelle de nom d’espèces taxref à notre dataframe esp_ope_selection in fine, pour cela :

  • On joint le df avec les noms taxref au df avec les codes espèces Aspe
  • On joindra ce nouveau df tax_ref_ape au df esp_ope_selection
# Jointure taxref avec ref taxe aspe
tax_ref_aspe <- tax_ref_aspe %>%
  left_join(tax_ref_uicn, by = "code_taxref") %>%
  select(esp_code_alternatif, ordre, nom_vernaculaire, nom_latin, nom_valide, nom_commun, nom_scientifique, code_taxref)

5.3.2 Liste d’espèces complète 2016 BFC à partir de la base ASPE (période 2007-2025)

esp_list <- liste_esp_bfc %>% 
  full_join(tax_ref_aspe, by = "esp_code_alternatif")
esp_full_list <- esp_list %>% 
  full_join(esp_effectif, by = "esp_code_alternatif") %>% # jointure effectif à la liste bfc
  filter(!(is.na(Introduction) & is.na(effectif_total))) %>% 
  select(ordre, nom_vernaculaire,nom_latin, nom_commun, nom_scientifique, nom_valide,esp_code_alternatif, Introduction, effectif_total)

5.3.3 Liste d’espèces période complete de BFC sélectionnées à partir de la base ASPE

# base_liste_complete_bfc_aspe <- readr::read_delim('../processed_data/liste_complete_aspe_bfc.csv') %>%
#   select(
#     ordre,
#     nom_vernaculaire,
#     nom_latin,
#     nom_commun,
#     nom_scientifique,
#     nom_valide,
#     Introduction,
#     esp_code_alternatif
#   )
# esp_full_list_eff <- esp_full_list %>%
#   select(effectif_total, esp_code_alternatif)
# 
# liste_complete_bfc_lrr <- base_liste_complete_bfc_aspe %>%
#   left_join(esp_full_list_eff, by = "esp_code_alternatif") 
# liste_correc_autochtonie <-  liste_bio_autochtonie %>%
#   select(esp_code_alternatif,
#          statut_autochtonie,
#          categorie_lr_france_2019)
# 
# liste_complete_bfc_lrr <- liste_complete_bfc_lrr %>%
#   left_join(liste_correc_autochtonie, by = "esp_code_alternatif") %>%
#   select(
#     ordre,
#     nom_commun,
#     nom_valide,
#     esp_code_alternatif,
#     statut_autochtonie ,
#     effectif_total,
#     categorie_lr_france_2019
#   ) %>%
#   rename(nom_vernaculaire_v18 = nom_commun,
#          nom_scientifique_v18 = nom_valide)
#write_excel_csv(liste_complete_bfc_lrr, "../processed_data/liste_esp_lrr_bfc.csv")

5.3.4 Après expertise de Gael Denys, voici une liste corrigée d’espèces.

liste_bfc_sp_cor <- readxl::read_xlsx("../processed_data/liste_esp_lrr_bfc_GD.xlsx") %>% 
  clean_names() %>% 
  select(esp_code_alternatif, statut_autochtonie, effectif_total, categorie_lr_france_2019, statut_rhin, statut_seine, statut_loire, statut_rhone)
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
  left_join(tax_ref_aspe, by = "esp_code_alternatif") %>%
  select(
    ordre,
    nom_valide,
    nom_vernaculaire,
    esp_code_alternatif,
    statut_autochtonie,
    effectif_total,
    categorie_lr_france_2019,
    statut_rhin,
    statut_seine,
    statut_loire,
    statut_rhone,
    nom_commun
  ) 
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
  filter(!esp_code_alternatif == "TRL") %>% # On ne ^prend pas en compte les ecotypes de truite dans la liste rouge
  mutate(statut_loire = fct_recode(statut_loire, "endémique" = "endémqiue"))
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
  
  mutate(autochtonie_new = if_else(if_any(
    c(statut_rhone, statut_seine, statut_loire),
    ~ . %in% c(
      "a priori introduit avant 1500",
      "endémique",
      "introduit avant 1500",
      "natif",
      "natif*", 
      "éteint"
    )
  ), "autochtone", "allochtone"))
liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
  # filter(autochtonie_new == "autochtone") %>%
  select(
    ordre,
    nom_valide,
    nom_commun,
    esp_code_alternatif,
    autochtonie_new,
    #effectif_total,
    #statut_rhin,
    # statut_seine,
    # statut_loire,
    #  statut_rhone,
    categorie_lr_france_2019
  ) 
# liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
#     mutate(effectif_total = na_if(effectif_total, "NA"))
table_liste_bfc_sp_cor_exp <- liste_bfc_sp_cor %>%
  rename(
    "Nom scientifique" = nom_valide,
    "Code espèce" = esp_code_alternatif,
    "Statut" = autochtonie_new,
    "LRR France 2019" = categorie_lr_france_2019,
    "Nom vernaculaire" = nom_commun,
    "Ordre" = ordre
  ) %>%
  arrange(desc(Statut))

# write_excel_csv(table_liste_bfc_sp_cor_exp,
#                 "../processed_data/liste_bfc_sp_cor_exp.csv")
table_liste_bfc_sp_cor <- liste_bfc_sp_cor %>%
  rename(
    "Nom scientifique" = nom_valide,
    "Code espèce" = esp_code_alternatif,
    "Statut" = autochtonie_new,
    "LRR France 2019" = categorie_lr_france_2019
  ) %>%
  arrange(desc(Statut)) %>%
  flextable::flextable() %>%
  flextable::autofit() %>%
  flextable::colformat_int(j = c(1, 3), big.mark = " ") %>% 
  flextable::style()
table_liste_bfc_sp_cor

ordre

Nom scientifique

nom_commun

Code espèce

Statut

LRR France 2019

Acipenseriformes

Acipenser sturio Linnaeus, 1758

Esturgeon, Esturgeon européen, Esturgeon de l'Europe Occidentale

EST

autochtone

CR

Anguilliformes

Anguilla anguilla (Linnaeus, 1758)

Anguille d’Europe, Anguille européenne

ANG

autochtone

CR

Clupeiformes

Alosa alosa (Linnaeus, 1758)

Grande alose, Alose vraie

ALA

autochtone

CR

Clupeiformes

Alosa fallax (Lacepède, 1803)

Alose feinte atlantique

ALF

autochtone

Cypriniformes

Abramis brama (Linnaeus, 1758)

Brème commune

BRE

autochtone

LC

Cypriniformes

Alburnoides bipunctatus (Bloch, 1782)

Spirlin

SPI

autochtone

LC

Cypriniformes

Alburnus alburnus (Linnaeus, 1758)

Ablette

ABL

autochtone

LC

Cypriniformes

Barbatula barbatula (Linnaeus, 1758)

Loche franche

LOF

autochtone

LC

Cypriniformes

Barbus barbus (Linnaeus, 1758)

Barbeau fluviatile

BAF

autochtone

LC

Cypriniformes

Blicca bjoerkna (Linnaeus, 1758)

Brème bordelière

BRB

autochtone

LC

Cypriniformes

Chondrostoma nasus (Linnaeus, 1758)

Nase commun, Hotu, Alonge, Aucon, Chiffe, Fera, Muge, Mulet, Nase, Nez, Seuffre, Tunar, Âme noire, Écrivain

HOT

autochtone

LC

Cypriniformes

Cobitis taenia Linnaeus, 1758

Loche de rivière, Loche épineuse

LOR

autochtone

NT

Cypriniformes

Cyprinus carpio Linnaeus, 1758

Carpe commune, Carpat, Carpeau, Escarpo, Kerpaille

CCO

autochtone

NA

Cypriniformes

Gobio gobio (Linnaeus, 1758)

Goujon

GOU

autochtone

LC

Cypriniformes

Leuciscus burdigalensis Valenciennes in Cuvier & Valenciennes, 1844

Vandoise rostrée

VAR

autochtone

NT

Cypriniformes

Leuciscus leuciscus (Linnaeus, 1758)

Vandoise

VAN

autochtone

LC

Cypriniformes

Misgurnus fossilis (Linnaeus, 1758)

Loche d'étang

LOE

autochtone

EN

Cypriniformes

Parachondrostoma toxostoma (Vallot, 1837)

Toxostome, Sofie, Soiffe

TOX

autochtone

NT

Cypriniformes

Phoxinus phoxinus (Linnaeus, 1758)

Vairon

VAI

autochtone

LC

Cypriniformes

Phoxinus fayollarum Denys, Dettai, Persat, Daszkiewicz, Hautecoeur & Keith, 2020

VAF

autochtone

Cypriniformes

Phoxinus septimaniae Kottelat, 2007

Vairon du Languedoc

VAC

autochtone

Cypriniformes

Rutilus rutilus (Linnaeus, 1758)

Gardon

GAR

autochtone

LC

Cypriniformes

Scardinius erythrophthalmus (Linnaeus, 1758)

Rotengle

ROT

autochtone

LC

Cypriniformes

Squalius cephalus (Linnaeus, 1758)

Chevesne commun, Chevaine commun

CHE

autochtone

LC

Cypriniformes

Telestes souffia (Risso, 1827)

Blageon

BLN

autochtone

LC

Cypriniformes

Tinca tinca (Linnaeus, 1758)

Tanche

TAN

autochtone

LC

Esociformes

Esox lucius Linnaeus, 1758

Brochet

BRO

autochtone

VU

Gadiformes

Lota lota (Linnaeus, 1758)

Lote

LOT

autochtone

VU

Gasterosteiformes

Gasterosteus aculeatus Linnaeus, 1758

Épinoche à trois épines, Arselet, Cordonnier, Crève-valet, Épinart, Épinglet, Estancelin, Étrangle-chat, Écharde, Quatre-épées

EPI

autochtone

LC

Gasterosteiformes

Pungitius pungitius (Linnaeus, 1758)

Épinochette

EPT

autochtone

DD

Gasterosteiformes

Pungitius laevis (Cuvier, 1829)

Épinochette

EPL

autochtone

Mugiliformes

Chelon ramada (Risso, 1827)

Mulet porc

MUP

autochtone

LC

Perciformes

Perca fluviatilis Linnaeus, 1758

Perche

PER

autochtone

LC

Perciformes

Zingel asper (Linnaeus, 1758)

Apron du Rhône

APR

autochtone

EN

Petromyzontiformes

Lampetra fluviatilis (Linnaeus, 1758)

Lamproie de rivière, Lamproie fluviatile

LPR

autochtone

VU

Petromyzontiformes

Lampetra planeri (Bloch, 1784)

Lamproie de Planer, Petite lamproie, Lamproie de ruisseau européenne

LPP

autochtone

LC

Petromyzontiformes

Petromyzon marinus Linnaeus, 1758

Lamproie marine

LPM

autochtone

EN

Salmoniformes

Salmo salar Linnaeus, 1758

Saumon de l'Atlantique, Saumon atlantique

SAT

autochtone

NT

Salmoniformes

Salmo trutta Linnaeus, 1758

Truite de mer, Truite commune, Truite d'Europe

TRF

autochtone

LC

Salmoniformes

Thymallus thymallus (Linnaeus, 1758)

Ombre commun

OBR

autochtone

VU

Salmoniformes

Thymallus ligericus Persat, Weiss, Froufe, Secci-Petretto & Denys, 2019

Ombre d'Auvergne

OBA

autochtone

Scorpaeniformes

Cottus gobio Linnaeus, 1758

Chabot, Chabot commun

CHA

autochtone

LC

Scorpaeniformes

Cottus perifretum Freyhof, Kottelat & Nolte, 2005

Bavard, Chabot, Chabot celtique, Chabot fluviatile, Têtard

CHF

autochtone

Cypriniformes

Carassius auratus (Linnaeus, 1758)

Carassin doré, Poisson rouge

CAA

allochtone

NA

Cypriniformes

Carassius carassius (Linnaeus, 1758)

Carassin commun

CAS

allochtone

LC

Cypriniformes

Carassius gibelio (Bloch, 1782)

Carassin argenté

CAG

allochtone

NA

Cypriniformes

Ctenopharyngodon idella (Valenciennes, 1844)

Amour blanc (L'), Carpe amour, Carpe herbivore, Chinoise

CTI

allochtone

NA

Cypriniformes

Gobio occitaniae Kottelat & Persat, 2005

goujon occitan, Goujon du Languedoc

GOO

allochtone

LC

Cypriniformes

Hypophthalmichthys molitrix (Valenciennes, 1844)

Carpe argentée

CAR

allochtone

NA

Cypriniformes

Leucaspius delineatus (Heckel, 1843)

L'Able de Heckel

ABH

allochtone

DD

Cypriniformes

Leuciscus aspius (Linnaeus, 1758)

Aspe

ASP

allochtone

NA

Cypriniformes

Leuciscus idus (Linnaeus, 1758)

Gardon rouge, Ide mélanote

IDE

allochtone

DD

Cypriniformes

Phoxinus csikii Hankó, 1922

Vairon du Danube

VAD

allochtone

Cypriniformes

Pseudorasbora parva (Temminck & Schlegel, 1846)

Pseudorasbora, Goujon asiatique

PSR

allochtone

NA

Cypriniformes

Rhodeus amarus (Bloch, 1782)

Bouvière

BOU

allochtone

LC

Cypriniformes

Scardinius hesperidicus Bonaparte, 1845

ROI

allochtone

NA

Gobiiformes

Neogobius melanostomus (Pallas, 1814)

Gobie à tache noire

GTN

allochtone

NA

Gobiiformes

Proterorhinus semilunaris (Heckel, 1837)

Gobie demi-lune, Gobie à nez tubulaire

GDL

allochtone

NA

Perciformes

Ambloplites rupestris (Rafinesque, 1817)

Crapet de roche

CDR

allochtone

NA

Perciformes

Gymnocephalus cernua (Linnaeus, 1758)

Grémille

GRE

allochtone

LC

Perciformes

Lepomis gibbosus (Linnaeus, 1758)

Perche-soleil, Boer, Calicoba, Perche arc-en-ciel, Perche argentée, Perche dorée, Poisson tricolore, Poisson-soleil, Crapet-soleil

PES

allochtone

NA

Perciformes

Micropterus salmoides (Lacepède, 1802)

Achigan à grande bouche, Black-bass à grande bouche, Perche d'Amérique, Perche noire, Perche truite, Perche truitée

BBG

allochtone

NA

Perciformes

Salariopsis fluviatilis (Asso, 1801)

Blennie fluviatile

BLE

allochtone

LC

Perciformes

Sander lucioperca (Linnaeus, 1758)

Sandre, Perche-brochet

SAN

allochtone

NA

Salmoniformes

Coregonus Linnaeus, 1758

Corégones

COR

allochtone

NA

Salmoniformes

Oncorhynchus mykiss (Walbaum, 1792)

Truite arc-en-ciel

TAC

allochtone

NA

Salmoniformes

Salvelinus fontinalis (Mitchill, 1814)

Omble de fontaine, Saumon de fontaine, Truite mouchetée

SDF

allochtone

NA

Siluriformes

Ameiurus melas (Rafinesque, 1820)

Poisson-chat

PCH

allochtone

NA

Siluriformes

Silurus glanis Linnaeus, 1758

Silure glane

SIL

allochtone

NA

Après avoir construit la liste d’espèces avec les noms d’espèces complets taxrefv18, on peut ajouter notre sélection dans notre jeu de données initiale esp_ope_selection.

liste_bfc_sp_cor_join <- liste_bfc_sp_cor %>% 
  select(esp_code_alternatif, autochtonie_new)

esp_ope_selection <- esp_ope_selection %>% 
  left_join(liste_bfc_sp_cor_join, by = "esp_code_alternatif") 

5.3.5 Definition / Verification de l’Autochtonie des espèces / Temps de génération des espèces

liste_bio <- readxl::read_xlsx("../processed_data/liste_complete_lrr_correction.xlsx") %>%
  clean_names() %>%
  select(
    esp_code_alternatif,
    maturite_m,
    maturite_f,
    maturite_an,
    maturite_bq,
    longevite_bq,
    longevite_an
  ) 
liste_bio_join <- liste_bio %>%
  left_join(liste_bfc_sp_cor, by = "esp_code_alternatif") %>%
  select(
   # ordre,
    nom_valide,
    esp_code_alternatif,
    autochtonie_new,
    maturite_m,
    maturite_f,
    maturite_an,
    maturite_bq,
    longevite_bq,
    longevite_an,
   # effectif_total,
    categorie_lr_france_2019
  )

liste_bio <- liste_bio_join %>%
  filter(
    autochtonie_new == "autochtone"#, 
    #!is.na(effectif_total)
    )

5.4 Vérification identification GOU / GOO :

Dans les stations du “Ternin à Chissey-En-Morvan” : 8837 et du “Mechet à Saint-Prix” 8842 : le GOU à été changé vers 2018 en GOO. Avant cette date, les goujons occitan étaient identifiée comme GOU.

#write_excel_csv(liste_bfc_sp_cor, "../processed_data/liste_bfc_sp_cor.csv")

5.5 Pourcentage d’occurrence

Le tableau tab_occurrence regroupant toutes les combinaisons d’opérations et d’espèces possible est réalisé. Il sera ensuite utilisé pour calculer les pourcentages d’occurrence des espèces présentes dans le jeu de données initiale esp_ope_selection.

ope_id <- unique(esp_ope_selection$ope_id) 
esp_code_alternatif <- unique(esp_ope_selection$esp_code_alternatif)

ope_annees <- esp_ope_selection %>% # Création d'un df contenant toutes les opérations et années associées
  ungroup() %>% 
  select(ope_id,
         annee) %>% 
  distinct()

tab_occurrence <- crossing(ope_id, esp_code_alternatif)

À partir de tab_occurrence, le calcul du pourcentage d’occurrence peut être réalisé. Il s’agit du nombre de pêches avec une présence de l’espèce divisé par le nombre total de pêches. Les calculs des pourcentages d’occurrence sont stockés dans le jeu de données tab_taux_occurrence regroupant les densités surfaciques moyennes par espèce ainsi que les taux d’occurrence.

tab_taux_occurrence <- tab_occurrence %>% 
  left_join(ope_esp_densite_cal) %>% 
  mutate(valeur_oc = ifelse(is.na(valeur), 0, valeur)) %>% 
  left_join(ope_annees) %>% 
  group_by(esp_code_alternatif,
           annee) %>% 
  mutate(n_ope = n_distinct(ope_id),
            n_oc = n_distinct(ope_id[valeur_oc > 0]),
            taux_occurrence = (n_oc / n_ope)*100) %>% 
  group_by(esp_code_alternatif) %>% 
  mutate(taux_occurrence_moy = mean(taux_occurrence)) %>% 
  select(esp_code_alternatif,
         taux_occurrence_moy) %>% 
  distinct()

5.6 Tableau final des densités surfaciques et des occurrences

Un tableau final regroupant les densités surfaciques moyennes et les occurrences moyennes des espèces est réalisé (relatifs à la sélection des stations et opérations réalisée dans le script 01_preatreatment_ope).

tab_densite_occurrence <- left_join(esp_densite_moyenne, tab_taux_occurrence, by = "esp_code_alternatif")

6 Représentation graphique

En amont de la réalisation d’une représentation graphique, les statuts de présence des espèces dans la précédente liste rouge régionale est renseigné dans une nouvelle colonne statut_lrr du dataframe tab_densite_occurrence. Cela permettra d’observer où se situent chaque espèce dans la relation pourcentage occurrence moyenne / densité surfacique moyenne, ainsi que leur présence / absence dans la précédente liste rouge régionale.

tab_densite_occurrence <- tab_densite_occurrence %>%
  mutate(statut_lrr = ifelse (esp_code_alternatif %in% params$especes_lrr_FC, 
                           "Liste Rouge Régionale FC 2014",
                           "Présente en Bourgogne-Franche-Comté"))

La représentation graphique est effectuée : par soucis de représentation, les axes sont mis en échelles logarithmiques.

gg_base <- ggplot(tab_densite_occurrence,
       aes(x = densite_moy,
           y = taux_occurrence_moy,
           label = esp_code_alternatif,
           color = statut_lrr)) +
  geom_point(size = 3,
             shape = 16) +
  labs(title = "Densités surfaciques moyennes vs Pourcentage d'occurrence par espèce sur les 20 dernières années",
       subtitle = "Région Bourgogne-Franche-Comté",
       x = "Densité surfacique moyenne",
       y = "Pourcentage d'occurrence") +
  scale_color_manual(values = wesanderson::wes_palette("AsteroidCity1")[3:5],
                     name = "Espèces") +
  scale_x_log10() +  # axe des x en échelle logarithmique
  scale_y_log10() +  # axe des y en échelle logarithmique
  theme_light(base_size = 11) +
  theme(plot.title = element_text(hjust = 0.5),
        panel.grid.major = element_line(color = "#ffffff", size = 0.1),
        panel.grid.minor = element_line(color = "#ffffff"),
        panel.background = element_rect(fill = "#faf0e6"),
        legend.position = "bottom") 

gg_texte_usuel <- gg_base + geom_label_repel() # afin d'éviter les chevauchements entre les différentes étiquettes
gg_texte_usuel

À partir de ce graphique, nous pouvons éliminer les espèces qui sont trop rares, c’est-à-dire ayant une densité surfacique moyenne et un taux d’occurrence très faibles (pour lesquelles nous n’avons pas assez de données - cela correspond aux espèces situées en bas à gauche du graphique). Les espèces ayant le plus de données sur lesquelles s’appuyer apparaissent en haut à droite du graphique : ce sont les espèces qui ont une forte occurrence ainsi qu’une forte densité surfacique moyenne.

Dans le cadre de notre étude, on observe que les espèces étudiées dans la précédente liste rouge régionale (2014) apparaissent pour la quasi-totalité dans la partie supérieure droite du graphique, à l’exception de quelques espèces comme :

  • CAR
  • IDE
  • ROI
  • CTI
  • MUP
  • SDF
  • TOX
  • ABH

Nous réajustons ainsi la sélection des espèces de la précendente liste rouge régionale en éliminant les espèces contenants trop peu de données. La sélection finale des espèces est contenue dans l’objet mes_especes. Nous appliquons cette sélection à notre dataframe esp_ope_selection.

7 Liste finale d’espèces à evaluer - Autochtonie

especes_lrr_2014 <- c("LOT","LOE","CHE","BRO","BOU","ANG","PER","BAF","EPT","ABH","BRE","EPI","CCO","CHA","HOT","VAI","TAN","BLN","VAN","TRF","LPP","OBR","ROT","ABL","GAR","IDE","LOF","TOX","GRE","BRB","SPI","GOU","LPM","LOR","LPP")

mes_especes <- c("ABL", "ANG", "BAF", "BLN", "BLE", "BOU", "BRB", "BRE", "BRO", "CHA", "CHE", "EPI", "EPT", "GAR", "GOU", "GOO", "LPP", "LPM", "LOR", "LOF", "LOT", "OBR", "PER", "ROT", "SAT", "SPI", "TAN", "TOX", "TRF", "VAI", "VAN")
esp_ope_selection <- esp_ope_selection %>% 
  filter(esp_code_alternatif %in% mes_especes)
tab_occurrence_esp <- tab_occurrence %>% 
  filter(esp_code_alternatif%in% mes_especes)

8 Sauvegarde

Sauvegarde pour le script suivant : script 04_pre_traitements_donnees_ope_especes.

save(especes_lrr_2014, 
     mes_especes,
     esp_ope_selection,
     ope_esp_densite,
     tab_occurrence_esp,
     file = "../processed_data/selection_especes.rda")

9 Références bibliographiques

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/