Toutes nos données concernent uniquement la Bretagne continentale.
Nous remarquons toujours beaucoup de données de VisioNature dont la
technique d’observation est inconnue.
GeoNature observe principalement des indices de rodents et de
carnivores. Les lagomorphes sont peu remarqués avec les indices,
comparés aux autres dans VisioNature et GeoNature.
Dans la BDD GeoNature, principalement des carnivores, puis relativement uniformément les 4 autres ordres. C’est peut-être dû au fort intérêt de GMB pour la loutre, mais ce n’est pas tant le cas que ça (voir figure de la répartition des ordres sans le loutres)
Nous nous sommes demandés à quoi ressemblerait la répartition des ordres
sans la loutre car elle est une espèce dont le GMB se préoccupe
beaucoup. Ca ne change pas drastiquement la distribution.
VisioN_FB %>%
count(nom_vernaculaire, ordre, sort = TRUE) %>%
ggplot(aes(x = reorder(nom_vernaculaire, n), y = n, fill = ordre)) +
geom_col(fill = "grey30") +
coord_flip() +
facet_wrap(~ ordre, scales = "free_y") +
labs(
title = "Répartition des espèces",
subtitle = "VisioNature",
y = "Nombre d'observations", x = "Nom vernaculaire"
) +
scale_x_discrete(labels = label_wrap(40)) +
theme_bw() +
theme(
axis.text.y = element_text(size = 8),
strip.text = element_text(face = "bold"),
plot.title = element_text(size = 16),
plot.subtitle = element_text(size = 12)
)
GeoN %>%
count(nom_vernaculaire, ordre, sort = TRUE) %>%
ggplot(aes(x = reorder(nom_vernaculaire, n), y = n, fill = ordre)) +
geom_col(fill = "grey30") +
coord_flip() +
facet_wrap(~ ordre, scales = "free_y") +
labs(
title = "Répartition des espèces",
subtitle = "GeoNature",
y = "Nombre d'observations", x = "Nom vernaculaire"
) +
scale_x_discrete(labels = label_wrap(40)) +
theme_bw() +
theme(
axis.text.y = element_text(size = 8),
strip.text = element_text(face = "bold"),
plot.title = element_text(size = 16),
plot.subtitle = element_text(size = 12)
)
Nous remarquons une inversion entre les lapins et les lièvres entre les deux bases de données. Peut-être lié a la période pendant laquelle les BDD sont remplies.
VisioN_FB%>%
ggplot(aes(date_debut))+
labs(title="Fréquence des observations dans le temps",
subtitle="VisioNature")+
facet_grid(ordre ~ .)+
theme_bw()+
geom_line(stat="density")
GeoN%>%
ggplot(aes(date_debut))+
labs(title="Fréquence des observations dans le temps",
subtitle="GeoNature")+
facet_grid(ordre ~ .)+
theme_bw()+
geom_line(stat="density")
VisioNature a très peu de données avant 2010 et GeoNature avant
1990.
Nous coupons à 2005 pour mieux observer la répartition de nos données.
VisioN_FB%>%
filter(date_debut > as.Date("2005-01-01"))%>%
ggplot(aes(date_debut))+
labs(title="Fréquence des observations dans le temps depuis 2005",
subtitle="VisioNature")+
facet_grid(ordre ~ .)+
theme_bw()+
geom_line(stat="density")
GeoN%>%
filter(date_debut > as.Date("2005-01-01"))%>%
ggplot(aes(date_debut))+
labs(title="Fréquence des observations dans le temps depuis 2005",
subtitle="GeoNature")+
facet_grid(ordre ~ .)+
theme_bw()+
geom_line(stat="density")
J’aurais focalisé l’étude sur la période [2010 - maintenant] pour les
séries temporelles, car avant il y a peu de données.
GéoNature a surtout des données entre 2010 et 2015, et VisioNature
après 2015.
Peut-être que ça pourrait être intéressant de regarder par rapport au nombre d’observateurs? Si il y a plus d’observateurs, alors peut-être qu’il y aura plus d’observations. Peut-être qu’on pourra pondérer là dessus?
La plupart des observations ne contiennent qu’un animal mais certains en
contiennent plusieurs.
Il faudrait peut-être les prendre en compte, mais les données avec
beaucoup d’animaux observés (ex: 400 obs d’un coup) risquent de causer
des problèmes pour créer un modèle.
Ensuite, on a essayer d’observer les proportions d’espèces dans le
temps. Dans “other” il y a toutes les espèces qui représentent moins de
3% des observations de la période.
Nous remarquons que depuis les années 1980, il semble avoir de moins en moins de “other” donc d’espèces peu présentes. Les principales espèces sont peut être de plus en plus dominantes.
Nous remarquons aussi que GeoNature a des données assez differentes pour [2000-2005) que pour les autres périodes avec beaucoup de rats bruns. Nous n’observons pas quelque chose de similaire chez VisioNature.
# Carte bretagne
setwd("~/work/AnalyseDonneesOpportunisteGMB/donnees/DepartementsOuest")
carte_bretagne <- st_read("LIM_ADM_DepartementsOuest.shp")
## Reading layer `LIM_ADM_DepartementsOuest' from data source
## `/home/onyxia/work/AnalyseDonneesOpportunisteGMB/donnees/DepartementsOuest/LIM_ADM_DepartementsOuest.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 5 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99074.43 ymin: 6647488 xmax: 408042.6 ymax: 6885958
## Projected CRS: RGF93 v1 / Lambert-93
carte_bretagne <- st_set_crs(carte_bretagne, 2154)
carte_bretagne <- st_transform(carte_bretagne, 4326)
# GeoNature
GeoN_sf <- st_as_sf(GeoN,
coords = c("x_centroid_4326", "y_centroid_4326"),
crs = 4326)
grid_sf <- st_sf(geometry = st_make_grid(carte_bretagne,
cellsize = c(0.12, 0.09))
)
grid_sf$density <- lengths(st_intersects(grid_sf, GeoN_sf))
grid_sf <- st_intersection(grid_sf, carte_bretagne)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
ggplot() +
geom_sf(data = carte_bretagne) +
labs(title = "Densité des observations en bretagne",
subtitle = "GeoNature") +
geom_sf(data = grid_sf, aes(fill = density)) +
scale_fill_gradient(low="gray97", high="gray15") +
theme_bw()
# VisioNature
VisioN_FB_sf <- st_as_sf(VisioN_FB,
coords = c("x_centroid_4326", "y_centroid_4326"),
crs = 4326)
grid_sf <- st_sf(geometry = st_make_grid(carte_bretagne,
cellsize = c(0.12, 0.09)))
grid_sf$density <- lengths(st_intersects(grid_sf, VisioN_FB_sf))
grid_sf <- st_intersection(grid_sf, carte_bretagne)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
ggplot() +
geom_sf(data = carte_bretagne) +
labs(title = "Densité des observations en bretagne",
subtitle = "VisioNature") +
geom_sf(data = grid_sf, aes(fill = density)) +
scale_fill_gradient(low="grey97", high="gray15") +
theme_bw()
Il semble y avoir un lieu avec une forte densité proche de Sizun dans
la BDD GeoNature. On remarque aussi que les observations ont lieu
surtout au nord-ouest de la Bretagne et au sud entre le Morbihan et
l’Ille-et-Vilaine.
Dans VisioNature, on a deux points avec une très forte densité sont probablement dues à nos deux principaux contributeurs (voir la partie 4), nous décidons de les supprimer pour vérifier.
VisioN_FB_modif <- VisioN_FB%>%
mutate(observateurs = toupper(observateurs))%>%
filter(!observateurs %in% c("BELLIER DANIEL", "CHAPUIS MARTINE"))
VisioN_FB_sf <- st_as_sf(VisioN_FB_modif,
coords = c("x_centroid_4326", "y_centroid_4326"),
crs = 4326)
grid_sf <- st_sf(geometry = st_make_grid(carte_bretagne,
cellsize = c(0.12, 0.09))
)
grid_sf$density <- lengths(st_intersects(grid_sf, VisioN_FB_sf))
grid_sf <- st_intersection(grid_sf, carte_bretagne)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
ggplot() +
geom_sf(data = carte_bretagne) +
labs(title = "Densité des observations en bretagne",
subtitle = "VisioNature, sans les deux principaux observateurs") +
geom_sf(data = grid_sf, aes(fill = density)) +
scale_fill_gradient(low="grey97", high="gray15") +
theme_bw()
# Carte bretagne
setwd("~/work/AnalyseDonneesOpportunisteGMB/donnees/DepartementsOuest")
carte_bretagne <- st_read("LIM_ADM_DepartementsOuest.shp")
## Reading layer `LIM_ADM_DepartementsOuest' from data source
## `/home/onyxia/work/AnalyseDonneesOpportunisteGMB/donnees/DepartementsOuest/LIM_ADM_DepartementsOuest.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 5 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99074.43 ymin: 6647488 xmax: 408042.6 ymax: 6885958
## Projected CRS: RGF93 v1 / Lambert-93
carte_bretagne <- st_set_crs(carte_bretagne, 2154)
carte_bretagne <- st_transform(carte_bretagne, 4326)
# Données geographique
VisioN_sf <- VisioN_FB %>%
dplyr::select(x_centroid_4326,
y_centroid_4326,
ordre,
date_debut) %>%
sf::st_as_sf(coords = c("x_centroid_4326", "y_centroid_4326"),
crs = sf::st_crs(4326))
GeoN_sf <- GeoN %>%
dplyr::select(x_centroid_4326,
y_centroid_4326,
ordre,
date_debut) %>%
sf::st_as_sf(coords = c("x_centroid_4326", "y_centroid_4326"),
crs = sf::st_crs(4326))
ordres <- unique(VisioN_sf$ordre)
grid <- st_make_grid(carte_bretagne, cellsize = c(0.12, 0.09)) %>%
st_sf() %>%
st_set_crs(4326)
# VisioNature
grid_list <- map(ordres, function(o) {
vis_ord <- VisioN_sf %>% filter(ordre == o)
grid_tmp <- grid
grid_tmp$density <- lengths(st_intersects(grid_tmp, vis_ord))
grid_tmp$ordre <- o
grid_tmp
})
grid_sf <- bind_rows(grid_list)
grid_sf <- st_intersection(grid_sf, carte_bretagne)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
ggplot() +
geom_sf(data = carte_bretagne) +
labs(title = "Densité des observations en bretagne selon les ordres",
subtitle = "VisioNature") +
geom_sf(data = grid_sf, aes(fill = density), color = NA) +
scale_fill_gradient(low="gray90", high="gray15") +
theme_bw() +
facet_grid(. ~ ordre)
# GeoNature
grid_list <- map(ordres, function(o) {
vis_ord <- GeoN_sf %>% filter(ordre == o)
grid_tmp <- grid
grid_tmp$density <- lengths(st_intersects(grid_tmp, vis_ord))
grid_tmp$ordre <- o
grid_tmp
})
grid_sf <- bind_rows(grid_list)
grid_sf <- st_intersection(grid_sf, carte_bretagne)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
ggplot() +
geom_sf(data = carte_bretagne) +
labs(title = "Densité des observations en bretagne selon les ordres",
subtitle = "GeoNature") +
geom_sf(data = grid_sf, aes(fill = density), color = NA) +
scale_fill_gradient(low="gray90", high="gray15") +
theme_bw() +
facet_grid(. ~ ordre)
On ne voit pas grand chose sur la carte de VisioNature à part les 2
principaux observateurs.. Concernant la base de données GeoNature, on
dirait que les espèces ont un peu près la même répartition en Bretagne
(nord Finistere et Côte d’Armor et sud Ille-et-Vilaine et Morbihan)
Nous prenons la base de données avec toutes les données et je
selectionne 40 000 ou 50 000 données avec les proportions.
Pour info, la graine aléatoire est figée a 12345.
graph_ordre_tranche_annee <- function(ordre_voulu){
# Creation de la BDD
ordre_data <- Total_B %>% filter(ordre == ordre_voulu)
bdd_props <- prop.table(table(ordre_data$bdd))
n_bdd1 <- round(5000 * bdd_props[1])
n_bdd2 <- 5000 - n_bdd1
bdd1 <- ordre_data %>%
filter(bdd == "GeoN") %>%
sample_n(min(n_bdd1, n()))
bdd2 <- ordre_data %>%
filter(bdd == "VisioN_FB") %>%
sample_n(min(n_bdd2, n()))
ordre_graph <- bind_rows(bdd1, bdd2) %>%
mutate(
grp_date = case_when(
date_debut >= as.Date("2010-01-01") & date_debut <= as.Date("2014-12-31") ~ "1. Entre 2010 et 2015",
date_debut >= as.Date("2015-01-01") & date_debut <= as.Date("2019-12-31") ~ "2. Entre 2015 et 2020",
date_debut > as.Date("2019-12-31") ~ "3. Après 2020",
TRUE ~ NA_character_
)
) %>%
filter(date_debut > as.Date("2010-01-01")) %>%
sample_frac(1)
# Transformation pour des données de la carte
carte_ordre <- ordre_graph %>%
dplyr::select(x_centroid_4326, y_centroid_4326,
grp_date, ordre, date_debut) %>%
sf::st_as_sf(coords = c("x_centroid_4326", "y_centroid_4326"),
crs = sf::st_crs(4326)) %>%
filter(ordre == ordre_voulu)
# Plot
ggplot() +
geom_sf(data = carte_bretagne) +
labs(
title = paste("Carte des observations en Bretagne des", ordre_voulu),
subtitle = "Toutes données"
) +
geom_sf(data = carte_ordre, size = 0.01) +
theme_bw() +
facet_grid(. ~ grp_date)
}
graph_ordre_tranche_annee("Carnivora")
graph_ordre_tranche_annee("Cetartiodactyla")
graph_ordre_tranche_annee("Eulipotyphla")
graph_ordre_tranche_annee("Lagomorpha")
graph_ordre_tranche_annee("Rodentia")
On dirait que plus on avance dans les années, plus on retrouve
d’individus aux sud de la Bretagne. Ceci peut être car nous avons plus
de données de VisioNature au fil du temps qui provient d’ornithologues
et les ornithologues sont souvent proches des littoraux.
Étudier les principaux observateurs peut être important parce qu’ils participent grandement au recueil des données donc un changement de leur comportement implique également un changement du comportement de la base de données.
Ils pourraient introduire des biais:
- pour un endroit du territoire, s’ils enregistent toujours des
observations au même endroit
- pour une espece, s’ils sont intéressé par une espèce
- en enregistrant pendant une durée précise dans le temps
GeoN %>%
summarize(nb_observateurs = n_distinct(observateurs))
## # A tibble: 1 × 1
## nb_observateurs
## <int>
## 1 3092
VisioN_FB %>%
summarize(nb_observateurs = n_distinct(observateurs))
## # A tibble: 1 × 1
## nb_observateurs
## <int>
## 1 3624
Pour GeoNature, il y a en tout 2778 observateurs qui peuvent être une
ou 2 personnes. Certains observateurs sont anonymes et sont attribués un
code.
Pour VisioNature, il y a 3662 observateurs. 1813 des observations
n’ont pas d’observateur attribué.
On transforme tous les noms en majuscule pour éviter des
problèmes.
Nous cherchons les observateurs qui ont le plus contribué aux deux
bases de données.
GeoN_summary <- GeoN %>%
group_by(observateurs) %>%
summarize(nbr_obs_obr = n()) %>%
filter(nbr_obs_obr > 200) %>%
arrange(nbr_obs_obr)
GeoN_summary$observateurs <- factor(GeoN_summary$observateurs,
levels = GeoN_summary$observateurs)
VisioN_summary <- VisioN_FB %>%
group_by(observateurs) %>%
summarize(nbr_obs_obr = n()) %>%
filter(nbr_obs_obr > 400) %>%
arrange(nbr_obs_obr)
VisioN_summary$observateurs <- factor(VisioN_summary$observateurs,
levels = VisioN_summary$observateurs)
GeoN_summary%>%
ggplot(aes(x=observateurs, y=nbr_obs_obr)) +
geom_point() +
geom_segment( aes(x=observateurs, xend=observateurs,
y=0, yend=nbr_obs_obr))+
coord_flip()+
labs(title="Lollipop plot des principaux observateurs",
subtitle="GeoNature")+
theme_bw()
ggplot(VisioN_summary, aes(x=observateurs, y=nbr_obs_obr)) +
geom_point() +
geom_segment( aes(x=observateurs, xend=observateurs,
y=0, yend=nbr_obs_obr))+
coord_flip()+
labs(title="Lollipop plot des principaux observateurs",
subtitle="VisioNature")+
theme_bw()
Nous remarquons que nous avons des observateurs avec un très grand nombre d’observations comme attendu. Nous ne savons pas si deleted deleted est un observateur. Nous pouvons imaginer que c’est les observations de tous les membres qui ont supprimés leurs comptes.
Pour étudier facilement leur données, nous créons une fonction qui donne rapidement quelques graphiques.
stats_observateur <- function(nom_obs, bdd, carte){
# Date
p1 <- bdd %>%
filter(observateurs == toupper(nom_obs),
date_debut > as.Date("2010-01-01")) %>%
ggplot(aes(date_debut))+
labs(title="Répartition des dates",
subtitle = paste("Données de ", toupper(nom_obs))) +
theme_bw()+
geom_line(stat="density")+
scale_x_date(
breaks = seq(from = min(bdd$date_debut),
to = max(bdd$date_debut),
by = "2 years"),
labels = scales::label_date("%Y")
)
# Ordres
p2 <- bdd %>%
filter(observateurs == toupper(nom_obs)) %>%
ggplot(aes(x = ordre)) +
geom_bar() +
labs(title = "Répartition des differents ordres",
subtitle = paste("Données de ", toupper(nom_obs))) +
theme_bw()+
theme(axis.text.x = element_text(angle = 30, hjust = 0.5, vjust = 0.5))
# Carte
geo_obsteur <- bdd %>%
filter(date_debut > as.Date("2010-01-01")) %>%
filter(observateurs == toupper(nom_obs)) %>%
dplyr::select(x_centroid_4326,
y_centroid_4326,
ordre,
date_debut) %>%
sf::st_as_sf(coords = c("x_centroid_4326", "y_centroid_4326"),
crs = sf::st_crs(4326))
p3 <- ggplot() +
geom_sf(data = carte) +
labs(title = "Carte des observations",
subtitle = paste("Données de ", toupper(nom_obs))) +
geom_sf(data = geo_obsteur, size=0.01) +
theme_bw()
# Affichage des plots
p1 + p2 + p3
}
setwd("~/work/AnalyseDonneesOpportunisteGMB/donnees/DepartementsOuest")
carte_bretagne <- st_read("LIM_ADM_DepartementsOuest.shp")
## Reading layer `LIM_ADM_DepartementsOuest' from data source
## `/home/onyxia/work/AnalyseDonneesOpportunisteGMB/donnees/DepartementsOuest/LIM_ADM_DepartementsOuest.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 5 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 99074.43 ymin: 6647488 xmax: 408042.6 ymax: 6885958
## Projected CRS: RGF93 v1 / Lambert-93
carte_bretagne <- st_set_crs(carte_bretagne, 2154)
carte_bretagne <- st_transform(carte_bretagne, 4326)
stats_observateur(nom_obs="BELLIER DANIEL",
bdd=VisioN_FB,
carte=carte_bretagne)
stats_observateur(nom_obs="CHAPUIS MARTINE",
bdd=VisioN_FB,
carte=carte_bretagne)
stats_observateur(nom_obs="SéITé FRANçOIS",
bdd=VisioN_FB,
carte=carte_bretagne)
stats_observateur(nom_obs="deleted deleted",
bdd=VisioN_FB,
carte=carte_bretagne)
stats_observateur(nom_obs="simonnet franck",
bdd=GeoN,
carte=carte_bretagne)
stats_observateur(nom_obs="le campion thomas",
bdd=GeoN,
carte=carte_bretagne)
Nous remarquons que:
- BELLIER DANIEL observe beaucoup de rongeurs autour de Rennes.
- CHAPUIS MARTINE observe uniquement a un endroit précis.
- DELETED DELETED, semble être surtout dans le finistère ce qui est
étonnant si ce sont plusieurs personnes.