Corrélation diversité spécifique et diversité génétique

Author

Ludivine Codoner

Published

2026-03-20

Packages

Code
source("03.script/00_packages.R")

Fonctions

Code
source("03.script/03_functions.R")

Importation des données

Importation des deux jeux de données nécessaires à la comparaison :
(1) Les nombres de Hill issus de la diversité génétique, calculés à partir des génotypes multilocus (Hill_gen_transect)
(2) Les nombres de Hill issus de la diversité spécifique, calculés à partir des relevés floristiques (Hill_gen_transect).
Ces deux tableaux sont déjà harmonisés au niveau du transect, ce qui permet de comparer directement les deux dimensions de la diversité.

Code
Diversité génétique
Hill_gen_transect <- read_excel(
  "D:/Master 2/S10/stagem2_lcodoner/04.results/Hill_gen_transect.xlsx"
)

AllDiv <- read_excel(
  "D:/Master 2/S10/stagem2_lcodoner/04.results/AllDiv.xlsx"
)

AllDiv_all <- read_excel(
  "D:/Master 2/S10/stagem2_lcodoner/04.results/AllDiv_all.xlsx"
)
Code
Diversité spécifique
Hill_spe_transect <- read_excel(
  "D:/Master 2/S10/stagem2_lcodoner/04.results/Hill_spe_transect.xlsx"
)

Télécharger ce tableau

Télécharger ce tableau

Fusion des données

Les deux jeux de données sont fusionés sur la colonne commune transect, ce qui permet d’obtenir un tableau unique contenant, pour chaque transect, les valeurs de diversité spécifique (q0_sp, q1_sp, q2_sp) et de diversité génétique (q0_gen, q1_gen, q2_gen). Cette étape gatenti que la comparaison se fait uniquement sur les transects pour lesquels les edux types de diversité sont disponibles, soit 24 transects (dits pop dans le jeu de données de génétique) sur 94. Cela évite tout biais lié à des transects manquants.

Code
Hill_numbers <- Hill_spe_transect %>%
  inner_join(Hill_gen_transect, by = "transect")

Télécharger ce tableau

Question scientifiques

– Les transects riches en espèces sont‑ils aussi riches en diversité génétique ?
– Les habitats plus stables (fixed dunes) conservent‑ils mieux la diversité génétique ?
– Observe‑t‑on un gradient nord–sud commun aux deux types de diversité ?

Corrélations directes (de Pearson)

-> Ici, la diversité génétique comprend toutes les espèces confondues pour un transect. Les corrélations de Pearson sont utilisées pour évaluer la relation linéaire entre diversité spécifique et diversité génétique pour les trois ordres de Hill (q0, q1, q2). Cette analyse permet de tester si les transects riches en espèces sont également riches en diversité génétique, ou si les deux dimentsions de la biodiversité varient indépendamment.

Code
corrélation q0
cor.test(Hill_numbers$q0_sp, Hill_numbers$q0_gen)

    Pearson's product-moment correlation

data:  Hill_numbers$q0_sp and Hill_numbers$q0_gen
t = -1.3954, df = 27, p-value = 0.1743
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.5715345  0.1184043
sample estimates:
       cor 
-0.2593564 
Code
corrélation q1
cor.test(Hill_numbers$q1_sp, Hill_numbers$q1_gen)

    Pearson's product-moment correlation

data:  Hill_numbers$q1_sp and Hill_numbers$q1_gen
t = -2.272, df = 27, p-value = 0.03127
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.66891126 -0.03998769
sample estimates:
      cor 
-0.400622 
Code
corrélation q2
cor.test(Hill_numbers$q2_sp, Hill_numbers$q2_gen)

    Pearson's product-moment correlation

data:  Hill_numbers$q2_sp and Hill_numbers$q2_gen
t = -2.502, df = 27, p-value = 0.01871
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.69054458 -0.08006312
sample estimates:
       cor 
-0.4338384 

Visualisation

Code
cor_graph_q1 <- ggplot(Hill_numbers, aes(q1_sp, q1_gen)) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", se = TRUE) +
  labs(x = "Diversité spécifique (q1)", y = "Diversité génétique (q1)")
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Les résultats montrent une absence de relation pour q0 (richesse), mais des corrélations négatives significatives pour q1 et q2

Modèles linéaires/mixtes

Des modèles linéaires simples sont ajusts pour quantifier l’effet de la diversité spécifique sur la diversité génétique.

Code
lm(q1_gen ~ q1_sp, data = Hill_numbers)

Call:
lm(formula = q1_gen ~ q1_sp, data = Hill_numbers)

Coefficients:
(Intercept)        q1_sp  
    3.64780     -0.09785  
Code
lm(q2_gen ~ q2_sp, data = Hill_numbers)

Call:
lm(formula = q2_gen ~ q2_sp, data = Hill_numbers)

Coefficients:
(Intercept)        q2_sp  
     3.1278      -0.1214  

Profils de Hill

Les profils de Hill sont construits pour comparer la forme des courbes de diversité spécifique et génétique. En représentant q0, q1 et q2 pour chaque transect, ces profils permettent de visualiser la structure interne de la diversité.

Code
profils <- Hill_numbers %>%
  select(transect, q0_sp, q1_sp, q2_sp, q0_gen, q1_gen, q2_gen) %>%
  pivot_longer(-transect, names_to = "type", values_to = "val")

Télécharger ce graphique

  • La diversité spécifique montre des profils élevés et concaves, indiquant une forte richesse mais aussi une domainance marquée
  • La diversité génétique montre des profils plus bas et plats, reflétant des fréquences alléliques plus homogènes

Corrélation 1 esp génét/transect avec 1 transect spé

L’idée ici est de faire correspondre le tableau de diversité spécifique par transect avec la diversité génétique d’une seule espèce.

Code
Préparation tableau diversité génétique
# Filtrer que l'espèce CV
Hill_gen_especeCS <- AllDiv %>%
  filter(spe == "CS")

# Format large
Hill_gen_especeCS <- Hill_gen_especeCS %>%
  tidyr::pivot_wider(
    names_from = div,
    values_from = val
  ) %>%
  rename(
    transect = pop,
    q0_gen = q0,
    q1_gen = q1,
    q2_gen = q2
  ) %>%
  select(-spe)
Code
Fusion des deux tableaux
Hill_gen_vs_speCS <- Hill_spe_transect %>%
  inner_join(Hill_gen_especeCS, by = "transect")

Télécharger ce tableau

Code
liste_especes <- unique(AllDiv_all$spe)

for (esp in liste_especes) {
  cat("#### ", esp, "\n\n")

  res <- analyse_espece(esp)
  Hill_gen_vs_spe <- res$fusion
  Hill_profils_stats <- res$profils

  # --- STOCKAGE DES RÉSULTATS DE PEARSON ---
  assign(
    paste0(esp, "_pearson_res"),
    list(
      q1 = cor.test(Hill_gen_vs_spe$q1_sp, Hill_gen_vs_spe$q1_gen),
      q2 = cor.test(Hill_gen_vs_spe$q2_sp, Hill_gen_vs_spe$q2_gen)
    )
  )

  # --- STOCKAGE DU GRAPHIQUE DE CORRÉLATION ---
  assign(
    paste0(esp, "_cor_graph"),
    ggplot(Hill_gen_vs_spe, aes(q1_sp, q1_gen)) +
      geom_point() +
      geom_smooth(method = "lm") +
      labs(
        x = "Diversité spécifique (q1)",
        y = paste0("Diversité génétique ", esp, " (q1)")
      )
  )

  # --- STOCKAGE DU PROFIL DE HILL ---
  assign(
    paste0(esp, "_hill_profile_stats"),
    Hill_profils_stats
  )

  assign(
    paste0(esp, "_hill_profile_graph"),
    ggplot(
      Hill_profils_stats,
      aes(x = ordre, y = mean, color = type, group = type)
    ) +
      geom_ribbon(
        aes(ymin = mean - sd, ymax = mean + sd, fill = type),
        alpha = 0.2,
        color = NA
      ) +
      geom_line(size = 1.2) +
      geom_point(size = 3) +
      labs(
        x = "Ordre de Hill",
        y = "Diversité moyenne ± écart-type",
        color = "Type de diversité",
        fill = "Type de diversité",
        title = paste0("Profils de Hill moyens avec incertitude (", esp, ")")
      ) +
      theme_minimal()
  )

  # --- EXPORT TABLEAU ---
  write_xlsx(
    Hill_gen_vs_spe,
    path = file.path(path_res, paste0("Hill_gen_vs_spe_", esp, ".xlsx"))
  )

  # --- AFFICHAGE TABLEAU ---
  print(datatable(Hill_gen_vs_spe))

  cat("\n### Corrélations\n\n")
  print(get(paste0(esp, "_pearson_res"))$q1)
  print(get(paste0(esp, "_pearson_res"))$q2)

  cat("\n### Graphique q1_sp vs q1_gen\n\n")
  print(get(paste0(esp, "_cor_graph")))

  cat("\n### Profils de Hill\n\n")
  print(get(paste0(esp, "_hill_profile_graph")))

  cat("\n\n---\n\n")
}
$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = -2.66, df = 27, p-value = 0.01299
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.7045224 -0.1070508
sample estimates:
       cor 
-0.4556781 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = -1.9908, df = 27, p-value = 0.05671
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.64031619  0.01005131
sample estimates:
       cor 
-0.3577724 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = 0.32976, df = 16, p-value = 0.7459
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.4000551  0.5287486
sample estimates:
       cor 
0.08216033 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = -0.64186, df = 16, p-value = 0.5301
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.5822400  0.3330689
sample estimates:
       cor 
-0.1584383 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = 1.6922, df = 22, p-value = 0.1047
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.07419169  0.65332051
sample estimates:
      cor 
0.3393617 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = 1.2491, df = 22, p-value = 0.2248
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.1629770  0.5985951
sample estimates:
      cor 
0.2573382 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = 0.24284, df = 27, p-value = 0.81
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.3253889  0.4062391
sample estimates:
       cor 
0.04668417 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = -0.27012, df = 27, p-value = 0.7891
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.4106074  0.3206932
sample estimates:
        cor 
-0.05191427 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = 0.36323, df = 26, p-value = 0.7194
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.3102459  0.4326628
sample estimates:
       cor 
0.07105539 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = 0.17312, df = 26, p-value = 0.8639
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.3434936  0.4019206
sample estimates:
       cor 
0.03393167 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = 0.58221, df = 27, p-value = 0.5653
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.2660116  0.4591190
sample estimates:
      cor 
0.1113501 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = 0.26128, df = 27, p-value = 0.7959
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.3222168  0.4091937
sample estimates:
       cor 
0.05021955 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = -1.6546, df = 27, p-value = 0.1096
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.60287601  0.07098839
sample estimates:
       cor 
-0.3034113 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = -1.8419, df = 27, p-value = 0.0765
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.62418219  0.03691673
sample estimates:
       cor 
-0.3341095 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique

$q1

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q1_sp and Hill_gen_vs_spe$q1_gen
t = 3.1775, df = 26, p-value = 0.003809
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.1941013 0.7533173
sample estimates:
      cor 
0.5288795 


$q2

    Pearson's product-moment correlation

data:  Hill_gen_vs_spe$q2_sp and Hill_gen_vs_spe$q2_gen
t = 2.5528, df = 26, p-value = 0.0169
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.08955036 0.70328779
sample estimates:
     cor 
0.447671 
`geom_smooth()` using formula = 'y ~ x'

Télécharger ce graphique

Télécharger ce graphique