LandWorm

Abdourahmane Diallo

2024-05-16

Setting

Packages

Code
  library(tidyverse)
  # library(glme)
  # library(lsmeans)
  # library(agricolae)
  # library(RVAideMemoire)
  library(corrplot)
  # library(emmeans)
  library(lme4)
  library(multcomp)
  library(MASS)
  # library(R2WinBUGS)
  library(arm)
  # library(performance)
  # library(AER)
  # library(AICcmodavg)
  # library(MuMIn)
  library(ade4)
  library(Hmisc)
  library(labdsv)
  library(vegan)
  library(cowplot)
  library(ggpubr)
  library(rstatix)
  library(patchwork)
  library(multcompView)
  library(ggsignif)
  library(grid)
  library(FactoMineR)
  library(factoextra)
  library(explore)
  library(ggrepel)
  library(naniar)
  library(outliers)
  library(leaps)
  library(fastDummies)
  library(caret) # pour l'entrainement des models
  library(mgcv)
  library(ggeffects)
  library(gratia)
  library(GGally) # pour ggpair
  # library(caTools)
  # library(rpart)
  # library(rpart.plot)
  library(openxlsx)
  library(readxl)
  library(leaflet) # pour la carto
  library(quarto)
  library(raster)
  library(knitr)
  library(kableExtra)
  library(stringr)
  library(plotly)
  # library(PerformanceAnalytics)
  # library(usdm)
  library(vcd) # pour la distribution des var reponse
  library(prospectr)# pour split data avec kenSton()
  # library(glmnet)
  library(randomForest)
  # library(doParallel)
  library(gbm)
  library(kernlab)
  # library(e1071)
  library(ggforce)
  library(keras)
  library(tensorflow)
  library(neuralnet)
  # library(parallel)
  library(iml) # pour l'interpretabilité des models https://cran.r-project.org/web/packages/iml/vignettes/intro.html
  library(stats)
  # library(Boruta) # importance des predicteurs
  library(bestNormalize)
  library(rmarkdown)
  library(DT)
  library(gtExtras) # pour la
  library(reshape2)
  # library(mapview)
  library(sf)
  library(ggplot2)
  library(maptools)
  library(ggsn)
  library(spThin)
  library(sp)
  library(gstat)

Functions

Code
## Identification des NA dans un df -----------------------------------------------
taux_completion<-
  function(df, afficher_zero_percent = FALSE, seuil, trie=FALSE) {
    # Calcule du pourcentage de NA dans le dataframe
    pourcentage_total <-
      round(sum(is.na(df)) / (nrow(df) * ncol(df)) * 100, 1)
    
    # Calcule du pourcentage de NA par colonne
    pourcentage_colonnes <- round(colMeans(is.na(df)) * 100, 1)
    
    # Creation d'un dataframe résultat avec deux colonnes
    result <-
      data.frame(
        Variables = names(df),
        CR = pourcentage_colonnes,
        row.names = NULL
      )
    
    if (afficher_zero_percent) {
      result <- result[result$CR == 0, ]
      result$CR = 100 -result$CR
    } else {
      result <- result[result$CR > 0, ]
      result$CR = 100 -result$CR
      
    }
    
    result <- rbind(result, c("Total", pourcentage_total))
    #result <- rbind(result, c("Total", paste0(pourcentage_total, "")))
    
    result <- result[, c("Variables", "CR")]
    result$CR = as.numeric(result$CR)
    result$CR = round(result$CR,1)
    if (trie){
      result = result %>% arrange(desc(CR))
    }
    result$CR = paste0(result$CR,"%")
    
    return(result)
  }
# Converssion des colonne en num ou factor-----------------------------------------------
conv_col <- function (data, columns_to_convert, to_types) {
  if (to_types == "numeric") {
    # Conversion des colonnes en numeric
    for (col in columns_to_convert) {
      data[, col] <- as.numeric(data[, col])
    }
  } else {
    # Conversion des colonnes en facteurs
    for (col in columns_to_convert) {
      data[, col] <- as.factor(data[, col])
    }
  }
  return(data)
}
#data_converted <- conv_col(data, names(data [, c(1, 3)]), "factor")

# exploration graphiques des variables numeriques -----------------------------------------------
explo_num <- function(nom_col, titre, df = landworm, ligne_col = c(2, 2),mini = min(df[[nom_col]]), maxi=max(df[[nom_col]]) ) {
  par(mfrow = ligne_col)
  
  df[complete.cases(df[[nom_col]]), ]
  df <- df %>%filter(!is.na(df[[nom_col]]))
  df[[nom_col]] = as.numeric(df[[nom_col]])
  # Boxplot
  boxplot(df[[nom_col]], col = 'blue', ylab = titre, ylim = c(mini, maxi))
  # Cleveland plot
  dotchart(df[[nom_col]], pch = 16, col = 'blue', xlab = titre)
  # Histogram
  hist(df[[nom_col]], col = 'blue', xlab = titre, main = "")
  # Quantile-Quantile plot
  qqnorm(df[[nom_col]], pch = 16, col = 'blue', xlab = '')
  qqline(df[[nom_col]], col = 'red') 
}

# Extraction des predictors + moyennes -----------------------------------------------

extraction <- function(nom_col, tif_file_path, df = landworm, conv = 1) {
  #df <- df %>%filter(!is.na(gps_x) & !is.na(gps_y))
  raster_data <- raster(tif_file_path)
  
  # Création d'un dataframe pour stocker les valeurs extraites
  df_interne <- data.frame(gps_x = df$gps_x, gps_y = df$gps_y)
  proj4Str <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
  # Transformer les coordonnées GPS en système de coordonnées du raster
  gps_coords_sp <- SpatialPoints(df_interne, proj4string = CRS(proj4Str))
  gps_coords_proj <- spTransform(gps_coords_sp, crs(raster_data))
  
  # Extraction des valeurs du raster 
  values <- raster::extract(raster_data, gps_coords_proj)
  
  # Ajout des valeurs extraites comme nouvelles colonnes a df
  #df_save = data.frame()
  #df_save[[nom_col]] <- values / conv
  
  df[[nom_col]] <- values / conv
  
  return(df)
}

# la moyenne des predictores -----------------------------------------------
moyenne_val_extrct <- function(nom_col, vec_col, df=landworm) {
  df[[nom_col]] <- rowMeans(as.matrix(df[, vec_col, drop = FALSE]), na.rm = TRUE)
  df[[nom_col]] = round(df[[nom_col]],1)
  return(as.data.frame(df))
}


# tests de corrélation avec un seuil -----------------------------------------------
cor_function_seuil <- function(data, seuil,affiche=FALSE) {
  # Création d'un vecteur pour stocker les paires de variables corrélées
  variables_corr <- c()
  
  # Boucle pour tester la corrélation entre chaque paire de variables
  for (i in 1:(ncol(data) - 1)) {
    for (j in (i + 1):ncol(data)) {
      # Calcul de la corrélation entre les variables i et j
      cor_value <- stats::cor(data[, i], data[, j], use = "na.or.complete")
      
      # Stockage du résultat dans le vecteur si supérieur au seuil
      if (cor_value >= seuil | cor_value <= -seuil) {
        if(affiche){
        cat(
          "***",
          colnames(data)[i],
          "  __est correlee a__  ",
          colnames(data)[j],
          "avec un R =",
          cor_value,
          "\n \n \n"
        )
      }
        
        variables_corr <-
          c(variables_corr, colnames(data)[i], colnames(data)[j])
      }
    }
  }
  
  return(variables_corr)
}


# tests de valeurs aberant -----------------------------------------------
test_grub <- function(data, variable, direction = "maxi") {
  
  if (direction == "maxi") { 
    repeat {
      # Effectuer le test de Grubbs
      test_aberrant <- grubbs.test(data[[variable]], opposite = FALSE)
      
      # Obtenir la p-valeur du test
      p.value <- test_aberrant$p.value
      # Si la p-valeur est inférieure au seuil de 0.05, on supprime la valeur aberrante
      if (p.value < 0.05) {
        max_value <- max(data[[variable]],na.rm=TRUE)
        data <- subset(data, data[[variable]] != max_value | is.na(data[[variable]]))
      } else {
        # S'il n'y a plus de valeurs aberrantes, sortir de la boucle
        break
      }
    }
  }
  
  
  if (direction == "mini") { 
    repeat {
      test_aberrant <- grubbs.test(data[[variable]], opposite = TRUE)
      # Obtenir la p-valeur du test
      p.value <- test_aberrant$p.value
      # Si la p-valeur est inférieure au seuil de 0.05, on supprime la valeur aberrante
      if (p.value < 0.05) {
        min_value <- min(data[[variable]],na.rm=TRUE)
        data <- subset(data, data[[variable]] != min_value | is.na(data[[variable]]))
      } else {
        # S'il n'y a plus de valeurs aberrantes, sortir de la boucle
        break
      }
    }
  }
  
  
  return(data)
}




# boxplote -----------------------------------------------
plot_boxplot <-function(donnee,
           x_col,y_col,x_label,y_label,title,legend_title,
           couleurs,
           affiche_point = TRUE,
           ymin = min(donnee[[y_col]]),
           ymax = 1.2 * max(donnee[[y_col]])) {
    
  graphe <-ggplot(donnee,
             aes_string(
               x = x_col,
               y = y_col,
               colour = x_col
             )) +
  geom_boxplot(
        outlier.shape = NA,
        outlier.colour = "black",
        alpha = 0.20,
        size = 1.5 
      ) +
  labs(title = title,x = x_label,y = y_label) +
  scale_color_manual(values = couleurs, name = legend_title) +
  theme_classic(base_size = 12, base_family = "Arial") +
  theme(axis.text = element_text(size = 10),
        axis.title.y = element_text(
          vjust = 5, size = 12, face = "bold"),
        axis.title.x = element_text(face = "bold"),
        axis.ticks.length = unit(0.2, "cm"),
        legend.position = "none",  # Cette ligne supprime la légende
        #legend.position = "right",
        legend.text = element_text(size = 10),
        legend.title = element_text(size = 12, face = "bold"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        plot.title = element_text(size = 14, face = "bold"),
        plot.margin = unit(c(0.5, 0.5, 0.5, 0.5), "cm")
      )
    if (affiche_point) {
      graphe <-
        graphe + geom_jitter(position = position_jitter(seed = 0.5), size = 0.8)
    }
    
    if (y_col %in% names(donnee)) {
      graphe <- graphe +
        coord_cartesian(ylim = c(ymin, ymax))
    }
  
    graphe = graphe + stat_summary(
      fun.y = mean,
      geom = "point",
      shape = 15,
      size = 1.5,
      col = "black",
      fill = "black"
    )
    
    return(graphe)
}



#pour le  pairwise.t.test() -----------------------------------------------------
tri.to.squ <- function(x) {
  rn <- row.names(x)
  cn <- colnames(x)
  an <- unique(c(cn, rn))
  myval <- x[!is.na(x)]
  mymat <-
    matrix(
      1,
      nrow = length(an),
      ncol = length(an),
      dimnames = list(an, an)
    )
  for (ext in 1:length(cn))
  {
    for (int in 1:length(rn))
    {
      if (is.na(x[row.names(x) == rn[int], colnames(x) == cn[ext]]))
        next
      mymat[row.names(mymat) == rn[int], colnames(mymat) == cn[ext]] <-
        x[row.names(x) == rn[int], colnames(x) == cn[ext]]
      mymat[row.names(mymat) == cn[ext], colnames(mymat) == rn[int]] <-
        x[row.names(x) == rn[int], colnames(x) == cn[ext]]
    }
  }
  return(mymat)
}



# Selection interaction -------------------------------
select_inter <- function(response_var, df, explanatory_vars) {
  results <- data.frame()
  combinations <- combn(explanatory_vars, 2, simplify = FALSE)

  for(i in seq_along(combinations)) {

    formula <- as.formula(paste(response_var, "~", paste(combinations[[i]], collapse = "*")))
    model <- gam(formula, data = df)
    r_squared <- summary(model)$r.sq
    aic <- AIC(model)
    results <- rbind(results, data.frame("variables" = paste0(combinations[[i]], collapse = ".inter."), 
                                         "r_squared" = r_squared, 
                                 "aic" = aic))
  }
  return(results)
}

# Comparaion betwen predtited and observed -----------------------------------
plot_comp = function (df,ylabel, title_class, legende = TRUE,plotly = FALSE,xlabel = "observations",title=""){ 

  
  p = ggplot(df, aes(x = observation)) + 
  #graph representant observed
  geom_point(aes(y = Observed, color = "Observed valuess")) +
  geom_line(aes(y = Observed, color = "Observed valuess")) + 
  
  #graph representant  preticted
  geom_point(aes(y = Predicted, color="Predicted values")) +
  geom_line(aes(y = Predicted, color="Predicted values")) + 
  # ggtitle(title)
  theme(plot.title = element_text(hjust = 0.5)) + 
  labs(title = title,x=xlabel, y=ylabel, color = "Legend :") + 
  ylim(min(c(min(df$Predicted), min(df$Observed))),
            max(c(max(df$Predicted), max(df$Observed)))+1  ) +
    
  scale_color_manual(values = c("Observed valuess"='red', "Predicted values"='green')) +
  annotate("text", x = 8, y =  max(c(max(df$Predicted), max(df$Observed)))+1, 
           label = title_class, col = "black", size = 3)

  
  if (!legende) {
    p <- p + theme(legend.position = "none")
  }
  
  if(plotly){
    p = ggplotly(p)
  }

return (p)

}


# Calcul R²
calcule_R2 = function(x, y) {cor(x, y)^2}

Plan

1 Database import

  • Import of database LandWorm_dataset_site_V1.9.xlsx (february 22, 2024)
  • The database contains 8019 rows and 481 columns

1.1 Protocols (avant séléction)

  • List of protocols available on the database ( 22 levels)
Code
landworm$Protocole = as.factor(landworm$Protocole)
summary_df <- as.data.frame(summary(landworm$Protocole))
colnames(summary_df) <- c("Numbers")
summary_df %>% datatable(options = list(pageLength = 5))
  • Selection of protocols: 16
. Numbers
AITC_HS 231
AITCTM 227
F_HS 970
FHS 46
hand sorting 357
HS 3281
HS_16 216
HS_4 396
HS_F_16 24
HS_M_16 151
HS_M_25 29
HSAITC_16 1
HSAITC_4 123
HSAITC_6.25 56
HSAITC_7.95775385 10
M_HS 70
  • The database therefore changes from 8019 to 6188 observations.

1.2 Data selection: LandWorm

  • On séléctionne tout sauf mh et NA
Numbers
cp 227
dc 4216
gp 299
mh 848
sg 357
NA's 241
Code
landworm <- subset(landworm, owner %in% c("dc","cp","gp","sg"))
landworm$owner=droplevels(landworm$owner)
  • The database therefore changes from 6188 to 5099 observations.

2 Database exploration

  • CR = Completion rate

2.1 Complete columns

Code
df_col=taux_completion(landworm,TRUE,trie=FALSE)
df_col = df_col[df_col$Variables != "Total",]
#print("table")
kable(df_col, caption = "", col.width = c("75%", "25%"))
Variables CR
79 ID 100%
80 Protocole 100%
82 owner 100%
83 AB_tot 100%
Code
# cat(                                                    )
# head(landworm[, "ID"])

2.2 Non-complete columns

2.3 Focus on GPS coordinates

  • There is 312 NA (CR = 93.9%) in GPS_X
  • There is 315 NA (CR = 93.8%) in GPS_Y
Code
n_line= nrow(landworm)
landworm$gps_x <- as.numeric(gsub("[^0-9.-]", "", landworm$gps_x))
landworm$gps_y <- as.numeric(gsub("[^0-9.-]", "", landworm$gps_y))
landworm <- landworm[complete.cases(landworm$gps_x, landworm$gps_y), ]
landworm <- landworm %>%filter(!is.na(gps_x) & !is.na(gps_y))
#sum(is.na(landworm$gps_x))
#sum(is.na(landworm$gps_y))
  • We delete the NA lines in the GPS coordinates
  • The database therefore changes from 5099 to 4784 observations.

2.4 Cartography

Code
n_ligne= nrow(landworm)
df_coord <- landworm[, c("gps_x", "gps_y")] %>% mutate(gps_x = as.numeric(gps_x),gps_y = as.numeric(gps_y))

df_coord$num_ligne <- seq(nrow(df_coord))
carte <- leaflet(df_coord) %>%
  addTiles() %>%
  addCircleMarkers(lng = ~gps_x, lat = ~gps_y, radius = 0.8, fillOpacity = 0.8, fillColor = "blue")
carte
  • We delete points outside France (22)
  • The database therefore changes from 4784 to 4762 observations.

2.5 Focus on years

  • Cleaning the Annee column
  • CR of Annee = 97.4% (33 levels)
  • We remove all the years before 1990 and the NA ( 2 observations)
Code
n_ligne =nrow(landworm)
# sum(is.na(landworm$Annee))
landworm <- landworm %>%filter(!is.na(Annee))# on enleve les NA
annes_omit= c("1821", "1960", "1978", "1982", "1983", "1984", "1986", "1988", "1989") # annee sup
landworm <- landworm[!landworm$Annee %in% annes_omit, ]
landworm=droplevels(landworm)
#levels (landworm$Annee)
#summary (landworm$Annee)
summary_df <- as.data.frame(summary(landworm$Annee))
colnames(summary_df) <- c("Numbers")
# kable(summary_df,padding = 5)
summary_df %>% datatable(options = list(pageLength = 5))
  • The database therefore changes from 4762 to 4760 observations.

2.6 Focus on clcm_lvl1

  • CR of clcm_lvl1 = 96.1% (6 levels)
Code
landworm$clcm_lvl1= as.factor(landworm$clcm_lvl1)
summary_df <- as.data.frame(summary(landworm$clcm_lvl1))
colnames(summary_df) <- c("Numbers")
# kable(summary_df,padding = 5)
  • Merging levels
Code
levels(landworm$clcm_lvl1)[levels(landworm$clcm_lvl1) == "1_Naturel"] <- "Forest and semi natural areas"
levels(landworm$clcm_lvl1)[levels(landworm$clcm_lvl1) == "2_Agricole"] <- "Agricultural areas"

landworm$clcm_lvl1= as.factor(landworm$clcm_lvl1)
summary_df <- as.data.frame(summary(landworm$clcm_lvl1))
colnames(summary_df) <- c("Numbers")
kable(summary_df,padding = 5)
Numbers
Forest and semi natural areas 481
Agricultural areas 3325
Artificial surfaces 875
Wetlands 30
NA's 49
  • Update code_clcm_lvl1
Code
#landworm$code_clcm_lvl1 = as.factor(landworm$code_clcm_lvl1)

landworm$code_clcm_lvl1 <- ifelse(landworm$clcm_lvl1 == "Forest and semi natural areas", 3, landworm$code_clcm_lvl1)

landworm$code_clcm_lvl1 <- ifelse(landworm$clcm_lvl1 == "Agricultural areas", 2, landworm$code_clcm_lvl1)
  • For the moment, we will keep the NA of clcm_lvl1

2.7 Focus on clcm_lvl2

  • CR of clcm_lvl2 = 96.1% (12 levels)
Code
landworm$clcm_lvl2= as.factor(landworm$clcm_lvl2)
summary_df <- as.data.frame(summary(landworm$clcm_lvl2))
colnames(summary_df) <- c("Numbers")
# summary_df %>% datatable(options = list(pageLength = 5))
  • Merging levels
Code
levels(landworm$clcm_lvl2)[levels(landworm$clcm_lvl2) == "21_Agricole ouvert"] <- "Arable land"

landworm$clcm_lvl2= as.factor(landworm$clcm_lvl2)
summary_df <- as.data.frame(summary(landworm$clcm_lvl2))
colnames(summary_df) <- c("Numbers")
# kable(summary_df,padding = 5)
summary_df %>% datatable(options = list(pageLength = 10), rownames = TRUE)
  • Update code_clcm_lvl2
Code
landworm$code_clcm_lvl2 <- ifelse(landworm$clcm_lvl2 == "Arable land", 21, landworm$code_clcm_lvl2)

2.8 Focus on clcm_lvl3

  • CR of clcm_lvl3 = 89% (26 levels)
Code
landworm$clcm_lvl3= as.factor(landworm$clcm_lvl3)
summary_df <- as.data.frame(summary(landworm$clcm_lvl3))
colnames(summary_df) <- c("Numbers")
# kable(summary_df,padding = 5)
summary_df %>% datatable(options = list(pageLength = 10), rownames = TRUE)

2.9 Land use selection (clcm_lvl3)

  • Broad-leaved forest

  • Coniferous forest

  • Mixed forest

  • Pastures, meadows and other permanent grasslands under agricultural use

  • Non-irrigated arable land

  • Vineyards

  • Green urban areas

  • Natural grasslands

Code
select_os= c("Broad-leaved forest", "Coniferous forest", "Mixed forest", 
"Pastures, meadows and other permanent grasslands under agricultural use", "Non-irrigated arable land", 
"Vineyards","Green urban areas","Natural grasslands")

landworm <- landworm[landworm$clcm_lvl3 %in% select_os, ]
landworm=droplevels(landworm)
landworm$clcm_lvl3 = as.factor(landworm$clcm_lvl3)
summary_df <- as.data.frame(summary(landworm$clcm_lvl3))
colnames(summary_df) <- c("Numbers")
summary_df %>% datatable(options = list(pageLength = 5))
  • We merge the three types of forest

2.10 Focus on protocols (après séléction)

  • List of protocols available on the database ( 6 levels)
Code
landworm$Protocole = as.factor(landworm$Protocole)
summary_df <- as.data.frame(summary(landworm$Protocole))
colnames(summary_df) <- c("Numbers")
summary_df %>% datatable(options = list(pageLength = 5))

2.11 Land use & protocol overview

Code
# kable (table(landworm$clcm_lvl1, landworm$Protocole,exclude = NULL), align = "c", format = "pipe", padding = 10)
# kable (table(landworm$clcm_lvl2, landworm$Protocole,exclude = NULL), align = "c", format = "pipe", padding = 10)
df = table(landworm$clcm_lvl3, landworm$Protocole,exclude = NULL)
# df = as.data.frame(df)
kable (df, align = "c", format = "pipe", padding = 10)
AITCTM F_HS HS HS_F_16 HS_M_16 M_HS
Forest 2 23 94 0 0 1
Green urban areas 0 0 648 0 0 12
Natural grasslands 66 3 62 0 0 9
Non-irrigated arable land 81 319 1216 24 90 36
Pastures, meadows and other permanent grasslands under agricultural use 0 161 256 0 42 0
Vineyards 1 374 366 0 0 0
Code
# df %>% datatable(options = list(pageLength = 8))

3 Earthworms data

3.1 Total abundance (CR = 100 % )

Sppression des valeurs aberrantes

3.2 Graphe valeurs aberant AB_tot

Code
# summary(AB_tot_aberant)
AB_tot_aberant_2 = AB_tot_aberant[AB_tot_aberant$AB_tot > max(landworm$AB_tot),]
AB_tot_aberant_2$clcm_lvl1 =as.factor(AB_tot_aberant_2$clcm_lvl1)
AB_tot_aberant_2$clcm_lvl2 =as.factor(AB_tot_aberant_2$clcm_lvl2)
AB_tot_aberant_2$clcm_lvl3 =as.factor(AB_tot_aberant_2$clcm_lvl3)
AB_tot_aberant_2 = droplevels(AB_tot_aberant_2)
kable(unique(AB_tot_aberant_2[,c("Programme","Annee","clcm_lvl3")]))
Programme Annee clcm_lvl3
406 AgrInnov 2014 Vineyards
454 AF 2014 Pastures, meadows and other permanent grasslands under agricultural use
608 CEREMA 2017 Green urban areas
707 Dephy 2016 Pastures, meadows and other permanent grasslands under agricultural use
769 Dephy Bio 2018 Non-irrigated arable land
881 Dephy 2020 Pastures, meadows and other permanent grasslands under agricultural use
922 Dephy 2021 Pastures, meadows and other permanent grasslands under agricultural use
946 ECLAS 2018 Green urban areas
1160 JASSUR 2014 Green urban areas
1341 OPVT_BZH 2020 Green urban areas
1360 OPVT_BZH 2020 Natural grasslands
1402 OPVT_BZH 2019 Green urban areas
1427 OPVT_BZH 2021 Natural grasslands
1481 OPVT_BZH 2021 Non-irrigated arable land
1495 OPVT_IDF 2018 Green urban areas
1611 OPVT_IDF 2016 Green urban areas
1840 OPVT_IDF 2021 Vineyards
1901 Life-PTD 2016 Pastures, meadows and other permanent grasslands under agricultural use
1928 Life-PTD 2019 Pastures, meadows and other permanent grasslands under agricultural use
2056 RMQS_BioDiv 2005 Pastures, meadows and other permanent grasslands under agricultural use
2425 SBT-ENI-TB 2021 Non-irrigated arable land
3013 Sols de Bretagne 2015 Green urban areas
3034 Sols de Bretagne 2016 Green urban areas
3572 TIGA 2021 Green urban areas
4084 ZAA_HR 2016 Pastures, meadows and other permanent grasslands under agricultural use
4234 SOERE-PRO-EFELE-PROs 2021 Non-irrigated arable land
Code
df = AB_tot_aberant_2
df$observation = 1:nrow(df)
df$Richesse_tot_10 = df$Richesse_tot*100
g_AB_tot_aberant = ggplot(df, aes(x = observation)) + 
  geom_point(aes(y = AB_tot, color = "Abundance")) +
  geom_line(aes(y = AB_tot, color = "Abundance")) + 
  geom_point(aes(y = Richesse_tot_10, color="Richness*100")) +
  geom_line(aes(y = Richesse_tot_10, color="Richness*100")) + 
  # ggtitle(title)
  theme(plot.title = element_text(hjust = 0.5)) + 
  labs(title = "  ",x="Observation", y="Values", color = "Legend:") +
  scale_color_manual(values = c("Abundance"='red', "Richness*100"='green'))
# ggsave("g_AB_tot_aberant.png", plot = g_AB_tot_aberant, dpi = 300)
 ggplotly(g_AB_tot_aberant)

3.3 Total biomass (CR = 54.6%)

Sppression des valeurs aberrantes

3.4 Total taxonomic richness (CR = 100 % )

Sppression des valeurs aberrantes

4 Climate data extraction

4.1 The source database (CHELSA V2)

Code
# Lire le fichier Excel
chemin_fichier_excel <- "C:/Users/diall/Downloads/datas/ODMAP.xlsx"
climat <- read.xlsx(chemin_fichier_excel, sheet = "climat")

# Fusions des cellules des colonnes avec des éléments dupliqués
for (col in names(climat)) {
  climat[[col]] <- ifelse(duplicated(climat[[col]]), "", climat[[col]])
}

# Affichage du tableau avec kableExtra et centrage du contenu des cellules
kableExtra::kable(climat) %>%
  kableExtra::kable_styling() %>%
  kableExtra::column_spec(1:ncol(climat)) 
Source DB.name Categories Variables Units Formats Periods Resolution References
Fourcade et al., 2022 CHELSA V2.1 climate bio1 °C .tif 1981 - 2010 30 arc-second, ~ 1 km  https://chelsa-climate.org/bioclim/
https://zenodo.org/records/2525665
https://zenodo.org/records/2525662
bio19 kg/m² https://zenodo.org/records/2525553

4.2 Extraction method

  • Link recovery ( see file link .tif )

  • Extracting variable names

  • Uses of the extraction() function

  • Convert columns to correct format and unit

  • Adding variables to the LANDWORM database

Code
# liens_tif = read.table(file = "C:/Users/diall/Downloads/datas/enviDatas3paths.txt")
# liens_tif$shortname <- str_extract(liens_tif$V1, "(?<=CHELSA_).*?(?=_1981)")
# liens_tif[liens_tif$shortname=="rsds","shortname"]=c("rsds_max","rsds_mean","rsds_min","rsds_range")
# 
# #all(is.na(landworm$gps_x))
# #all(is.na(landworm$gps_y))
# 
# bdd_climat= landworm[, c("ID","gps_x","gps_y")]
# 
# temp_1=Sys.time()
# #for( i in 1:nrow(liens_tif)){
#   #nom=liens_tif[i,c("shortname")]
#   #df_ext <- extraction(nom_col = nom,df = bdd_climat,conv = 1, 
#                   #tif_file_path = liens_tif[i,c("V1")] ) 
#   #bdd_climat[[nom]] <- df_ext [,nom]
#   #rm("df_ext","nom")
#   #cat("Extraction: ",i,"/",nrow(liens_tif), "\n")
# #}
# temp_2=Sys.time()
# duree= difftime(temp_2,temp_1)
# 
# chemin_fichier <- "C:/Users/diall/OneDrive/Bureau/M2_MODE/stage_abdou_m2/datas/bdd_climat.rds"
# # saveRDS(bdd_climat, chemin_fichier)
# #bdd_climat <- readRDS(chemin_fichier)
# 
# # debut cnversion ------------------------------------------------------------
# conv_df_climat= data.frame(shortname =liens_tif$shortname )
# 
# # unit = 1
# conv_df_climat$unit = rep(1)
# # unit = 100
# unit_100=c("bio4")
# conv_df_climat$unit <- ifelse(conv_df_climat$shortname %in% unit_100, 100, 1)
# 
# 
# # scale = 0.1
# conv_df_climat$scale = rep(0.1)
# # scale = 1
# scale_1=c("fcf","fgd","gddlgd0","gddlgd5","gddlgd10","gdgfgd0","gdgfgd5","gdgfgd10","gsl","kg0","kg1" ,"kg2" ,"kg3" ,"kg4" ,"kg5","lgd","ngd0","ngd5","ngd10","scd")
# 
# # scale = 0.01
# scale_01=c("hurs_max","hurs_mean","hurs_min","hurs_range","pet_penman_max",
#        "pet_penman_mean","pet_penman_min","pet_penman_range")
# 
# # scale = 0.001
# scale_001=c("rsds","sfcWind_max","sfcWind_mean","sfcWind_min","sfcWind_range","pet_penman_max","pet_penman_mean","pet_penman_min","pet_penman_range","rsds_max","rsds_mean","rsds_min","rsds_range")
# 
# # Remplacement des valeurs de l'échelle en fonction des conditions
# conv_df_climat$scale <- ifelse(conv_df_climat$shortname %in% scale_1, 1,
#               ifelse(conv_df_climat$shortname %in% scale_01, 0.01,
#                     ifelse(conv_df_climat$shortname %in% scale_001,0.001, 0.1)))
# 
# # offset = 0
# conv_df_climat$offset = rep(0)
# # offset = - 273.15
# offset_273=c("bio1","bio5","bio6","bio8","bio9","bio10","bio11","gdgfgd10","gsl","gst")
# conv_df_climat$offset = ifelse(conv_df_climat$shortname %in% offset_273, -273.15, 0)
# 
# # Pas present dans dans le pdf explicative donc pas de conversion
# pas_pdf=c( "ai","swb", "clt_max","clt_mean","clt_min","clt_range")
# verif=c(unit_100,scale_1,scale_01,scale_001,offset_273)
# pas_pdf_2=setdiff(conv_df_climat$shortname, verif)
# conv_df_climat[conv_df_climat$shortname %in% pas_pdf,"scale"] = 1
# 
# #bdd_climat_ok=bdd_climat[,c("ID","gps_x","gps_y")]
# 
# #for ( i in conv_df_climat$shortname){
#   #if (i %in% names(bdd_climat)){
#   #unitee= conv_df_climat[conv_df_climat$shortname ==i,"unit"]
#   #echelle = conv_df_climat[conv_df_climat$shortname ==i,"scale"]
#   #decalage = conv_df_climat[conv_df_climat$shortname ==i,"offset"]
#   #bdd_climat_ok[[i]] = ((bdd_climat[[i]] / unitee)* echelle) + decalage
#   #}else {
#     #cat("Attention ",i, "n'exite pas dans la bdd_climat","\n")
#   #}
# #}
# 
# 
# # chemin_fichier <- "C:/Users/diall/OneDrive/Bureau/M2_MODE/stage_abdou_m2/datas/bdd_climat_ok.rds"
# # saveRDS(bdd_climat_ok, chemin_fichier)
# # bdd_climat_ok <- readRDS(chemin_fichier)
# # fin conversion
# 
# #df_fusion <- subset(bdd_climat_ok, select = -c(ID,gps_x, gps_y))
# #landworm <- cbind(landworm, df_fusion) # all = TRUE pour garder toutes les lignes
  • Merging database and climat database
Code
# Ajout variables climatiques (voir chunk extraction données climatiques)
chemin_fichier <- "C:/Users/diall/OneDrive/Bureau/M2_MODE/stage_abdou_m2/datas/bdd_climat_ok.rds"
# saveRDS(landworm_climat_ok, chemin_fichier)
landworm_climat_ok <- readRDS(chemin_fichier)
df_fusion <- subset(landworm_climat_ok, select = -c(gps_x, gps_y))

rows_not_in_df_fusion <- anti_join(landworm, df_fusion, by = "ID")

# summary(rows_not_in_df_fusion$owner)

merged_df <- merge(landworm, df_fusion, by = "ID")

ids_not_matching <- anti_join( merged_df,landworm, by = "ID")

landworm = merged_df

#landworm <- cbind(landworm, df_fusion) # all = TRUE pour garder toutes les lignes

4.3 List of variables

Variable description

      ID                gps_x             gps_y             ai        
 Length:7378        Min.   :-5.0496   Min.   :41.44   Min.   :0.5901  
 Class :character   1st Qu.:-0.3535   1st Qu.:46.17   1st Qu.:0.9428  
 Mode  :character   Median : 2.0985   Median :47.92   Median :1.0278  
                    Mean   : 1.9577   Mean   :47.26   Mean   :1.0878  
                    3rd Qu.: 4.1679   3rd Qu.:48.76   3rd Qu.:1.1373  
                    Max.   : 9.5213   Max.   :50.98   Max.   :3.4735  
                                                      NA's   :7       
     bio10           bio11             bio12            bio13       
 Min.   : 8.35   Min.   :-10.150   Min.   : 563.7   Min.   : 61.80  
 1st Qu.:17.55   1st Qu.:  3.550   1st Qu.: 738.5   1st Qu.: 78.20  
 Median :18.45   Median :  4.250   Median : 816.2   Median : 88.30  
 Mean   :18.61   Mean   :  4.613   Mean   : 847.3   Mean   : 93.17  
 3rd Qu.:19.55   3rd Qu.:  5.850   3rd Qu.: 898.8   3rd Qu.:102.70  
 Max.   :24.75   Max.   : 10.950   Max.   :2158.3   Max.   :239.90  
                                                                    
     bio14            bio15           bio16           bio17      
 Min.   :  7.00   Min.   : 8.10   Min.   :173.8   Min.   : 40.5  
 1st Qu.: 45.83   1st Qu.:12.50   1st Qu.:218.1   1st Qu.:149.3  
 Median : 49.60   Median :16.10   Median :246.7   Median :160.4  
 Mean   : 49.88   Mean   :18.64   Mean   :259.8   Mean   :164.9  
 3rd Qu.: 53.90   3rd Qu.:22.10   3rd Qu.:288.9   3rd Qu.:175.4  
 Max.   :154.50   Max.   :50.90   Max.   :645.4   Max.   :490.0  
                                                                 
     bio18           bio19            bio1            bio2       
 Min.   : 50.8   Min.   :137.4   Min.   :-1.05   Min.   : 1.600  
 1st Qu.:155.3   1st Qu.:184.2   1st Qu.:10.65   1st Qu.: 7.400  
 Median :177.6   Median :208.8   Median :11.25   Median : 7.600  
 Mean   :181.6   Mean   :220.5   Mean   :11.45   Mean   : 7.619  
 3rd Qu.:203.0   3rd Qu.:241.8   3rd Qu.:11.95   3rd Qu.: 8.000  
 Max.   :559.0   Max.   :574.1   Max.   :17.05   Max.   :11.300  
                                                                 
      bio3             bio4            bio5            bio6        
 Min.   :0.1100   Min.   :2.736   Min.   :13.85   Min.   :-15.350  
 1st Qu.:0.3220   1st Qu.:5.193   1st Qu.:22.55   1st Qu.:  0.250  
 Median :0.3410   Median :5.475   Median :23.55   Median :  1.150  
 Mean   :0.3383   Mean   :5.452   Mean   :23.68   Mean   :  1.186  
 3rd Qu.:0.3550   3rd Qu.:5.825   3rd Qu.:24.75   3rd Qu.:  2.450  
 Max.   :0.3990   Max.   :7.416   Max.   :31.25   Max.   :  9.350  
                                                                   
      bio7            bio8             bio9          clt_max        clt_mean   
 Min.   : 9.50   Min.   :-8.950   Min.   :-8.55   Min.   :3101   Min.   :2381  
 1st Qu.:21.50   1st Qu.: 7.350   1st Qu.: 6.65   1st Qu.:4824   1st Qu.:3962  
 Median :22.40   Median : 8.350   Median : 7.45   Median :5110   Median :4227  
 Mean   :22.49   Mean   : 9.151   Mean   :12.39   Mean   :5043   Mean   :4106  
 3rd Qu.:24.10   3rd Qu.: 9.850   3rd Qu.:18.75   3rd Qu.:5447   3rd Qu.:4374  
 Max.   :30.20   Max.   :18.150   Max.   :24.75   Max.   :6682   Max.   :4942  
                                                                               
    clt_min       clt_range       cmi_max          cmi_mean      
 Min.   : 688   Min.   : 890   Min.   : 18.60   Min.   :-58.800  
 1st Qu.:2936   1st Qu.:1746   1st Qu.: 45.80   1st Qu.:-15.000  
 Median :3289   Median :1996   Median : 53.20   Median : -9.300  
 Mean   :3079   Mean   :1964   Mean   : 58.57   Mean   : -7.522  
 3rd Qu.:3412   3rd Qu.:2148   3rd Qu.: 66.50   3rd Qu.: -2.700  
 Max.   :3999   Max.   :3432   Max.   :192.30   Max.   :103.600  
                               NA's   :3        NA's   :3        
    cmi_min          cmi_range          fcf              fgd       
 Min.   :-200.40   Min.   : 95.0   Min.   : 0.600   Min.   : 2.30  
 1st Qu.: -91.00   1st Qu.:118.8   1st Qu.: 4.300   1st Qu.:19.70  
 Median : -78.00   Median :136.2   Median : 5.600   Median :22.80  
 Mean   : -82.68   Mean   :141.2   Mean   : 6.191   Mean   :20.86  
 3rd Qu.: -68.00   3rd Qu.:157.6   3rd Qu.: 7.300   3rd Qu.:23.80  
 Max.   :  55.50   Max.   :310.5   Max.   :19.900   Max.   :26.90  
 NA's   :3         NA's   :3       NA's   :5541     NA's   :6577   
      gdd0          gdd10             gdd5           gddlgd0     
 Min.   :1006   Min.   :   5.2   Min.   : 314.6   Min.   : 0.30  
 1st Qu.:3903   1st Qu.: 989.8   1st Qu.:2182.8   1st Qu.:31.00  
 Median :4132   Median :1109.0   Median :2368.4   Median :32.55  
 Mean   :4195   Mean   :1189.2   Mean   :2452.8   Mean   :31.06  
 3rd Qu.:4388   3rd Qu.:1321.6   3rd Qu.:2591.7   3rd Qu.:34.10  
 Max.   :6253   Max.   :2607.0   Max.   :4427.6   Max.   :36.50  
                NA's   :2                         NA's   :7260   
    gddlgd10        gddlgd5         gdgfgd0          gdgfgd10     
 Min.   : 0.30   Min.   : 0.10   Min.   : 3.100   Min.   :-269.9  
 1st Qu.:29.70   1st Qu.:33.00   1st Qu.: 5.100   1st Qu.:-263.2  
 Median :30.10   Median :33.60   Median : 6.800   Median :-262.6  
 Mean   :30.27   Mean   :33.12   Mean   : 7.269   Mean   :-262.9  
 3rd Qu.:30.90   3rd Qu.:34.00   3rd Qu.: 9.725   3rd Qu.:-262.1  
 Max.   :36.40   Max.   :36.40   Max.   :12.500   Max.   :-253.6  
 NA's   :16      NA's   :2824    NA's   :7260     NA's   :16      
    gdgfgd5            gsl              gsp              gst       
 Min.   : 2.300   Min.   :-267.1   Min.   : 264.5   Min.   : 5.35  
 1st Qu.: 5.400   1st Qu.:-236.7   1st Qu.: 738.1   1st Qu.:10.75  
 Median : 5.800   Median :-236.7   Median : 813.7   Median :11.35  
 Mean   : 5.846   Mean   :-237.2   Mean   : 835.0   Mean   :11.52  
 3rd Qu.: 6.100   3rd Qu.:-236.7   3rd Qu.: 893.4   3rd Qu.:11.95  
 Max.   :15.600   Max.   :-236.7   Max.   :1924.0   Max.   :16.75  
 NA's   :2824                                                      
    hurs_max       hurs_mean        hurs_min       hurs_range    
 Min.   :582.0   Min.   :553.3   Min.   :488.0   Min.   : 17.00  
 1st Qu.:665.5   1st Qu.:615.2   1st Qu.:574.9   1st Qu.: 77.20  
 Median :680.1   Median :627.7   Median :585.3   Median : 93.80  
 Mean   :676.1   Mean   :623.9   Mean   :586.3   Mean   : 89.83  
 3rd Qu.:693.8   3rd Qu.:636.7   3rd Qu.:599.7   3rd Qu.:107.70  
 Max.   :733.3   Max.   :672.1   Max.   :652.4   Max.   :135.90  
                                                                 
      kg0             kg1             kg2             kg3        
 Min.   :0.900   Min.   :0.900   Min.   :0.900   Min.   :0.6000  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:0.7000  
 Median :1.000   Median :1.000   Median :1.000   Median :0.7000  
 Mean   :1.017   Mean   :1.018   Mean   :1.026   Mean   :0.7396  
 3rd Qu.:1.000   3rd Qu.:1.000   3rd Qu.:1.000   3rd Qu.:0.7000  
 Max.   :3.000   Max.   :3.000   Max.   :3.000   Max.   :2.1000  
                                                                 
      kg4             kg5             lgd             ngd0      
 Min.   :0.600   Min.   :0.300   Min.   : 0.10   Min.   :16.80  
 1st Qu.:1.200   1st Qu.:0.900   1st Qu.:21.50   1st Qu.:36.50  
 Median :1.200   Median :1.000   Median :22.80   Median :36.50  
 Mean   :1.127   Mean   :1.591   Mean   :23.72   Mean   :36.33  
 3rd Qu.:1.300   3rd Qu.:2.300   3rd Qu.:25.50   3rd Qu.:36.50  
 Max.   :2.100   Max.   :3.000   Max.   :36.50   Max.   :36.50  
                                 NA's   :6577                   
     ngd10            ngd5            npp         pet_penman_max
 Min.   : 2.50   Min.   :10.50   Min.   : 574.7   Min.   :1101  
 1st Qu.:18.80   1st Qu.:27.70   1st Qu.:1129.3   1st Qu.:1317  
 Median :19.80   Median :29.00   Median :1215.0   Median :1378  
 Mean   :20.19   Mean   :31.13   Mean   :1223.8   Mean   :1410  
 3rd Qu.:20.90   3rd Qu.:36.50   3rd Qu.:1302.0   3rd Qu.:1485  
 Max.   :36.50   Max.   :36.50   Max.   :1807.9   Max.   :2124  
 NA's   :2                                        NA's   :3     
 pet_penman_mean  pet_penman_min  pet_penman_range    rsds_max   
 Min.   : 478.9   Min.   : 28.3   Min.   : 776.6   Min.   :1850  
 1st Qu.: 707.7   1st Qu.:209.8   1st Qu.:1079.2   1st Qu.:1980  
 Median : 742.0   Median :250.7   Median :1156.3   Median :2078  
 Mean   : 755.0   Mean   :245.6   Mean   :1164.6   Mean   :2092  
 3rd Qu.: 805.2   3rd Qu.:276.3   3rd Qu.:1223.5   3rd Qu.:2140  
 Max.   :1174.5   Max.   :580.5   Max.   :1674.2   Max.   :2702  
 NA's   :3        NA's   :3       NA's   :3                      
   rsds_mean       rsds_min       rsds_range        scd         
 Min.   :1052   Min.   :154.8   Min.   :1492   Min.   : 0.0000  
 1st Qu.:1144   1st Qu.:276.6   1st Qu.:1692   1st Qu.: 0.0000  
 Median :1212   Median :326.2   Median :1735   Median : 0.0000  
 Mean   :1234   Mean   :349.6   Mean   :1743   Mean   : 0.2815  
 3rd Qu.:1287   3rd Qu.:384.3   3rd Qu.:1762   3rd Qu.: 0.0000  
 Max.   :1776   Max.   :891.7   Max.   :2188   Max.   :29.9000  
                                                                
  sfcWind_max     sfcWind_mean    sfcWind_min    sfcWind_range  
 Min.   : 67.1   Min.   : 59.8   Min.   : 55.8   Min.   : 11.3  
 1st Qu.:367.7   1st Qu.:325.8   1st Qu.:275.1   1st Qu.: 90.5  
 Median :440.4   Median :387.6   Median :322.6   Median :114.4  
 Mean   :425.5   Mean   :371.3   Mean   :312.7   Mean   :112.8  
 3rd Qu.:490.3   3rd Qu.:425.5   3rd Qu.:356.8   3rd Qu.:135.2  
 Max.   :788.9   Max.   :717.4   Max.   :665.4   Max.   :294.0  
 NA's   :3       NA's   :3       NA's   :3       NA's   :3      
      swb              swe           vpd_max          vpd_mean    
 Min.   :-722.0   Min.   : 28.3   Min.   : 476.1   Min.   :254.0  
 1st Qu.:-216.0   1st Qu.:150.2   1st Qu.: 846.6   1st Qu.:506.9  
 Median :-152.0   Median :224.2   Median : 935.7   Median :539.0  
 Mean   :-166.4   Mean   :245.6   Mean   : 944.4   Mean   :557.1  
 3rd Qu.:-107.0   3rd Qu.:371.6   3rd Qu.:1021.0   3rd Qu.:589.4  
 Max.   : 230.0   Max.   :551.7   Max.   :1619.6   Max.   :863.8  
 NA's   :4        NA's   :7260                                    
    vpd_min        vpd_range     
 Min.   :118.2   Min.   : 195.0  
 1st Qu.:248.7   1st Qu.: 565.9  
 Median :267.8   Median : 672.1  
 Mean   :280.9   Mean   : 663.5  
 3rd Qu.:303.0   3rd Qu.: 745.9  
 Max.   :508.4   Max.   :1224.4  
                                 

4.4 Precipitation

  • Annual precipitation (kg/m²) = bio12

Sppression des valeurs aberrantes

5 Soil data extraction

5.1 The source database (openlandmap)

Code
chemin_fichier_excel <- "C:/Users/diall/Downloads/datas/ODMAP.xlsx"
pedo <- read.xlsx(chemin_fichier_excel, sheet = "pedo")

# Fusion des cellules des colonnes avec des éléments dupliqués
for (col in names(pedo)) {
  pedo[[col]] <- ifelse(duplicated(pedo[[col]]), "", pedo[[col]])
}

#tableau avec kableExtra et centrage du contenu des cellules
kableExtra::kable(pedo) %>%
  kableExtra::kable_styling() %>%
  kableExtra::column_spec(1:ncol(pedo))  # Centrer le contenu de toutes les colonnes
Source DB.name Categories Variables Units Formats Periods Resolution References X10
Fourcade et al., 2022 OpenLandMap  soil data pH .tif 1950 - 2017 250 m https://zenodo.org/records/2525664 NA
Carbone content g/kg https://zenodo.org/records/2525553
BDD / BDAT Data gouv Sand NA 90 m https://doi.org/10.57745/N4E4NE
Clay
Silt
Salako et al., 2023 USGS-NASA spatial data Elevation NA .shp 2010 1 km https://www.usgs.gov/centers/eros/science/usgs-eros-archive-digital-elevation-global-multi-resolution-terrain-elevation
Rutgers et al., 2018 JRC Capacité d'échange de cations (CEC) cmol·kg −1 2009/2012 https://www.sciencedirect.com/science/article/pii/S0016706119304768 2 à 20 cm
Rutgers et al., 2019 Carbonates de calcium (CaCO 3 ) g·kg −1 3 à 20 cm
Rutgers et al., 2020 Rapport C:N 4 à 20 cm
Rutgers et al., 2021 Azote (N) 5 à 20 cm
Rutgers et al., 2022 Phosphore (P) mg·kg −1 6 à 20 cm
Rutgers et al., 2023 Potassium (K) 7 à 20 cm
Rutgers et al., 2016  pH dans H 2 O https://esdac.jrc.ec.europa.eu/search 0 à 20 cm
Bulk density kg / m-cube https://zenodo.org/records/2525665
Rutgers et al., 2017  pH dans une solution de CaCl2
pH dans H 2 O moins pH dans Cacl 2
  • Average values between surface (0 cm) and 30 cm depth

5.2 Silt

Extracted values (g/kg, 0 - 30 cm)

Sppression des valeurs aberrantes

Measured values & extracted values

  • Clean silt column
Code
# On recupere les deux colonnes du pH
df_comp=landworm[, c("ID", "ID_Site","silt","limon.0_30" )]
df_comp =df_comp[complete.cases(df_comp$silt),] 
df_comp =df_comp[complete.cases(df_comp$limon.0_30),] 
df_comp <- df_comp[!grepl("[^0-9.]", df_comp$silt), ]
df_comp$silt <- as.numeric(df_comp$silt)
df_comp$limon.0_30 <- as.numeric(df_comp$limon.0_30)
# colSums(is.na(df_comp))


df_comp = df_comp[!df_comp$silt== "NA",]
df_comp = df_comp[!df_comp$limon.0_30== "NaN",]
df_comp = droplevels(df_comp)
Code
# -   Deleting duplicate measured values

ID_Site_dupliques <- df_comp$ID_Site[duplicated(df_comp$ID_Site)]
#length(ID_Site_dupliques)

lignes_dupliquees <- subset(df_comp, duplicated(ID_Site) & duplicated(silt))

lignes_unique <- unique(lignes_dupliquees$ID_Site )
#length(lignes_unique)
# nrow(df_comp) - length(ID_Site_dupliques) + length(lignes_unique)


dupliquees <- duplicated(df_comp$ID_Site)
df_comp <- df_comp[!dupliquees, ]
df_comp=droplevels(df_comp)
df_comp$silt <- as.numeric(df_comp$silt)
df_comp$limon.0_30 <- as.numeric(df_comp$limon.0_30)




# summary(df_comp$silt)
# explo_num(nom_col = "silt", titre = "Silt",df = df_comp)
id_ligne <- df_comp[which(df_comp$silt <=7.3), "ID"] 
df_comp <- df_comp[!df_comp$ID %in% id_ligne, ]
df_comp=droplevels(df_comp)



# summary(df_comp$limon.0_30)
# explo_num(nom_col = "limon.0_30", titre = "limon.0_30",df = df_comp)
id_ligne <- df_comp[which(df_comp$limon.0_30 >=80), "ID"] 
df_comp <- df_comp[!df_comp$ID %in% id_ligne, ]
df_comp=droplevels(df_comp)
  • Method ?

  • Depth ?

  • Measured values (CR = 31.1%)

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   8.00   37.00   54.05   50.65   65.33   81.20 
  • Extracted values
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  24.40   39.02   50.30   50.33   63.20   72.20 

5.3 Clay

Extracted values (g/kg, 0 - 30 cm)

Sppression des valeurs aberrantes

Measured values & extracted values - Clean clay column

Code
# On recupere les deux colonnes du pH
df_comp=landworm[, c("ID", "ID_Site","clay","argile.0_30" )]
df_comp =df_comp[complete.cases(df_comp$clay),] 
df_comp =df_comp[complete.cases(df_comp$argile.0_30),] 
df_comp <- df_comp[!grepl("[^0-9.]", df_comp$clay), ]
df_comp$clay <- as.numeric(df_comp$clay)
df_comp$argile.0_30 <- as.numeric(df_comp$argile.0_30)
# colSums(is.na(df_comp))

df_comp = df_comp[!df_comp$clay== "NA",]
df_comp = df_comp[!df_comp$argile.0_30== "NaN",]
df_comp = droplevels(df_comp)
Code
# -   Deleting duplicate measured values

ID_Site_dupliques <- df_comp$ID_Site[duplicated(df_comp$ID_Site)]
#length(ID_Site_dupliques)

lignes_dupliquees <- subset(df_comp, duplicated(ID_Site) & duplicated(clay))

lignes_unique <- unique(lignes_dupliquees$ID_Site )
#length(lignes_unique)
# nrow(df_comp) - length(ID_Site_dupliques) + length(lignes_unique)

dupliquees <- duplicated(df_comp$ID_Site)
df_comp <- df_comp[!dupliquees, ]
df_comp=droplevels(df_comp)
df_comp$clay <- as.numeric(df_comp$clay)
df_comp$argile.0_30 <- as.numeric(df_comp$argile.0_30)


df_comp$clay = as.numeric(df_comp$clay)/10 # pour conv en %
  • Method ?

  • Depth ?

  • Measured values (CR = 69%)

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.002   1.989  17.750  19.464  33.300  66.400 
  • Extracted values
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.40   18.00   23.45   26.05   34.50   50.90 

5.4 Phosphore (P, mg/kg)

Sppression des valeurs aberrantes

5.5 Azote (N, g/kg)

Sppression des valeurs aberrantes

back to Plan

5.6 Carbonates de calcium (CaCO3, g/kg)

Sppression des valeurs aberrantes

6 Exploratory analysis

Data set reduction

Code
id_col=c("ID","Programme","Annee","ID_Site","Protocole")

vdt_col=c("AB_tot", "BM_tot", "Richesse_tot")

Predictors_f = c("CaCO3" ,"gps_x" ,"N" ,"bio3" ,"gps_y" ,"argile.0_30" ,
                 "limon.0_30" ,"clcm_lvl3" ,"P" ,"bio12" )


landworm_explo = landworm[,c(id_col,vdt_col,Predictors_f)]

landworm_explo <- landworm_explo %>%
  dplyr::rename(
    silt = limon.0_30,
    clay = argile.0_30,
  )

Predictors_f = c("CaCO3" ,"gps_x" ,"N" ,"bio3" ,"gps_y" ,"clay" ,
                 "silt" ,"clcm_lvl3" ,"P" ,"bio12" )

cl_original <- levels(landworm_explo$clcm_lvl3)
new_cl <- c("f","gua", "ng", "nial", "p", "v")
landworm_explo$clcm_lvl3 <- factor(landworm_explo$clcm_lvl3, levels = cl_original, labels = new_cl)

6.1 Total abundance distributions


  • Transformation sqrt

lamda = 0.3




6.2 Total biomass distributions


  • Transformation sqrt

lamda = 0.4




6.3 Total taxonomic richness distributions


  • Transformation sqrt

lamda = 0.5




6.4 Standarization

  • Transformation sqrt de l’abondance et de la biomasse

  • Transformation centrée reduite des prédicteurs

7 Spatial Thinning

7.1 Spatial Thinning

7.2 Bretagne

7.3 Dijon

7.4 IDF

7.5 All

7.6 Test de corrélation

7.7 VIF

No variable from the 9 input variables has collinearity problem. 

The linear correlation coefficients ranges between: 
min correlation ( P ~ N ):  0.01215993 
max correlation ( P ~ gps_y ):  0.5728211 

---------- VIFs of the remained variables -------- 
  Variables      VIF
1     CaCO3 1.518796
2     gps_x 2.375168
3         N 1.951163
4      bio3 2.007208
5     gps_y 2.313591
6      clay 1.635097
7      silt 1.338829
8         P 1.752233
9     bio12 2.066333

8 Relationship between variables

8.1 Abundance

  • Plots
- Abundance & CaCO3 

- Abundance & gps_x 

- Abundance & N 

- Abundance & bio3 

- Abundance & gps_y 

- Abundance & clay 

- Abundance & silt 

- Abundance & clcm_lvl3 

- Abundance & P 

- Abundance & bio12 

8.2 Biomass

  • Plots
- Biomass & CaCO3 

- Biomass & gps_x 

- Biomass & N 

- Biomass & bio3 

- Biomass & gps_y 

- Biomass & clay 

- Biomass & silt 

- Biomass & clcm_lvl3 

- Biomass & P 

- Biomass & bio12 

8.3 Richness

  • Plots
- Richness & CaCO3 

- Richness & gps_x 

- Richness & N 

- Richness & bio3 

- Richness & gps_y 

- Richness & clay 

- Richness & silt 

- Richness & clcm_lvl3 

- Richness & P 

- Richness & bio12 

9 Modeling

9.1 Data preparation

Code
# AB_tot --------------------------------------------------------------------------
df_mod_AB_tot = data_deep[,c("AB_tot",Predictors_f)]
# # # colnames(df_mod_AB_tot)[colnames(df_mod_AB_tot) == "clcm_lvl3"] <- "clc3"
dummy_vars <- model.matrix(~ clcm_lvl3 - 1, data = df_mod_AB_tot)
df_mod_AB_tot <- cbind(df_mod_AB_tot, dummy_vars)
df_mod_AB_tot <- df_mod_AB_tot[, -which(names(df_mod_AB_tot) == "clcm_lvl3")]

df_mod_AB_tot = drop_na(df_mod_AB_tot)
df_mod_AB_tot = droplevels(df_mod_AB_tot)


# Partition
set.seed(123)
ind <- sample(2, nrow(df_mod_AB_tot), replace = T, prob = c(.8, .2))
AB_tot_train <- df_mod_AB_tot[ind==1,]
AB_tot_test <- df_mod_AB_tot[ind==2,]

# write.csv2(x =AB_tot_train,file = "datas/landW/AB_tot_train.csv", row.names = FALSE)
# write.csv2(x =AB_tot_test,file = "datas/landW/AB_tot_test.csv", row.names = FALSE)
# 
# AB_tot_train = read.csv2("datas/landW/AB_tot_train.csv")
# AB_tot_test = read.csv2("datas/landW/AB_tot_test.csv")
# df_mod_AB_tot = rbind(AB_tot_train,AB_tot_test)

AB_tot_train = as.data.frame(AB_tot_train)
AB_tot_test = as.data.frame(AB_tot_test)

df <- data.frame(y =AB_tot_train[,"AB_tot"])
abundance_dist_train = ggplot(df, aes(x=y)) +
  geom_histogram(aes(y=..density..), fill="#69b3a2", color="#e9ecef", bins=30, alpha=2) +
  geom_density(fill="black", alpha=0.2) +
  theme_gray() +
  labs(title="Abundance: Train", x="Value", y="Density") +
  theme(plot.title = element_text(hjust = 0.5))
# ggsave("Results/landW/abundance_dist_train.png", plot = abundance_dist_train, dpi = 300,width = 3,height = 2)

df <- data.frame(y =AB_tot_test[,"AB_tot"])
abundance_dist_test = ggplot(df, aes(x=y)) +
  geom_histogram(aes(y=..density..), fill="#69b3a2", color="#e9ecef", bins=30, alpha=2) +
  geom_density(fill="black", alpha=0.2) +
  theme_gray() +
  labs(title="Abundance: Test", x="Value", y="Density") +
  theme(plot.title = element_text(hjust = 0.5))
# ggsave("Results/landW/abundance_dist_test.png", plot = abundance_dist_test, dpi = 300,width = 3,height = 2)

# Distrvitbution de var rep dans train et de test: est ce homogene ?
abundance_dist_train_and_test = ggarrange(abundance_dist_train, abundance_dist_test,
                          labels = c('(a)', '(b)'),
                          common.legend = TRUE,
                          legend = 'right'
)


ggsave("Results/landW/abundance_dist_train_and_test.png", plot = abundance_dist_train_and_test, dpi = 300,height = 2,width = 4)

Abundance

  • Data partition (3493, 16):

    • train data (80 %) = 2794, 16

    • test data (20 %) = 699, 16

Biomasse

  • Data partition (1799, 16):

    • train data (80 %) = 1430, 16

    • test data (20 %) = 369, 16

Richness

  • Data partition (3493, 16):

    • train data (80 %) = 2794, 16

    • test data (20 %) = 699, 16

9.2 GLM

Code
GLM <- function(var_rep, df_app, df_valid,family = 'gaussian'){
  
  
  var_predicteurs = names(df_app[,-1])
 
  df_app = df_app[,c(var_rep,var_predicteurs)]
  df_valid = df_valid[,c(var_rep,var_predicteurs)]
  
  formula <- substitute(var_rep ~ ., list(var_rep = as.name(var_rep)))
  
  
  # entrainement du modele sur le jeu d'entrainement
  modelglm<-glm(formula,family = family ,data = df_app)
  
  # Prediction sur le jeu de validation
  pred.GLM<-predict(modelglm,newdata=as.data.frame(df_valid[,var_predicteurs]))
  
  # Calcul du RMSE pour évaluer la qualite du modele
  rmse <- round (sqrt(mean((df_valid[,var_rep] - pred.GLM)^2,na.rm=TRUE)),2)
  
  
 # Calcul du R² ajusté pour train
  R_adj_train <- calcule_R2(df_app[,var_rep],  predict(modelglm, newdata=df_app))
  n_train <- nrow(df_app)
  p_train <- ncol(df_app) - 1
  r_adj_train <- 1 - ((1 - R_adj_train) * (n_train - 1) / (n_train - p_train - 1))
  
  # Calcul du R² 
  # R_adj_test <-calcule_R2(df_valid[,var_rep],pred.GLM)
  # n_test <- nrow(df_valid)
  # p_test <- ncol(df_valid) - 1
  # r_adj_test <- 1 - ((1 - R_adj_test) * (n_test - 1) / (n_test - p_test - 1))
  
  res <- rms::lrm(df_valid[,var_rep]  ~ pred.GLM, x= TRUE, y = TRUE)
  res = res$stats
  r_adj_test = round (res[["R2"]],2)
  
  MAE <- mean(abs(pred.GLM - df_valid[,var_rep]),na.rm=TRUE)
  
  # Round results
  rmse <- round(rmse, 2)
  r_adj_train <- round(r_adj_train, 2)
  r_adj_test <- round(r_adj_test, 2)
  MAE <- round(MAE, 2)
  
  # output
  results_df <- data.frame(Algorithms = "GLM",
                         Response_variables = var_rep,
                         R2_adjusted_train = r_adj_train,
                         R2_adjusted_test = r_adj_test,
                         RMSE = rmse,
                         MAE = MAE)
    
  
  results <- list(RMSE = rmse, R_adj_train = r_adj_train, R_adj_test = r_adj_test, MAE = MAE, model = modelglm,predit = pred.GLM, df = results_df)
  return(results)
}
  • Gaussian distribution

9.3 GAM

Code
GAM <- function(var_rep, df_app, df_valid, family = 'gaussian',method = "REML", interaction = FALSE){
  
  var_predicteurs = names(df_app[,-1])
  
  
  if (var_rep == "AB_tot"){ 

  modelgam<-gam(AB_tot ~ s(CaCO3) + s(gps_x) + s(N) + s(bio3) + s(gps_y) + s(clay) + s(silt) + s(P) + s(bio12) + clcm_lvl3f + clcm_lvl3gua + clcm_lvl3ng + clcm_lvl3nial + clcm_lvl3p + clcm_lvl3v,
        family=family,method = method,data = df_app)
  
  }
  
  
  
  
  if (var_rep == "BM_tot"){ 

  modelgam<-gam(BM_tot ~ s(CaCO3) + s(gps_x) + s(N) + s(bio3) + s(gps_y) + s(clay) + s(silt) + s(P) + s(bio12) + clcm_lvl3f + clcm_lvl3gua + clcm_lvl3ng + clcm_lvl3nial + clcm_lvl3p + clcm_lvl3v,
        family=family,method = method,data = df_app)
  
    
  }
  
  
  
  if(var_rep == "Richesse_tot"){ 
    
  modelgam<-gam(Richesse_tot ~ s(CaCO3) + s(gps_x) + s(N) + s(bio3) + s(gps_y) + s(clay) + s(silt) + s(P) + s(bio12) + clcm_lvl3f + clcm_lvl3gua + clcm_lvl3ng + clcm_lvl3nial + clcm_lvl3p + clcm_lvl3v ,
        family=family,method = method,data = df_app)
   
  }
  
  
  # Prediction sur le jeu de validation
  pred.GAM <- predict(modelgam,newdata=as.data.frame(df_valid[,var_predicteurs]))
  
  # Calcul du RMSE pour évaluer la qualite du modele
  rmse <- sqrt(mean((df_valid[,var_rep] - pred.GAM)^2,na.rm=TRUE))

  
# Calcul du R² ajusté pour train
  R_adj_train <- calcule_R2(df_app[,var_rep],  predict(modelgam, newdata=df_app))
  n_train <- nrow(df_app)
  p_train <- ncol(df_app) - 1
  r_adj_train <- 1 - ((1 - R_adj_train) * (n_train - 1) / (n_train - p_train - 1))
  
  # Calcul du R² ajusté pour test
  # R_adj_test <-calcule_R2(df_valid[,var_rep],pred.GAM)
  # n_test <- nrow(df_valid)
  # p_test <- ncol(df_valid) - 1
  # r_adj_test <- 1 - ((1 - R_adj_test) * (n_test - 1) / (n_test - p_test - 1))
    res <- rms::lrm(df_valid[,var_rep]  ~ pred.GAM, x= TRUE, y = TRUE)
  res = res$stats
  r_adj_test = round (res[["R2"]],2)
  

  # Calcule le MAE
  MAE <- mean(abs(pred.GAM - df_valid[,var_rep]))
  
  # Round results
  rmse <- round(rmse, 2)
  r_adj_train <- round(r_adj_train, 2)
  r_adj_test <- round(r_adj_test, 2)
  MAE <- round(MAE, 2)
  
  
  # output
  results_df <- data.frame(Algorithms = "GAM",
                         Response_variables = var_rep,
                         R2_adjusted_train = r_adj_train,
                         R2_adjusted_test = r_adj_test,
                         RMSE = rmse,
                         MAE = MAE)
  
  
  results <- list(RMSE = rmse, R_adj_train = r_adj_train, R_adj_test = r_adj_test, MAE = MAE, model = modelgam, predit = pred.GAM, df = results_df)
  
  return(results)
}
  • Family = gaussian

  • Link function = identity

  • Method = REML

  • Tuning

9.4 RF

  • Default model
  • RF model tuning by grid

  • ntree = \(100,300,500,700,900,1000,1300,1500,1700,2000\)

  • mtry = \(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24\)

  • maxnodes = \(10 , 20, 30, 40, 50, 60, 70, 80, 90, 100\)

Total number of models = \(ntree * mtry * maxnode = 960\)

  • Validation of models on test data
Code
ForetAlea <- function(var_rep, df_app, df_valid, mtry, ntree, maxnodes) {
  
  set.seed(1863)
  col_posi <- which(names(df_app) == var_rep)
  ForeVDT <- randomForest::randomForest(df_app[-col_posi], df_app[[col_posi]], mtry = mtry, ntree = ntree, maxnodes = maxnodes)
  
  # Prediction on the validation dataset
  col_posi <- which(names(df_valid) == var_rep)
  pred.RF <- predict(ForeVDT, newdata = df_valid[, -col_posi])
  
  # Calculate RMSE to evaluate model quality
  rmse <- sqrt(mean((df_valid[, col_posi] - pred.RF)^2))
  
  
  # Calcul du R² ajusté pour train
  R_adj_train <- calcule_R2(df_app[,var_rep],  predict(ForeVDT, newdata=df_app))
  n_train <- nrow(df_app)
  p_train <- ncol(df_app) - 1
  r_adj_train <- 1 - ((1 - R_adj_train) * (n_train - 1) / (n_train - p_train - 1))
  
  # Calcul du R² ajusté pour test
  # R_adj_test <-calcule_R2(df_valid[,col_posi],pred.RF)
  # n_test <- nrow(df_valid)
  # p_test <- ncol(df_valid) - 1
  # r_adj_test <- 1 - ((1 - R_adj_test) * (n_test - 1) / (n_test - p_test - 1))
  res <- rms::lrm(df_valid[,var_rep]  ~ pred.RF, x= TRUE, y = TRUE)
  res = res$stats
  r_adj_test = round (res[["R2"]],2)
  
  # Calculate MAE
  MAE <- mean(abs(pred.RF - df_valid[, col_posi]))
  
  # Round results
  rmse <- round(rmse, 2)
  r_adj_train <- round(r_adj_train, 2)
  r_adj_test <- round(r_adj_test, 2)
  MAE <- round(MAE, 2)
  
    # output
  results_df <- data.frame(Algorithms = "RF",
                         Response_variables = var_rep,
                         R2_adjusted_train = r_adj_train,
                         R2_adjusted_test = r_adj_test,
                         RMSE = rmse,
                         MAE = MAE)
  
  
  results <- list(RMSE = rmse, R_adj_train = r_adj_train, R_adj_test = r_adj_test, MAE = MAE, model = ForeVDT, predit = pred.RF, df = results_df)
  
  return(results)
}

9.5 GBM

  • Default model

  • GBM model tuning by grid

  • n.trees = \(1000, 1500, 1700, 2000, 3000\)

  • shrinkage = \(0.01, 0.02, 0.05, 0.001, 0.002, 0.005\)

  • interaction.depth = \(3, 5, 6, 8, 10\)

  • n.minobsinnode = \(2, 5, 10, 30, 50, 70\)

Total number of models = \(n.trees * shrinkage * interaction.depth * n.minobsinnode = 900\)

  • Validation of models on test data
Code
GBM <- function(var_rep, df_app, df_valid,distribution = 'gaussian',n.trees ,shrinkage,interaction.depth,n.minobsinnode){

  formula <- substitute(var_rep ~ ., list(var_rep = as.name(var_rep)))

  Gradboost<-gbm(formula, data = df_app,
    distribution = distribution, 
    n.trees = n.trees,
    shrinkage = shrinkage,
    interaction.depth = interaction.depth,
    n.minobsinnode = n.minobsinnode) 
  
  # Prediction sur le jeu de validation :
   col_posi <- which(names(df_valid) == var_rep)
  prev.GBM<-predict(Gradboost,newdata=as.data.frame(df_valid[,-col_posi]))
 
  # Calcul du RMSE pour évaluer la qualité du modele
  rmse <- sqrt(mean((df_valid[,var_rep] - prev.GBM)^2))


# Calcul du R² ajusté pour train
  R_adj_train <- calcule_R2(df_app[,var_rep],  predict(Gradboost, newdata=df_app))
  n_train <- nrow(df_app)
  p_train <- ncol(df_app) - 1
  r_adj_train <- 1 - ((1 - R_adj_train) * (n_train - 1) / (n_train - p_train - 1))
  
  # Calcul du R² ajusté pour test
  # R_adj_test <-calcule_R2(df_valid[,col_posi],prev.GBM)
  # n_test <- nrow(df_valid)
  # p_test <- ncol(df_valid) - 1
  # r_adj_test <- 1 - ((1 - R_adj_test) * (n_test - 1) / (n_test - p_test - 1))
    res <- rms::lrm(df_valid[,var_rep]  ~ prev.GBM, x= TRUE, y = TRUE)
  res = res$stats
  r_adj_test = round (res[["R2"]],2)
  

  # calcule MAE
  MAE <- mean(abs(prev.GBM - df_valid[,col_posi])) 
  
    
    # Round results
  rmse <- round(rmse, 2)
  r_adj_train <- round(r_adj_train, 2)
  r_adj_test <- round(r_adj_test, 2)
  MAE <- round(MAE, 2)
  
  
      # output
  results_df <- data.frame(Algorithms = "GBM",
                         Response_variables = var_rep,
                         R2_adjusted_train = r_adj_train,
                         R2_adjusted_test = r_adj_test,
                         RMSE = rmse,
                         MAE = MAE)
  
  
  results <- list(RMSE = rmse, R_adj_train = r_adj_train, R_adj_test = r_adj_test, MAE = MAE, model = Gradboost, predit = prev.GBM, df = results_df)
  
  
  return(results)
}

9.6 ANN

  • Default model
  • Tunning

runs <- tuning_run(“Experiment.R”, flags = list(dense_units1 = c(32, 64), dense_units2 = c(16, 32), dense_units3 = c(8, 16), dense_units4 = c(4, 8), dropout1 = c(0.4, 0.5), dropout1 = c(0.3, 0.4), dropout1 = c(0.2, 0.3), dropout1 = c(0.1, 0.2), batch_size = c(32, 64)))

  • hidden = c(32,32,16,8)

9.7 Compilation

  • ANN AB_tot
Epoch 1/100
35/35 - 2s - loss: 206.7886 - mae: 12.7968 - val_loss: 142.8321 - val_mae: 10.2181 - 2s/epoch - 46ms/step
Epoch 2/100
35/35 - 0s - loss: 119.9334 - mae: 9.0317 - val_loss: 65.9016 - val_mae: 6.2427 - 265ms/epoch - 8ms/step
Epoch 3/100
35/35 - 0s - loss: 67.4942 - mae: 6.5699 - val_loss: 39.0828 - val_mae: 4.8321 - 165ms/epoch - 5ms/step
Epoch 4/100
35/35 - 0s - loss: 61.2279 - mae: 6.1548 - val_loss: 37.9804 - val_mae: 4.7809 - 158ms/epoch - 5ms/step
Epoch 5/100
35/35 - 0s - loss: 59.5530 - mae: 6.1460 - val_loss: 37.9784 - val_mae: 4.7818 - 157ms/epoch - 4ms/step
Epoch 6/100
35/35 - 0s - loss: 57.6399 - mae: 6.1034 - val_loss: 36.9304 - val_mae: 4.7188 - 153ms/epoch - 4ms/step
Epoch 7/100
35/35 - 0s - loss: 54.1353 - mae: 5.8316 - val_loss: 34.6957 - val_mae: 4.6370 - 167ms/epoch - 5ms/step
Epoch 8/100
35/35 - 0s - loss: 54.3076 - mae: 5.8432 - val_loss: 34.6723 - val_mae: 4.6574 - 169ms/epoch - 5ms/step
Epoch 9/100
35/35 - 0s - loss: 52.4431 - mae: 5.7215 - val_loss: 34.3936 - val_mae: 4.5627 - 155ms/epoch - 4ms/step
Epoch 10/100
35/35 - 0s - loss: 50.2683 - mae: 5.6250 - val_loss: 32.9686 - val_mae: 4.5443 - 148ms/epoch - 4ms/step
Epoch 11/100
35/35 - 0s - loss: 51.7143 - mae: 5.7063 - val_loss: 34.3283 - val_mae: 4.6129 - 139ms/epoch - 4ms/step
Epoch 12/100
35/35 - 0s - loss: 50.2857 - mae: 5.6626 - val_loss: 33.8329 - val_mae: 4.5855 - 151ms/epoch - 4ms/step
Epoch 13/100
35/35 - 0s - loss: 49.8917 - mae: 5.6408 - val_loss: 33.4361 - val_mae: 4.5197 - 148ms/epoch - 4ms/step
Epoch 14/100
35/35 - 0s - loss: 49.4161 - mae: 5.6193 - val_loss: 32.9450 - val_mae: 4.5141 - 171ms/epoch - 5ms/step
Epoch 15/100
35/35 - 0s - loss: 48.1759 - mae: 5.5209 - val_loss: 32.3757 - val_mae: 4.4533 - 156ms/epoch - 4ms/step
Epoch 16/100
35/35 - 0s - loss: 47.9685 - mae: 5.4678 - val_loss: 32.0535 - val_mae: 4.4773 - 160ms/epoch - 5ms/step
Epoch 17/100
35/35 - 0s - loss: 47.8048 - mae: 5.4880 - val_loss: 32.1160 - val_mae: 4.4634 - 166ms/epoch - 5ms/step
Epoch 18/100
35/35 - 0s - loss: 49.3045 - mae: 5.6055 - val_loss: 31.4204 - val_mae: 4.3782 - 166ms/epoch - 5ms/step
Epoch 19/100
35/35 - 0s - loss: 47.9324 - mae: 5.4612 - val_loss: 31.7654 - val_mae: 4.4342 - 150ms/epoch - 4ms/step
Epoch 20/100
35/35 - 0s - loss: 48.1319 - mae: 5.5217 - val_loss: 31.8263 - val_mae: 4.4232 - 153ms/epoch - 4ms/step
Epoch 21/100
35/35 - 0s - loss: 46.7955 - mae: 5.4320 - val_loss: 31.2185 - val_mae: 4.3634 - 166ms/epoch - 5ms/step
Epoch 22/100
35/35 - 0s - loss: 47.1143 - mae: 5.4310 - val_loss: 31.0135 - val_mae: 4.3294 - 146ms/epoch - 4ms/step
Epoch 23/100
35/35 - 0s - loss: 45.4230 - mae: 5.3418 - val_loss: 30.8769 - val_mae: 4.3417 - 152ms/epoch - 4ms/step
Epoch 24/100
35/35 - 0s - loss: 44.0445 - mae: 5.3128 - val_loss: 30.2505 - val_mae: 4.3160 - 154ms/epoch - 4ms/step
Epoch 25/100
35/35 - 0s - loss: 43.2086 - mae: 5.1663 - val_loss: 29.7002 - val_mae: 4.2620 - 143ms/epoch - 4ms/step
Epoch 26/100
35/35 - 0s - loss: 45.4413 - mae: 5.3596 - val_loss: 29.7042 - val_mae: 4.2033 - 145ms/epoch - 4ms/step
Epoch 27/100
35/35 - 0s - loss: 45.6172 - mae: 5.3632 - val_loss: 30.0312 - val_mae: 4.2312 - 151ms/epoch - 4ms/step
Epoch 28/100
35/35 - 0s - loss: 44.2854 - mae: 5.3104 - val_loss: 30.3459 - val_mae: 4.2706 - 152ms/epoch - 4ms/step
Epoch 29/100
35/35 - 0s - loss: 44.4155 - mae: 5.2974 - val_loss: 29.9181 - val_mae: 4.2549 - 160ms/epoch - 5ms/step
Epoch 30/100
35/35 - 0s - loss: 44.2120 - mae: 5.2883 - val_loss: 29.8273 - val_mae: 4.2075 - 160ms/epoch - 5ms/step
Epoch 31/100
35/35 - 0s - loss: 43.0567 - mae: 5.2199 - val_loss: 30.8956 - val_mae: 4.2886 - 164ms/epoch - 5ms/step
Epoch 32/100
35/35 - 0s - loss: 43.8136 - mae: 5.2869 - val_loss: 30.0031 - val_mae: 4.2484 - 168ms/epoch - 5ms/step
Epoch 33/100
35/35 - 0s - loss: 44.0965 - mae: 5.2634 - val_loss: 30.2488 - val_mae: 4.3155 - 149ms/epoch - 4ms/step
Epoch 34/100
35/35 - 0s - loss: 44.1547 - mae: 5.2701 - val_loss: 30.0639 - val_mae: 4.2443 - 150ms/epoch - 4ms/step
Epoch 35/100
35/35 - 0s - loss: 42.0255 - mae: 5.1623 - val_loss: 29.6927 - val_mae: 4.2752 - 145ms/epoch - 4ms/step
Epoch 36/100
35/35 - 0s - loss: 41.9940 - mae: 5.1143 - val_loss: 29.8826 - val_mae: 4.2703 - 141ms/epoch - 4ms/step
Epoch 37/100
35/35 - 0s - loss: 44.0003 - mae: 5.2318 - val_loss: 29.5643 - val_mae: 4.2015 - 153ms/epoch - 4ms/step
Epoch 38/100
35/35 - 0s - loss: 41.5441 - mae: 5.1444 - val_loss: 29.6264 - val_mae: 4.2356 - 162ms/epoch - 5ms/step
Epoch 39/100
35/35 - 0s - loss: 40.8190 - mae: 5.0991 - val_loss: 29.2343 - val_mae: 4.2290 - 217ms/epoch - 6ms/step
Epoch 40/100
35/35 - 0s - loss: 42.1526 - mae: 5.1468 - val_loss: 29.1789 - val_mae: 4.2104 - 152ms/epoch - 4ms/step
Epoch 41/100
35/35 - 0s - loss: 43.0383 - mae: 5.2409 - val_loss: 29.1914 - val_mae: 4.1495 - 153ms/epoch - 4ms/step
Epoch 42/100
35/35 - 0s - loss: 42.2780 - mae: 5.2084 - val_loss: 29.5023 - val_mae: 4.2038 - 146ms/epoch - 4ms/step
Epoch 43/100
35/35 - 0s - loss: 40.4813 - mae: 5.0757 - val_loss: 29.6978 - val_mae: 4.2514 - 160ms/epoch - 5ms/step
Epoch 44/100
35/35 - 0s - loss: 41.0748 - mae: 5.1195 - val_loss: 29.2387 - val_mae: 4.2494 - 163ms/epoch - 5ms/step
Epoch 45/100
35/35 - 0s - loss: 42.9483 - mae: 5.2556 - val_loss: 29.7199 - val_mae: 4.2492 - 165ms/epoch - 5ms/step
Epoch 46/100
35/35 - 0s - loss: 41.0569 - mae: 5.1324 - val_loss: 29.5824 - val_mae: 4.2766 - 166ms/epoch - 5ms/step
Epoch 47/100
35/35 - 0s - loss: 41.4063 - mae: 5.1228 - val_loss: 29.7142 - val_mae: 4.2451 - 147ms/epoch - 4ms/step
Epoch 48/100
35/35 - 0s - loss: 40.0203 - mae: 5.0302 - val_loss: 30.1525 - val_mae: 4.2549 - 140ms/epoch - 4ms/step
Epoch 49/100
35/35 - 0s - loss: 39.7565 - mae: 5.0196 - val_loss: 29.8250 - val_mae: 4.3359 - 120ms/epoch - 3ms/step
Epoch 50/100
35/35 - 0s - loss: 39.1635 - mae: 4.9813 - val_loss: 30.3377 - val_mae: 4.2618 - 132ms/epoch - 4ms/step
Epoch 51/100
35/35 - 0s - loss: 40.8503 - mae: 5.1195 - val_loss: 29.5617 - val_mae: 4.2648 - 155ms/epoch - 4ms/step
Epoch 52/100
35/35 - 0s - loss: 40.6942 - mae: 5.0886 - val_loss: 29.9999 - val_mae: 4.2209 - 156ms/epoch - 4ms/step
Epoch 53/100
35/35 - 0s - loss: 40.5233 - mae: 5.0460 - val_loss: 29.2898 - val_mae: 4.1975 - 159ms/epoch - 5ms/step
Epoch 54/100
35/35 - 0s - loss: 40.4049 - mae: 5.0366 - val_loss: 29.0951 - val_mae: 4.1560 - 162ms/epoch - 5ms/step
Epoch 55/100
35/35 - 0s - loss: 40.0864 - mae: 5.0358 - val_loss: 29.4842 - val_mae: 4.1840 - 155ms/epoch - 4ms/step
Epoch 56/100
35/35 - 0s - loss: 40.3018 - mae: 5.0347 - val_loss: 29.6770 - val_mae: 4.2070 - 147ms/epoch - 4ms/step
Epoch 57/100
35/35 - 0s - loss: 40.0671 - mae: 4.9917 - val_loss: 29.8987 - val_mae: 4.2581 - 146ms/epoch - 4ms/step
Epoch 58/100
35/35 - 0s - loss: 39.2162 - mae: 4.9655 - val_loss: 29.4018 - val_mae: 4.1769 - 142ms/epoch - 4ms/step
Epoch 59/100
35/35 - 0s - loss: 38.3966 - mae: 4.8726 - val_loss: 29.1626 - val_mae: 4.1385 - 171ms/epoch - 5ms/step
Epoch 60/100
35/35 - 0s - loss: 38.4894 - mae: 4.8976 - val_loss: 28.2917 - val_mae: 4.1256 - 157ms/epoch - 4ms/step
Epoch 61/100
35/35 - 0s - loss: 39.4201 - mae: 5.0388 - val_loss: 29.2893 - val_mae: 4.1864 - 147ms/epoch - 4ms/step
Epoch 62/100
35/35 - 0s - loss: 39.0635 - mae: 4.9771 - val_loss: 28.7680 - val_mae: 4.1723 - 142ms/epoch - 4ms/step
Epoch 63/100
35/35 - 0s - loss: 39.1833 - mae: 4.9693 - val_loss: 28.6195 - val_mae: 4.1699 - 130ms/epoch - 4ms/step
Epoch 64/100
35/35 - 0s - loss: 38.4326 - mae: 4.9435 - val_loss: 28.8141 - val_mae: 4.1621 - 131ms/epoch - 4ms/step
Epoch 65/100
35/35 - 0s - loss: 37.4340 - mae: 4.8794 - val_loss: 28.7024 - val_mae: 4.2059 - 137ms/epoch - 4ms/step
Epoch 66/100
35/35 - 0s - loss: 39.5264 - mae: 4.9790 - val_loss: 28.9455 - val_mae: 4.1234 - 158ms/epoch - 5ms/step
Epoch 67/100
35/35 - 0s - loss: 38.2778 - mae: 4.8850 - val_loss: 28.0745 - val_mae: 4.0744 - 155ms/epoch - 4ms/step
Epoch 68/100
35/35 - 0s - loss: 38.3355 - mae: 4.9566 - val_loss: 27.6351 - val_mae: 4.0545 - 150ms/epoch - 4ms/step
Epoch 69/100
35/35 - 0s - loss: 38.5695 - mae: 4.9461 - val_loss: 28.8675 - val_mae: 4.1483 - 155ms/epoch - 4ms/step
Epoch 70/100
35/35 - 0s - loss: 37.8940 - mae: 4.9165 - val_loss: 29.4315 - val_mae: 4.1799 - 147ms/epoch - 4ms/step
Epoch 71/100
35/35 - 0s - loss: 38.2657 - mae: 4.9345 - val_loss: 27.9715 - val_mae: 4.0890 - 133ms/epoch - 4ms/step
Epoch 72/100
35/35 - 0s - loss: 37.0226 - mae: 4.8798 - val_loss: 28.1335 - val_mae: 4.0770 - 136ms/epoch - 4ms/step
Epoch 73/100
35/35 - 0s - loss: 38.7046 - mae: 4.9291 - val_loss: 28.1689 - val_mae: 4.0887 - 135ms/epoch - 4ms/step
Epoch 74/100
35/35 - 0s - loss: 36.9953 - mae: 4.8718 - val_loss: 28.4258 - val_mae: 4.1265 - 135ms/epoch - 4ms/step
Epoch 75/100
35/35 - 0s - loss: 38.2918 - mae: 4.9283 - val_loss: 27.3509 - val_mae: 4.0733 - 133ms/epoch - 4ms/step
Epoch 76/100
35/35 - 0s - loss: 37.6323 - mae: 4.8945 - val_loss: 27.2317 - val_mae: 4.0363 - 150ms/epoch - 4ms/step
Epoch 77/100
35/35 - 0s - loss: 38.0630 - mae: 4.9156 - val_loss: 27.5739 - val_mae: 4.0582 - 176ms/epoch - 5ms/step
Epoch 78/100
35/35 - 0s - loss: 37.9631 - mae: 4.8907 - val_loss: 27.3073 - val_mae: 4.0265 - 126ms/epoch - 4ms/step
Epoch 79/100
35/35 - 0s - loss: 37.5096 - mae: 4.8212 - val_loss: 28.1323 - val_mae: 4.0839 - 124ms/epoch - 4ms/step
Epoch 80/100
35/35 - 0s - loss: 37.5737 - mae: 4.8187 - val_loss: 27.7364 - val_mae: 4.0363 - 135ms/epoch - 4ms/step
Epoch 81/100
35/35 - 0s - loss: 36.6119 - mae: 4.8411 - val_loss: 27.1540 - val_mae: 4.0109 - 140ms/epoch - 4ms/step
Epoch 82/100
35/35 - 0s - loss: 37.2402 - mae: 4.8093 - val_loss: 27.6190 - val_mae: 4.0227 - 135ms/epoch - 4ms/step
Epoch 83/100
35/35 - 0s - loss: 35.7336 - mae: 4.7281 - val_loss: 27.5912 - val_mae: 4.0267 - 141ms/epoch - 4ms/step
Epoch 84/100
35/35 - 0s - loss: 37.5735 - mae: 4.8949 - val_loss: 27.2543 - val_mae: 4.0395 - 148ms/epoch - 4ms/step
Epoch 85/100
35/35 - 0s - loss: 36.6190 - mae: 4.7941 - val_loss: 27.1120 - val_mae: 3.9983 - 135ms/epoch - 4ms/step
Epoch 86/100
35/35 - 0s - loss: 36.6351 - mae: 4.7908 - val_loss: 27.6314 - val_mae: 4.0205 - 133ms/epoch - 4ms/step
Epoch 87/100
35/35 - 0s - loss: 37.6338 - mae: 4.8977 - val_loss: 27.1730 - val_mae: 3.9950 - 142ms/epoch - 4ms/step
Epoch 88/100
35/35 - 0s - loss: 35.4433 - mae: 4.7419 - val_loss: 26.8873 - val_mae: 3.9761 - 125ms/epoch - 4ms/step
Epoch 89/100
35/35 - 0s - loss: 37.1491 - mae: 4.8350 - val_loss: 26.6185 - val_mae: 3.9825 - 160ms/epoch - 5ms/step
Epoch 90/100
35/35 - 0s - loss: 36.1940 - mae: 4.8081 - val_loss: 26.7409 - val_mae: 3.9566 - 143ms/epoch - 4ms/step
Epoch 91/100
35/35 - 0s - loss: 35.6457 - mae: 4.7795 - val_loss: 26.3586 - val_mae: 3.9357 - 146ms/epoch - 4ms/step
Epoch 92/100
35/35 - 0s - loss: 36.2115 - mae: 4.7782 - val_loss: 27.6734 - val_mae: 3.9833 - 142ms/epoch - 4ms/step
Epoch 93/100
35/35 - 0s - loss: 35.6157 - mae: 4.7355 - val_loss: 26.9519 - val_mae: 3.9813 - 119ms/epoch - 3ms/step
Epoch 94/100
35/35 - 0s - loss: 36.8584 - mae: 4.8254 - val_loss: 26.4187 - val_mae: 3.9312 - 132ms/epoch - 4ms/step
Epoch 95/100
35/35 - 0s - loss: 35.5852 - mae: 4.7481 - val_loss: 27.2465 - val_mae: 3.9568 - 119ms/epoch - 3ms/step
Epoch 96/100
35/35 - 0s - loss: 37.1951 - mae: 4.8726 - val_loss: 26.4606 - val_mae: 3.9043 - 134ms/epoch - 4ms/step
Epoch 97/100
35/35 - 0s - loss: 35.5976 - mae: 4.7690 - val_loss: 26.2984 - val_mae: 3.9203 - 135ms/epoch - 4ms/step
Epoch 98/100
35/35 - 0s - loss: 35.8677 - mae: 4.7683 - val_loss: 27.4405 - val_mae: 3.9699 - 143ms/epoch - 4ms/step
Epoch 99/100
35/35 - 0s - loss: 35.1977 - mae: 4.7022 - val_loss: 26.0377 - val_mae: 3.8926 - 141ms/epoch - 4ms/step
Epoch 100/100
35/35 - 0s - loss: 35.7959 - mae: 4.7186 - val_loss: 26.3348 - val_mae: 3.9185 - 148ms/epoch - 4ms/step
22/22 - 0s - 113ms/epoch - 5ms/step
88/88 - 0s - 96ms/epoch - 1ms/step
  • ANN BM_tot
Epoch 1/100
36/36 - 2s - loss: 65.9122 - mae: 7.1882 - val_loss: 47.8483 - val_mae: 6.1541 - 2s/epoch - 42ms/step
Epoch 2/100
36/36 - 0s - loss: 29.4824 - mae: 4.3815 - val_loss: 18.6612 - val_mae: 3.4839 - 155ms/epoch - 4ms/step
Epoch 3/100
36/36 - 0s - loss: 22.5476 - mae: 3.8090 - val_loss: 14.7713 - val_mae: 2.9827 - 209ms/epoch - 6ms/step
Epoch 4/100
36/36 - 0s - loss: 20.8683 - mae: 3.6774 - val_loss: 16.3958 - val_mae: 3.1741 - 244ms/epoch - 7ms/step
Epoch 5/100
36/36 - 0s - loss: 19.3886 - mae: 3.4977 - val_loss: 15.0910 - val_mae: 3.0257 - 201ms/epoch - 6ms/step
Epoch 6/100
36/36 - 0s - loss: 18.6649 - mae: 3.4419 - val_loss: 14.7305 - val_mae: 2.9753 - 176ms/epoch - 5ms/step
Epoch 7/100
36/36 - 0s - loss: 17.4631 - mae: 3.2879 - val_loss: 14.2565 - val_mae: 2.9121 - 174ms/epoch - 5ms/step
Epoch 8/100
36/36 - 0s - loss: 17.3202 - mae: 3.3031 - val_loss: 14.7167 - val_mae: 2.9806 - 175ms/epoch - 5ms/step
Epoch 9/100
36/36 - 0s - loss: 18.4534 - mae: 3.3931 - val_loss: 13.7587 - val_mae: 2.8661 - 149ms/epoch - 4ms/step
Epoch 10/100
36/36 - 0s - loss: 17.0993 - mae: 3.3075 - val_loss: 14.3049 - val_mae: 2.9253 - 149ms/epoch - 4ms/step
Epoch 11/100
36/36 - 0s - loss: 16.5840 - mae: 3.2386 - val_loss: 13.8133 - val_mae: 2.8598 - 183ms/epoch - 5ms/step
Epoch 12/100
36/36 - 0s - loss: 16.1654 - mae: 3.2468 - val_loss: 13.7053 - val_mae: 2.8420 - 164ms/epoch - 5ms/step
Epoch 13/100
36/36 - 0s - loss: 16.0885 - mae: 3.1766 - val_loss: 12.4463 - val_mae: 2.6884 - 201ms/epoch - 6ms/step
Epoch 14/100
36/36 - 0s - loss: 16.4690 - mae: 3.2275 - val_loss: 13.4214 - val_mae: 2.8285 - 258ms/epoch - 7ms/step
Epoch 15/100
36/36 - 0s - loss: 15.7010 - mae: 3.1392 - val_loss: 13.2323 - val_mae: 2.8021 - 247ms/epoch - 7ms/step
Epoch 16/100
36/36 - 0s - loss: 15.2516 - mae: 3.1274 - val_loss: 13.4135 - val_mae: 2.8183 - 183ms/epoch - 5ms/step
Epoch 17/100
36/36 - 0s - loss: 16.8227 - mae: 3.2492 - val_loss: 12.9553 - val_mae: 2.7593 - 155ms/epoch - 4ms/step
Epoch 18/100
36/36 - 0s - loss: 15.2114 - mae: 3.0770 - val_loss: 12.6064 - val_mae: 2.7171 - 145ms/epoch - 4ms/step
Epoch 19/100
36/36 - 0s - loss: 15.3473 - mae: 3.0970 - val_loss: 13.3419 - val_mae: 2.8050 - 148ms/epoch - 4ms/step
Epoch 20/100
36/36 - 0s - loss: 14.7291 - mae: 3.0132 - val_loss: 13.9726 - val_mae: 2.8828 - 142ms/epoch - 4ms/step
Epoch 21/100
36/36 - 0s - loss: 14.9057 - mae: 3.0567 - val_loss: 12.3685 - val_mae: 2.6903 - 158ms/epoch - 4ms/step
Epoch 22/100
36/36 - 0s - loss: 15.6279 - mae: 3.1393 - val_loss: 11.7791 - val_mae: 2.6275 - 175ms/epoch - 5ms/step
Epoch 23/100
36/36 - 0s - loss: 15.3492 - mae: 3.1335 - val_loss: 12.8506 - val_mae: 2.7596 - 148ms/epoch - 4ms/step
Epoch 24/100
36/36 - 0s - loss: 14.0434 - mae: 2.9820 - val_loss: 11.9276 - val_mae: 2.6450 - 141ms/epoch - 4ms/step
Epoch 25/100
36/36 - 0s - loss: 14.7787 - mae: 3.0699 - val_loss: 12.1726 - val_mae: 2.6733 - 131ms/epoch - 4ms/step
Epoch 26/100
36/36 - 0s - loss: 14.8169 - mae: 3.0783 - val_loss: 12.7943 - val_mae: 2.7611 - 143ms/epoch - 4ms/step
Epoch 27/100
36/36 - 0s - loss: 13.6290 - mae: 2.9351 - val_loss: 11.6145 - val_mae: 2.6173 - 144ms/epoch - 4ms/step
Epoch 28/100
36/36 - 0s - loss: 13.8060 - mae: 2.9354 - val_loss: 12.2723 - val_mae: 2.6968 - 149ms/epoch - 4ms/step
Epoch 29/100
36/36 - 0s - loss: 14.7685 - mae: 3.0382 - val_loss: 12.2345 - val_mae: 2.7008 - 160ms/epoch - 4ms/step
Epoch 30/100
36/36 - 0s - loss: 14.3365 - mae: 2.9993 - val_loss: 12.2982 - val_mae: 2.7096 - 158ms/epoch - 4ms/step
Epoch 31/100
36/36 - 0s - loss: 13.4188 - mae: 2.8971 - val_loss: 11.7298 - val_mae: 2.6374 - 138ms/epoch - 4ms/step
Epoch 32/100
36/36 - 0s - loss: 14.1616 - mae: 3.0219 - val_loss: 12.5460 - val_mae: 2.7515 - 131ms/epoch - 4ms/step
Epoch 33/100
36/36 - 0s - loss: 14.5030 - mae: 3.0497 - val_loss: 13.3016 - val_mae: 2.8568 - 126ms/epoch - 4ms/step
Epoch 34/100
36/36 - 0s - loss: 13.9798 - mae: 2.9610 - val_loss: 12.3393 - val_mae: 2.7375 - 138ms/epoch - 4ms/step
Epoch 35/100
36/36 - 0s - loss: 13.3073 - mae: 2.9314 - val_loss: 12.6056 - val_mae: 2.7472 - 147ms/epoch - 4ms/step
Epoch 36/100
36/36 - 0s - loss: 13.9366 - mae: 2.9367 - val_loss: 12.7136 - val_mae: 2.7742 - 152ms/epoch - 4ms/step
Epoch 37/100
36/36 - 0s - loss: 13.6029 - mae: 2.9205 - val_loss: 12.4949 - val_mae: 2.7487 - 146ms/epoch - 4ms/step
Epoch 38/100
36/36 - 0s - loss: 12.5431 - mae: 2.8100 - val_loss: 12.4647 - val_mae: 2.7337 - 146ms/epoch - 4ms/step
Epoch 39/100
36/36 - 0s - loss: 13.7013 - mae: 2.9531 - val_loss: 12.3471 - val_mae: 2.7120 - 138ms/epoch - 4ms/step
Epoch 40/100
36/36 - 0s - loss: 13.0456 - mae: 2.8738 - val_loss: 11.2357 - val_mae: 2.5867 - 148ms/epoch - 4ms/step
Epoch 41/100
36/36 - 0s - loss: 13.6601 - mae: 2.9182 - val_loss: 11.7885 - val_mae: 2.6578 - 130ms/epoch - 4ms/step
Epoch 42/100
36/36 - 0s - loss: 13.0556 - mae: 2.8681 - val_loss: 12.3389 - val_mae: 2.7422 - 143ms/epoch - 4ms/step
Epoch 43/100
36/36 - 0s - loss: 13.2781 - mae: 2.8978 - val_loss: 11.7309 - val_mae: 2.6509 - 141ms/epoch - 4ms/step
Epoch 44/100
36/36 - 0s - loss: 12.9376 - mae: 2.8807 - val_loss: 11.2363 - val_mae: 2.5954 - 146ms/epoch - 4ms/step
Epoch 45/100
36/36 - 0s - loss: 13.0106 - mae: 2.8623 - val_loss: 11.8171 - val_mae: 2.6696 - 153ms/epoch - 4ms/step
Epoch 46/100
36/36 - 0s - loss: 13.4227 - mae: 2.8883 - val_loss: 11.5956 - val_mae: 2.6365 - 144ms/epoch - 4ms/step
Epoch 47/100
36/36 - 0s - loss: 13.1407 - mae: 2.8723 - val_loss: 12.1241 - val_mae: 2.7042 - 114ms/epoch - 3ms/step
Epoch 48/100
36/36 - 0s - loss: 13.2421 - mae: 2.8766 - val_loss: 12.9822 - val_mae: 2.8355 - 123ms/epoch - 3ms/step
Epoch 49/100
36/36 - 0s - loss: 12.5577 - mae: 2.8314 - val_loss: 12.8358 - val_mae: 2.8153 - 111ms/epoch - 3ms/step
Epoch 50/100
36/36 - 0s - loss: 12.6091 - mae: 2.8368 - val_loss: 11.2516 - val_mae: 2.6110 - 144ms/epoch - 4ms/step
Epoch 51/100
36/36 - 0s - loss: 12.1566 - mae: 2.7311 - val_loss: 12.3042 - val_mae: 2.7474 - 146ms/epoch - 4ms/step
Epoch 52/100
36/36 - 0s - loss: 12.7136 - mae: 2.7867 - val_loss: 11.9101 - val_mae: 2.6949 - 152ms/epoch - 4ms/step
Epoch 53/100
36/36 - 0s - loss: 12.6138 - mae: 2.8213 - val_loss: 11.7006 - val_mae: 2.6692 - 150ms/epoch - 4ms/step
Epoch 54/100
36/36 - 0s - loss: 12.6023 - mae: 2.8121 - val_loss: 12.8003 - val_mae: 2.8043 - 145ms/epoch - 4ms/step
Epoch 55/100
36/36 - 0s - loss: 12.4370 - mae: 2.7772 - val_loss: 11.6984 - val_mae: 2.6660 - 131ms/epoch - 4ms/step
Epoch 56/100
36/36 - 0s - loss: 13.1820 - mae: 2.8586 - val_loss: 12.7190 - val_mae: 2.8125 - 130ms/epoch - 4ms/step
Epoch 57/100
36/36 - 0s - loss: 12.7803 - mae: 2.7995 - val_loss: 11.8055 - val_mae: 2.6862 - 139ms/epoch - 4ms/step
Epoch 58/100
36/36 - 0s - loss: 12.3246 - mae: 2.7785 - val_loss: 11.0924 - val_mae: 2.5953 - 150ms/epoch - 4ms/step
Epoch 59/100
36/36 - 0s - loss: 11.9981 - mae: 2.7375 - val_loss: 11.8999 - val_mae: 2.7021 - 146ms/epoch - 4ms/step
Epoch 60/100
36/36 - 0s - loss: 12.3330 - mae: 2.7938 - val_loss: 12.1201 - val_mae: 2.7256 - 142ms/epoch - 4ms/step
Epoch 61/100
36/36 - 0s - loss: 11.5700 - mae: 2.6837 - val_loss: 12.3350 - val_mae: 2.7740 - 134ms/epoch - 4ms/step
Epoch 62/100
36/36 - 0s - loss: 12.3106 - mae: 2.7589 - val_loss: 11.8656 - val_mae: 2.7159 - 142ms/epoch - 4ms/step
Epoch 63/100
36/36 - 0s - loss: 12.3135 - mae: 2.7503 - val_loss: 11.6814 - val_mae: 2.6935 - 136ms/epoch - 4ms/step
Epoch 64/100
36/36 - 0s - loss: 12.5642 - mae: 2.7737 - val_loss: 12.0277 - val_mae: 2.7433 - 146ms/epoch - 4ms/step
Epoch 65/100
36/36 - 0s - loss: 12.1540 - mae: 2.7482 - val_loss: 11.9335 - val_mae: 2.7261 - 152ms/epoch - 4ms/step
Epoch 66/100
36/36 - 0s - loss: 11.8872 - mae: 2.7653 - val_loss: 11.4758 - val_mae: 2.6834 - 154ms/epoch - 4ms/step
Epoch 67/100
36/36 - 0s - loss: 12.5298 - mae: 2.7839 - val_loss: 11.8764 - val_mae: 2.7364 - 148ms/epoch - 4ms/step
Epoch 68/100
36/36 - 0s - loss: 11.5692 - mae: 2.6718 - val_loss: 11.5338 - val_mae: 2.6808 - 154ms/epoch - 4ms/step
Epoch 69/100
36/36 - 0s - loss: 11.6069 - mae: 2.6988 - val_loss: 11.3987 - val_mae: 2.6659 - 218ms/epoch - 6ms/step
Epoch 70/100
36/36 - 0s - loss: 11.3541 - mae: 2.6720 - val_loss: 11.3254 - val_mae: 2.6299 - 147ms/epoch - 4ms/step
Epoch 71/100
36/36 - 0s - loss: 11.7584 - mae: 2.7183 - val_loss: 11.4171 - val_mae: 2.6490 - 142ms/epoch - 4ms/step
Epoch 72/100
36/36 - 0s - loss: 11.8709 - mae: 2.6966 - val_loss: 10.7857 - val_mae: 2.5649 - 142ms/epoch - 4ms/step
Epoch 73/100
36/36 - 0s - loss: 11.3799 - mae: 2.6640 - val_loss: 10.9935 - val_mae: 2.5882 - 140ms/epoch - 4ms/step
Epoch 74/100
36/36 - 0s - loss: 11.5220 - mae: 2.6798 - val_loss: 10.9075 - val_mae: 2.5824 - 127ms/epoch - 4ms/step
Epoch 75/100
36/36 - 0s - loss: 11.3666 - mae: 2.6448 - val_loss: 11.4537 - val_mae: 2.6442 - 133ms/epoch - 4ms/step
Epoch 76/100
36/36 - 0s - loss: 11.0491 - mae: 2.6507 - val_loss: 11.4783 - val_mae: 2.6586 - 141ms/epoch - 4ms/step
Epoch 77/100
36/36 - 0s - loss: 11.5450 - mae: 2.6900 - val_loss: 11.3619 - val_mae: 2.6590 - 152ms/epoch - 4ms/step
Epoch 78/100
36/36 - 0s - loss: 11.1217 - mae: 2.6374 - val_loss: 11.2485 - val_mae: 2.6323 - 142ms/epoch - 4ms/step
Epoch 79/100
36/36 - 0s - loss: 11.9717 - mae: 2.7361 - val_loss: 11.3177 - val_mae: 2.6298 - 136ms/epoch - 4ms/step
Epoch 80/100
36/36 - 0s - loss: 11.6085 - mae: 2.6790 - val_loss: 11.6626 - val_mae: 2.6740 - 135ms/epoch - 4ms/step
Epoch 81/100
36/36 - 0s - loss: 11.1662 - mae: 2.6625 - val_loss: 11.6457 - val_mae: 2.6780 - 135ms/epoch - 4ms/step
Epoch 82/100
36/36 - 0s - loss: 12.0587 - mae: 2.7231 - val_loss: 11.2803 - val_mae: 2.6269 - 193ms/epoch - 5ms/step
Epoch 83/100
36/36 - 0s - loss: 11.2993 - mae: 2.6548 - val_loss: 11.5921 - val_mae: 2.6587 - 151ms/epoch - 4ms/step
Epoch 84/100
36/36 - 0s - loss: 11.5288 - mae: 2.6495 - val_loss: 11.3916 - val_mae: 2.6414 - 146ms/epoch - 4ms/step
Epoch 85/100
36/36 - 0s - loss: 10.9824 - mae: 2.6727 - val_loss: 11.9417 - val_mae: 2.7240 - 144ms/epoch - 4ms/step
Epoch 86/100
36/36 - 0s - loss: 11.8029 - mae: 2.6873 - val_loss: 11.7246 - val_mae: 2.6819 - 134ms/epoch - 4ms/step
Epoch 87/100
36/36 - 0s - loss: 10.9209 - mae: 2.6372 - val_loss: 12.0935 - val_mae: 2.7190 - 126ms/epoch - 4ms/step
Epoch 88/100
36/36 - 0s - loss: 10.8470 - mae: 2.6199 - val_loss: 11.7631 - val_mae: 2.7044 - 145ms/epoch - 4ms/step
Epoch 89/100
36/36 - 0s - loss: 11.4724 - mae: 2.6769 - val_loss: 11.6344 - val_mae: 2.6705 - 132ms/epoch - 4ms/step
Epoch 90/100
36/36 - 0s - loss: 10.3860 - mae: 2.5503 - val_loss: 11.7522 - val_mae: 2.6882 - 138ms/epoch - 4ms/step
Epoch 91/100
36/36 - 0s - loss: 10.9236 - mae: 2.6271 - val_loss: 11.9858 - val_mae: 2.7135 - 131ms/epoch - 4ms/step
Epoch 92/100
36/36 - 0s - loss: 10.7418 - mae: 2.6158 - val_loss: 11.8690 - val_mae: 2.7169 - 145ms/epoch - 4ms/step
Epoch 93/100
36/36 - 0s - loss: 10.8128 - mae: 2.5921 - val_loss: 11.8263 - val_mae: 2.6841 - 134ms/epoch - 4ms/step
Epoch 94/100
36/36 - 0s - loss: 10.9217 - mae: 2.5963 - val_loss: 12.2551 - val_mae: 2.7799 - 144ms/epoch - 4ms/step
Epoch 95/100
36/36 - 0s - loss: 11.1529 - mae: 2.6440 - val_loss: 11.9997 - val_mae: 2.7107 - 132ms/epoch - 4ms/step
Epoch 96/100
36/36 - 0s - loss: 11.2625 - mae: 2.6358 - val_loss: 11.7425 - val_mae: 2.6776 - 134ms/epoch - 4ms/step
Epoch 97/100
36/36 - 0s - loss: 10.5781 - mae: 2.5899 - val_loss: 11.9762 - val_mae: 2.7283 - 150ms/epoch - 4ms/step
Epoch 98/100
36/36 - 0s - loss: 10.1796 - mae: 2.5407 - val_loss: 12.1273 - val_mae: 2.7524 - 147ms/epoch - 4ms/step
Epoch 99/100
36/36 - 0s - loss: 11.3843 - mae: 2.6801 - val_loss: 12.0230 - val_mae: 2.7408 - 152ms/epoch - 4ms/step
Epoch 100/100
36/36 - 0s - loss: 10.7617 - mae: 2.5795 - val_loss: 11.7945 - val_mae: 2.6921 - 148ms/epoch - 4ms/step
12/12 - 0s - 90ms/epoch - 8ms/step
45/45 - 0s - 68ms/epoch - 2ms/step
  • ANN Richesse_tot
Epoch 1/100
35/35 - 1s - loss: 27.3823 - mae: 4.4905 - val_loss: 21.4718 - val_mae: 3.8365 - 1s/epoch - 31ms/step
Epoch 2/100
35/35 - 0s - loss: 19.2299 - mae: 3.5465 - val_loss: 14.6206 - val_mae: 3.0368 - 165ms/epoch - 5ms/step
Epoch 3/100
35/35 - 0s - loss: 15.8520 - mae: 3.1728 - val_loss: 13.9255 - val_mae: 2.9882 - 152ms/epoch - 4ms/step
Epoch 4/100
35/35 - 0s - loss: 14.9392 - mae: 3.0672 - val_loss: 13.0224 - val_mae: 2.8819 - 145ms/epoch - 4ms/step
Epoch 5/100
35/35 - 0s - loss: 13.1793 - mae: 2.7924 - val_loss: 12.3204 - val_mae: 2.7862 - 153ms/epoch - 4ms/step
Epoch 6/100
35/35 - 0s - loss: 13.1392 - mae: 2.8470 - val_loss: 12.4417 - val_mae: 2.8125 - 134ms/epoch - 4ms/step
Epoch 7/100
35/35 - 0s - loss: 12.5610 - mae: 2.7636 - val_loss: 10.9453 - val_mae: 2.6288 - 149ms/epoch - 4ms/step
Epoch 8/100
35/35 - 0s - loss: 11.3531 - mae: 2.6212 - val_loss: 10.1829 - val_mae: 2.5299 - 147ms/epoch - 4ms/step
Epoch 9/100
35/35 - 0s - loss: 10.9177 - mae: 2.5771 - val_loss: 9.9821 - val_mae: 2.5069 - 134ms/epoch - 4ms/step
Epoch 10/100
35/35 - 0s - loss: 10.0738 - mae: 2.4682 - val_loss: 9.5073 - val_mae: 2.4539 - 138ms/epoch - 4ms/step
Epoch 11/100
35/35 - 0s - loss: 10.0856 - mae: 2.4680 - val_loss: 9.6632 - val_mae: 2.4698 - 135ms/epoch - 4ms/step
Epoch 12/100
35/35 - 0s - loss: 9.6365 - mae: 2.4090 - val_loss: 9.3385 - val_mae: 2.4316 - 133ms/epoch - 4ms/step
Epoch 13/100
35/35 - 0s - loss: 9.2757 - mae: 2.3608 - val_loss: 8.6076 - val_mae: 2.3424 - 133ms/epoch - 4ms/step
Epoch 14/100
35/35 - 0s - loss: 9.4420 - mae: 2.3616 - val_loss: 9.4500 - val_mae: 2.4450 - 146ms/epoch - 4ms/step
Epoch 15/100
35/35 - 0s - loss: 9.1980 - mae: 2.3334 - val_loss: 10.2419 - val_mae: 2.5375 - 104ms/epoch - 3ms/step
Epoch 16/100
35/35 - 0s - loss: 8.8698 - mae: 2.2965 - val_loss: 9.2106 - val_mae: 2.4055 - 144ms/epoch - 4ms/step
Epoch 17/100
35/35 - 0s - loss: 8.3803 - mae: 2.2244 - val_loss: 9.0254 - val_mae: 2.3824 - 114ms/epoch - 3ms/step
Epoch 18/100
35/35 - 0s - loss: 8.6291 - mae: 2.2615 - val_loss: 8.8356 - val_mae: 2.3615 - 161ms/epoch - 5ms/step
Epoch 19/100
35/35 - 0s - loss: 8.7957 - mae: 2.2609 - val_loss: 8.2402 - val_mae: 2.2831 - 129ms/epoch - 4ms/step
Epoch 20/100
35/35 - 0s - loss: 7.9942 - mae: 2.1919 - val_loss: 8.3671 - val_mae: 2.3006 - 121ms/epoch - 3ms/step
Epoch 21/100
35/35 - 0s - loss: 7.8683 - mae: 2.1328 - val_loss: 8.2716 - val_mae: 2.2905 - 128ms/epoch - 4ms/step
Epoch 22/100
35/35 - 0s - loss: 7.8669 - mae: 2.1433 - val_loss: 8.5849 - val_mae: 2.3280 - 141ms/epoch - 4ms/step
Epoch 23/100
35/35 - 0s - loss: 7.8083 - mae: 2.1325 - val_loss: 8.3812 - val_mae: 2.2991 - 118ms/epoch - 3ms/step
Epoch 24/100
35/35 - 0s - loss: 7.5037 - mae: 2.1263 - val_loss: 7.8239 - val_mae: 2.2207 - 136ms/epoch - 4ms/step
Epoch 25/100
35/35 - 0s - loss: 7.2526 - mae: 2.0683 - val_loss: 7.6170 - val_mae: 2.1905 - 136ms/epoch - 4ms/step
Epoch 26/100
35/35 - 0s - loss: 7.3566 - mae: 2.0956 - val_loss: 7.5788 - val_mae: 2.1859 - 117ms/epoch - 3ms/step
Epoch 27/100
35/35 - 0s - loss: 7.3226 - mae: 2.0924 - val_loss: 7.3980 - val_mae: 2.1556 - 121ms/epoch - 3ms/step
Epoch 28/100
35/35 - 0s - loss: 7.0259 - mae: 2.0255 - val_loss: 7.1893 - val_mae: 2.1315 - 110ms/epoch - 3ms/step
Epoch 29/100
35/35 - 0s - loss: 6.9706 - mae: 2.0267 - val_loss: 7.6447 - val_mae: 2.1907 - 127ms/epoch - 4ms/step
Epoch 30/100
35/35 - 0s - loss: 7.1236 - mae: 2.0415 - val_loss: 7.6617 - val_mae: 2.1933 - 100ms/epoch - 3ms/step
Epoch 31/100
35/35 - 0s - loss: 7.0241 - mae: 2.0529 - val_loss: 7.2968 - val_mae: 2.1448 - 130ms/epoch - 4ms/step
Epoch 32/100
35/35 - 0s - loss: 6.9969 - mae: 2.0246 - val_loss: 7.0171 - val_mae: 2.1071 - 141ms/epoch - 4ms/step
Epoch 33/100
35/35 - 0s - loss: 6.7159 - mae: 2.0003 - val_loss: 7.1934 - val_mae: 2.1289 - 144ms/epoch - 4ms/step
Epoch 34/100
35/35 - 0s - loss: 6.8124 - mae: 2.0064 - val_loss: 7.2571 - val_mae: 2.1368 - 134ms/epoch - 4ms/step
Epoch 35/100
35/35 - 0s - loss: 6.7147 - mae: 2.0131 - val_loss: 7.1206 - val_mae: 2.1231 - 100ms/epoch - 3ms/step
Epoch 36/100
35/35 - 0s - loss: 6.4522 - mae: 1.9587 - val_loss: 7.2795 - val_mae: 2.1438 - 117ms/epoch - 3ms/step
Epoch 37/100
35/35 - 0s - loss: 6.4027 - mae: 1.9399 - val_loss: 6.9770 - val_mae: 2.1029 - 118ms/epoch - 3ms/step
Epoch 38/100
35/35 - 0s - loss: 6.7294 - mae: 1.9858 - val_loss: 7.3907 - val_mae: 2.1554 - 133ms/epoch - 4ms/step
Epoch 39/100
35/35 - 0s - loss: 6.6779 - mae: 1.9755 - val_loss: 7.3033 - val_mae: 2.1443 - 133ms/epoch - 4ms/step
Epoch 40/100
35/35 - 0s - loss: 6.3536 - mae: 1.9407 - val_loss: 7.3982 - val_mae: 2.1558 - 132ms/epoch - 4ms/step
Epoch 41/100
35/35 - 0s - loss: 6.1189 - mae: 1.8888 - val_loss: 7.4905 - val_mae: 2.1671 - 166ms/epoch - 5ms/step
Epoch 42/100
35/35 - 0s - loss: 6.3222 - mae: 1.9528 - val_loss: 7.2913 - val_mae: 2.1424 - 145ms/epoch - 4ms/step
Epoch 43/100
35/35 - 0s - loss: 6.0496 - mae: 1.8928 - val_loss: 7.3038 - val_mae: 2.1428 - 103ms/epoch - 3ms/step
Epoch 44/100
35/35 - 0s - loss: 6.1697 - mae: 1.9133 - val_loss: 7.1041 - val_mae: 2.1174 - 116ms/epoch - 3ms/step
Epoch 45/100
35/35 - 0s - loss: 6.0747 - mae: 1.8942 - val_loss: 7.2181 - val_mae: 2.1319 - 100ms/epoch - 3ms/step
Epoch 46/100
35/35 - 0s - loss: 6.1032 - mae: 1.8981 - val_loss: 7.2819 - val_mae: 2.1444 - 125ms/epoch - 4ms/step
Epoch 47/100
35/35 - 0s - loss: 5.9089 - mae: 1.8492 - val_loss: 7.3566 - val_mae: 2.1536 - 209ms/epoch - 6ms/step
Epoch 48/100
35/35 - 0s - loss: 5.9339 - mae: 1.8704 - val_loss: 7.5208 - val_mae: 2.1723 - 145ms/epoch - 4ms/step
Epoch 49/100
35/35 - 0s - loss: 5.9158 - mae: 1.8669 - val_loss: 7.0974 - val_mae: 2.1179 - 132ms/epoch - 4ms/step
Epoch 50/100
35/35 - 0s - loss: 6.1467 - mae: 1.9000 - val_loss: 7.5650 - val_mae: 2.1740 - 120ms/epoch - 3ms/step
Epoch 51/100
35/35 - 0s - loss: 5.7831 - mae: 1.8571 - val_loss: 7.2124 - val_mae: 2.1308 - 95ms/epoch - 3ms/step
Epoch 52/100
35/35 - 0s - loss: 5.9497 - mae: 1.8771 - val_loss: 7.0762 - val_mae: 2.1129 - 103ms/epoch - 3ms/step
Epoch 53/100
35/35 - 0s - loss: 5.9258 - mae: 1.8859 - val_loss: 7.0286 - val_mae: 2.1070 - 96ms/epoch - 3ms/step
Epoch 54/100
35/35 - 0s - loss: 5.8689 - mae: 1.8597 - val_loss: 7.0355 - val_mae: 2.1076 - 124ms/epoch - 4ms/step
Epoch 55/100
35/35 - 0s - loss: 5.9013 - mae: 1.8706 - val_loss: 6.9258 - val_mae: 2.0962 - 116ms/epoch - 3ms/step
Epoch 56/100
35/35 - 0s - loss: 5.9331 - mae: 1.8692 - val_loss: 6.9211 - val_mae: 2.0971 - 131ms/epoch - 4ms/step
Epoch 57/100
35/35 - 0s - loss: 5.8113 - mae: 1.8383 - val_loss: 6.6071 - val_mae: 2.0593 - 175ms/epoch - 5ms/step
Epoch 58/100
35/35 - 0s - loss: 5.8236 - mae: 1.8533 - val_loss: 6.7861 - val_mae: 2.0816 - 120ms/epoch - 3ms/step
Epoch 59/100
35/35 - 0s - loss: 5.6544 - mae: 1.8195 - val_loss: 7.0261 - val_mae: 2.1116 - 118ms/epoch - 3ms/step
Epoch 60/100
35/35 - 0s - loss: 5.6879 - mae: 1.8207 - val_loss: 6.8581 - val_mae: 2.0892 - 128ms/epoch - 4ms/step
Epoch 61/100
35/35 - 0s - loss: 5.5524 - mae: 1.8078 - val_loss: 6.9690 - val_mae: 2.1035 - 111ms/epoch - 3ms/step
Epoch 62/100
35/35 - 0s - loss: 5.4592 - mae: 1.7928 - val_loss: 7.0661 - val_mae: 2.1131 - 139ms/epoch - 4ms/step
Epoch 63/100
35/35 - 0s - loss: 5.4823 - mae: 1.8026 - val_loss: 7.0461 - val_mae: 2.1132 - 130ms/epoch - 4ms/step
Epoch 64/100
35/35 - 0s - loss: 5.5791 - mae: 1.7938 - val_loss: 7.0089 - val_mae: 2.1107 - 127ms/epoch - 4ms/step
Epoch 65/100
35/35 - 0s - loss: 5.6012 - mae: 1.8074 - val_loss: 6.7983 - val_mae: 2.0854 - 143ms/epoch - 4ms/step
Epoch 66/100
35/35 - 0s - loss: 5.4107 - mae: 1.7948 - val_loss: 6.7428 - val_mae: 2.0785 - 105ms/epoch - 3ms/step
Epoch 67/100
35/35 - 0s - loss: 5.4180 - mae: 1.7788 - val_loss: 6.8353 - val_mae: 2.0883 - 120ms/epoch - 3ms/step
Epoch 68/100
35/35 - 0s - loss: 5.8954 - mae: 1.8555 - val_loss: 7.0235 - val_mae: 2.1135 - 109ms/epoch - 3ms/step
Epoch 69/100
35/35 - 0s - loss: 5.4978 - mae: 1.7954 - val_loss: 6.6084 - val_mae: 2.0624 - 128ms/epoch - 4ms/step
Epoch 70/100
35/35 - 0s - loss: 5.3761 - mae: 1.7885 - val_loss: 6.9125 - val_mae: 2.1003 - 149ms/epoch - 4ms/step
Epoch 71/100
35/35 - 0s - loss: 5.5138 - mae: 1.8007 - val_loss: 6.9223 - val_mae: 2.1011 - 152ms/epoch - 4ms/step
Epoch 72/100
35/35 - 0s - loss: 5.2712 - mae: 1.7510 - val_loss: 6.8331 - val_mae: 2.0917 - 144ms/epoch - 4ms/step
Epoch 73/100
35/35 - 0s - loss: 5.4027 - mae: 1.7830 - val_loss: 6.9808 - val_mae: 2.1094 - 107ms/epoch - 3ms/step
Epoch 74/100
35/35 - 0s - loss: 5.4151 - mae: 1.7932 - val_loss: 6.7499 - val_mae: 2.0819 - 97ms/epoch - 3ms/step
Epoch 75/100
35/35 - 0s - loss: 5.5885 - mae: 1.8018 - val_loss: 6.7995 - val_mae: 2.0868 - 106ms/epoch - 3ms/step
Epoch 76/100
35/35 - 0s - loss: 5.2973 - mae: 1.7667 - val_loss: 6.7838 - val_mae: 2.0841 - 110ms/epoch - 3ms/step
Epoch 77/100
35/35 - 0s - loss: 5.1331 - mae: 1.7572 - val_loss: 6.7855 - val_mae: 2.0861 - 120ms/epoch - 3ms/step
Epoch 78/100
35/35 - 0s - loss: 5.2982 - mae: 1.7695 - val_loss: 6.9123 - val_mae: 2.1020 - 147ms/epoch - 4ms/step
Epoch 79/100
35/35 - 0s - loss: 5.1970 - mae: 1.7618 - val_loss: 7.0425 - val_mae: 2.1172 - 150ms/epoch - 4ms/step
Epoch 80/100
35/35 - 0s - loss: 5.1213 - mae: 1.7347 - val_loss: 6.9393 - val_mae: 2.1064 - 126ms/epoch - 4ms/step
Epoch 81/100
35/35 - 0s - loss: 4.9752 - mae: 1.7126 - val_loss: 6.9618 - val_mae: 2.1093 - 101ms/epoch - 3ms/step
Epoch 82/100
35/35 - 0s - loss: 5.2133 - mae: 1.7557 - val_loss: 6.9508 - val_mae: 2.1074 - 103ms/epoch - 3ms/step
Epoch 83/100
35/35 - 0s - loss: 5.1887 - mae: 1.7503 - val_loss: 6.7994 - val_mae: 2.0911 - 134ms/epoch - 4ms/step
Epoch 84/100
35/35 - 0s - loss: 5.0272 - mae: 1.7186 - val_loss: 6.6879 - val_mae: 2.0785 - 125ms/epoch - 4ms/step
Epoch 85/100
35/35 - 0s - loss: 4.9678 - mae: 1.7041 - val_loss: 6.6885 - val_mae: 2.0801 - 168ms/epoch - 5ms/step
Epoch 86/100
35/35 - 0s - loss: 5.0305 - mae: 1.7090 - val_loss: 6.8096 - val_mae: 2.0942 - 142ms/epoch - 4ms/step
Epoch 87/100
35/35 - 0s - loss: 5.2830 - mae: 1.7551 - val_loss: 6.7551 - val_mae: 2.0885 - 134ms/epoch - 4ms/step
Epoch 88/100
35/35 - 0s - loss: 5.1534 - mae: 1.7129 - val_loss: 6.6932 - val_mae: 2.0802 - 104ms/epoch - 3ms/step
Epoch 89/100
35/35 - 0s - loss: 5.0536 - mae: 1.7280 - val_loss: 6.9441 - val_mae: 2.1138 - 96ms/epoch - 3ms/step
Epoch 90/100
35/35 - 0s - loss: 5.2024 - mae: 1.7318 - val_loss: 7.0670 - val_mae: 2.1277 - 100ms/epoch - 3ms/step
Epoch 91/100
35/35 - 0s - loss: 5.0419 - mae: 1.7239 - val_loss: 7.1798 - val_mae: 2.1406 - 122ms/epoch - 3ms/step
Epoch 92/100
35/35 - 0s - loss: 5.0253 - mae: 1.7065 - val_loss: 6.9327 - val_mae: 2.1076 - 130ms/epoch - 4ms/step
Epoch 93/100
35/35 - 0s - loss: 5.1358 - mae: 1.7352 - val_loss: 7.0790 - val_mae: 2.1305 - 126ms/epoch - 4ms/step
Epoch 94/100
35/35 - 0s - loss: 5.0359 - mae: 1.7150 - val_loss: 6.9794 - val_mae: 2.1165 - 183ms/epoch - 5ms/step
Epoch 95/100
35/35 - 0s - loss: 5.0032 - mae: 1.7111 - val_loss: 7.1453 - val_mae: 2.1391 - 128ms/epoch - 4ms/step
Epoch 96/100
35/35 - 0s - loss: 4.7378 - mae: 1.6901 - val_loss: 7.1783 - val_mae: 2.1444 - 97ms/epoch - 3ms/step
Epoch 97/100
35/35 - 0s - loss: 4.8610 - mae: 1.7095 - val_loss: 7.2970 - val_mae: 2.1621 - 105ms/epoch - 3ms/step
Epoch 98/100
35/35 - 0s - loss: 4.9318 - mae: 1.6982 - val_loss: 6.9905 - val_mae: 2.1197 - 124ms/epoch - 4ms/step
Epoch 99/100
35/35 - 0s - loss: 4.8938 - mae: 1.6759 - val_loss: 7.2264 - val_mae: 2.1508 - 203ms/epoch - 6ms/step
Epoch 100/100
35/35 - 0s - loss: 5.0410 - mae: 1.7322 - val_loss: 7.1220 - val_mae: 2.1379 - 144ms/epoch - 4ms/step
22/22 - 0s - 104ms/epoch - 5ms/step
88/88 - 0s - 110ms/epoch - 1ms/step

10 LandWorm results

10.1 Prediction of total abundance

The best algorithm for total abundance is: RF

10.2 Prediction of total biomass

The best algorithm for total Biomass is: RF

10.3 Prediction of total taxonomic richness

The best algorithm for total Richness is: RF

10.4 Best algorithm (RF)


10.5 Table LandWorm results

back to Plan

11 Importance and effects of variables

11.1 Abundance

Plan

Importance of predictors

Predictor effects

Predictor interactions

Predictor interactions: Land use

Plan

11.2 Biomass

Plan

Importance of predictors

Predictor effects

Predictor interactions

Predictor interactions: Land use

Plan

11.3 Richness

Plan

Importance of predictors

Predictor effects

Predictor interactions

Predictor interactions: Land use

Plan

11.4 Importance of variables

12 Prediction and mapping

12.1 Sampling

  • 800m regular grid

  • Stores gps coordinates

12.2 Extraction

  • CLC
  • Limon (g/kg, 0 - 30 cm)
  • Argile (g/kg, 0 - 30 cm)
  • Phosphore (P, mg/kg)
  • Azote (N, g/kg)
  • Carbonates de calcium (CaCO3, g/kg)
  • Climat

12.3 Import best models

  • Cleaning

  • Predictions

12.4 Interpolation

                               +-----------------+-------------+
                               |        Donnée d'entrée:       |
                               |        données prédite        |
                               +----------------+--------------+
                                                 |
                                                 |
                                                 v
                               +-----------------+-------------+
                               |    Modèle d'interpolation     |
                               |        idw (nmax = 10)        |
                               +----------------+--------------+
                                                 |
                                                 |
                                                 v
                               +-----------------+-------------+
                               |                               |
                               |        Nouvelles données      |
                               |        à prédire              |
                               |        ()                     |
                               |                               |
                               +----------------+--------------+
                                                 |
                                                 |
                                                 v
                               +-----------------+-------------+
                               |                               |
                               |      Prédictions de l'IDW     |
                               |                               |
                               +-------------------------------+

12.5

# A tibble: 1 × 7
  format width height colorspace matte filesize density
  <chr>  <int>  <int> <chr>      <lgl>    <int> <chr>  
1 PNG      640    480 sRGB       TRUE     48195 39x39  
Reading layer `france_shapefile_sans_corse' from data source 
  `C:\Users\diall\OneDrive\Bureau\M2_MODE\stage_abdou_m2\R_Stage_M2\cartographie\france_shapefile_sans_corse.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 12 features and 4 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -5.141277 ymin: 42.33292 xmax: 8.232497 ymax: 51.08899
Geodetic CRS:  +proj=longlat +datum=WGS84 +no_defs

12.6 Abundance

12.7 Biomass

12.8 Richness

12.9 Approximate earthworm diversity

12.10 Mapview

See Mapping earthworm prediction inFrance

back to Plan

13 Internship report

  • Introduction (80 %)

  • M & M (85 %)

  • Résultats (30 %)

  • Discussion (10 %)

  • Conclusion (0 %)

  • Autres (0 %)

( Stage_abdou.docx )

back to Plan

13.1 Cate M&M

13.2 Carte CLC

13.3 Redaction results

13.4 Test outliers

  • Aberrant values (example de Azote (N, g/kg) )

                                   +-------------------------------+
                                   |                               |
                                   |        Données d'entrée       |
                                   |          (data)               |
                                   |                               |
                                   +------------+------------------+
                                                |
                                                |
                                                v
                                   +-------------------------------+
                                   |                               |
                                   |        Test de Grub           |
                                   |          (data)               |
                                   |                               |
                                   +------------+------------------+
                                                |
                                                |
                         +----------------------|---------------------+
                         |                      |                     |
                         |                      |                     |
                         |                      |                     |
                         |     +----------------|-------------+       |
                         |     |                |             |       |
                         |     |                |             |       |
                         |     v                v             v       |
                         |                                            |
                         |    (opposite = FALSE) (opposite = TRUE)    |
                         |                      |                     |
                         |                      |                     |
                         |     +----------------|-------------+       |
                         |     |                |             |       |
                         |     |                |             |       |
                         |     v                v             v       |
                         |    Obtenir p-valeur  Obtenir p-valeur      |
                         |                      |                     |
                         |                      |                     |
                         |     +----------------|-------------+       |
                         |     |                |             |       |
                         |     |                |             |       |
                         |     v                v             v       |
                         |   Si p-value < 0.05  Si p-value < 0.05     |
                         |     Supprimer valeur  Supprimer valeur     |
                         |     aberrante         aberrante            |
                         |                      |                     |
                         |                      |                     |
                         |     +----------------|-------------+       |
                         |     |                |             |       |
                         |     |                |             |       |
                         |     v                v             v       |
                         |    Répéter            Répéter              |
                         |                      |                     |
                         |                      |                     |
                         +----------------------|---------------------+
                                                |
                                                |
                                                v
                                    +-----------+--------------+
                                    |                          |
                                    |        Données           |
                                    |       traitées           |
                                    |                          |
                                    +--------------------------+

    back to Plan

13.5 To do next

  • Worskshop prediction in Montpellier (du 27 au 31 mai)

  • Rédaction (jusqu’au 05 juin)

  • Préparation soutenance (du 05 au 19 juin)

  • Rédaction/Publication (du 21 juin jusqu’au 31 juillet)

info: ICSZ Afrique du Sud (du 26 au 30 Août)

back to Plan