Skip to content

Commit a30677a

Browse files
author
EmmaCartuyvels1
committed
Update name to fit naming conventions
1 parent 117225e commit a30677a

File tree

1 file changed

+108
-14
lines changed

1 file changed

+108
-14
lines changed

source/data_analysis_SPRING2023.Rmd renamed to source/data_analysis_spring_2023.Rmd

Lines changed: 108 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Data analyse SPRING Flanders"
33
author: "Emma Cartuyvels, Hans Van Calster"
4-
date: "2024-07-09"
4+
date: "2024-07-30"
55
output:
66
bookdown::html_document2:
77
code_folding: hide
@@ -11,8 +11,6 @@ editor_options:
1111
chunk_output_type: console
1212
---
1313

14-
# nolint start: object_usage_linter.
15-
1614
# Inleiding
1715

1816
```{r setup, include=FALSE}
@@ -54,7 +52,7 @@ venn <- function(data, group, count_id = "species_nm") {
5452
for (i in groups) {
5553
int <- data %>%
5654
filter(
57-
time_series == 0,
55+
.data$time_series == 0,
5856
!!sym(group) == i
5957
) %>%
6058
distinct(!!sym(count_id)) %>%
@@ -64,7 +62,7 @@ venn <- function(data, group, count_id = "species_nm") {
6462
}
6563
6664
ggVennDiagram::ggVennDiagram(x, label_alpha = 0, edge_size = 0.75) +
67-
scale_fill_distiller(palette = "Greens") +
65+
scale_fill_distiller(palette = "Greens", direction = 1) +
6866
scale_x_continuous(expand = c(0.2, 0.2)) +
6967
theme(legend.position = "none")
7068
}
@@ -74,7 +72,7 @@ venn <- function(data, group, count_id = "species_nm") {
7472
rarefaction <- function(data) {
7573
rrf <- data %>%
7674
pivot_wider(
77-
names_from = species_nm,
75+
names_from = .data$species_nm,
7876
values_from = n,
7977
values_fill = 0
8078
) %>%
@@ -88,8 +86,8 @@ rarefaction <- function(data) {
8886
sd = rrf[["sd"]]
8987
) %>%
9088
mutate(
91-
lwr = richness - 2 * sd,
92-
upr = richness + 2 * sd
89+
lwr = .data$richness - 2 * .data$sd,
90+
upr = .data$richness + 2 * .data$sd
9391
) # sd standard error of the estimate
9492
}
9593
```
@@ -331,7 +329,7 @@ We plotten de locaties van de transecten en pan traps om te controleren dat alle
331329
```{r map-transecten}
332330
plottransecten <- function(x) {
333331
ggplot(x) +
334-
geom_sf(aes(colour = transect_sectie)) +
332+
geom_sf(aes(colour = .data$transect_sectie)) +
335333
labs(title = x$location_code[[1]])
336334
}
337335
@@ -627,6 +625,10 @@ De hoge waarden voor collineariteit (Fig. \@ref(fig:check2)) zijn in dit geval g
627625
car::Anova(model1)
628626
```
629627

628+
```{r}
629+
emmeans::emmeans(model1, pairwise ~ method_combi)
630+
emmeans::emmeans(model1, pairwise ~ method_combi * taxgroup)
631+
```
630632

631633
```{r check2, fig.height=12, fig.cap = "Visuele controle van verschillende modelaannames."}
632634
performance::check_model(model1)
@@ -740,6 +742,98 @@ marginaleffects::plot_predictions(
740742
)
741743
```
742744

745+
## Effect aantal bloemen
746+
747+
```{r}
748+
flowers <- read_xlsx(here::here("data", "Number of flowers.xlsx")) |>
749+
janitor::clean_names()
750+
```
751+
752+
```{r}
753+
flowers <- flowers |>
754+
left_join(apoidea_richness |>
755+
select(n_ind_ap = n_ind,
756+
n_species_ap = n_species,
757+
sample_code),
758+
by = join_by(sampling_site_cd == sample_code)) |>
759+
left_join(syrphidae_richness |>
760+
select(n_ind_syr = n_ind,
761+
n_species_syr = n_species,
762+
sample_code),
763+
by = join_by(sampling_site_cd == sample_code))
764+
```
765+
766+
```{r}
767+
flowers |>
768+
ggplot(aes(x = number_of_floral_units, y = n_species_ap)) +
769+
geom_point() +
770+
geom_smooth(method = "lm")
771+
```
772+
773+
```{r}
774+
model1 <- lm(n_ind_ap ~ number_of_floral_units, data = flowers |>
775+
filter(number_of_floral_units < 4000))
776+
summary(model1)
777+
778+
model2 <- lm(n_species_ap ~ number_of_floral_units, data = flowers |>
779+
filter(number_of_floral_units < 4000))
780+
summary(model2)
781+
782+
model3 <- lm(n_ind_syr ~ number_of_floral_units, data = flowers |>
783+
filter(number_of_floral_units < 4000))
784+
summary(model3)
785+
786+
model4 <- lm(n_species_syr ~ number_of_floral_units, data = flowers |>
787+
filter(number_of_floral_units < 4000))
788+
summary(model4)
789+
```
790+
791+
No significant effect of number of floral units on number of species or number of individuals caught, effect becomes even less significant when removing one strong outlier.
792+
793+
### Uitgebreid model
794+
```{r}
795+
flowers <- flowers |>
796+
mutate(location_code = str_sub(sampling_site_cd, start = 1L, end = 8L),
797+
maand = str_sub(sampling_site_cd, start = 20L, end = 20L))
798+
```
799+
800+
801+
```{r}
802+
model1 <- glmmTMB(
803+
n_species_ap ~ number_of_floral_units + location_code + maand,
804+
ziformula = ~ 1,
805+
family = "poisson",
806+
na.action = na.exclude,
807+
data = flowers
808+
)
809+
```
810+
811+
```{r}
812+
summary(model1)
813+
```
814+
815+
```{r}
816+
performance::check_model(model1)
817+
```
818+
819+
```{r}
820+
model2 <- glmmTMB(
821+
n_species_syr ~ number_of_floral_units + location_code + maand,
822+
ziformula = ~ 1,
823+
family = "poisson",
824+
na.action = na.exclude,
825+
data = flowers
826+
)
827+
```
828+
829+
```{r}
830+
summary(model2)
831+
```
832+
833+
```{r}
834+
performance::check_model(model2)
835+
```
836+
743837
# Kosten
744838

745839
```{r}
@@ -777,7 +871,9 @@ iden_cost <- ((time_data[14, 7] * mean_ap) + (time_data[15, 7] * mean_syr)) |>
777871
pull(prijs)
778872
```
779873

780-
Één staal (één pan trap of transect van 50 m) bevat gemiddelde `r round(mean_ap, 2)` soorten apoidea en `r round(mean_syr, 2)` soorten syrphidae. Dat betekend dat één staal uitsorteren ons `r round(iden_cost, 2)` euro aan loon kost. We nemen het gemiddelde om methoden die meer soorten opleveren niet af te straffen.
874+
Één staal (één pan trap of transect van 50 m) bevat gemiddelde `r round(mean_ap, 2)` soorten apoidea en `r round(mean_syr, 2)` soorten syrphidae. Dat betekend dat het identificeren van de soorten in één staal ons `r round(iden_cost, 2)` euro aan loon kost. We nemen het gemiddelde om methoden die meer van de gewenste soorten opleveren niet af te straffen.
875+
876+
Verderop bekijken we wel de verschillende tijden die nodig zijn voor het uitsorteren van een staal (bijen en zweefvliegen van andere families scheiden). Dit omdat specifieke methoden, zoals bv. het plaatsen van een pan trap op de grond, kunnen leiden tot hogere restfracties dan andere.
781877

782878
```{r}
783879
verpl <- cost_data %>%
@@ -813,15 +909,15 @@ time_data %>%
813909
submethode, prijs
814910
)) %>%
815911
arrange(submethode) |>
816-
kableExtra::kable(digits = 0)
912+
kableExtra::kable(digits = 2)
817913
```
818914

819915

820916
Variabele kosten transecten:
821917
```{r}
822918
time_data %>%
823919
filter(methode == "TS") %>%
824-
kableExtra::kable(digits = 0)
920+
kableExtra::kable(digits = 2)
825921
```
826922

827923
## Scenario's
@@ -947,5 +1043,3 @@ Laat ons tot slot twee volledige scenario's met elkaar vergelijken:
9471043
- Totale kost: 53 300 euro per jaar
9481044

9491045
Beide scenario's vereisen een senior wetenschapper die het project opvolgt en een coördinator die het veldwerk aanstuurt, wel kan er vanuit worden gegaan dat deze coördinator meer werk zou hebben met vrijwilligers. Voorlopig ben ik van een metabarcoding kost van 70 euro per staal uit gegaan, vermoedelijk komt hier nog werk voor een bioinformaticus aan te pas.
950-
951-
# nolint end: object_usage_linter.

0 commit comments

Comments
 (0)