rm(list = ls())
knitr::opts_chunk$set(echo = TRUE,
message = FALSE,
warning = FALSE,
fig.align = 'center',
dev = 'jpeg',
dpi = 300,
fig.align='center')
#XQuartz is a mess, put this in your onload to default to cairo instead
options(bitmapType = "cairo")
# (https://github.com/tidyverse/ggplot2/issues/2655)
# Lo mapas se hacen mas rapido
library(tidyverse)
library(ggridges)
library(readxl)
library(here)
library(lubridate)
library(readr)
library(ggthemes)
library(hrbrthemes)
library(viridis)
library(kableExtra)
library(ggalt)
library(psych)
library(ggpubr)
En este codigo, se establecen dos formas de estimar el indice de reclutamiento para coquina. El primero es la forma que se ha estado usando desde Delgado & Caparro (2015). El segundo es una nueva propuesta basada en la prorporcionalidad de individuos basados en los muestreos poblacionales
D15
)Recordar que las bases de densidades previas al 2021 estan en la misma base que las longitudes. pero he encontrado un archivo que tiene una síntesis.
dens17_20 <- read_excel(here("Data",
"Anterior a 2020",
"densidad_reclutamiento_2017_2018_2019_2020.xlsx"))
Llamo las bases con el formato último, es decir desde el año 2021.
dens2021pob <- read_excel(here("Data",
"Posterior 2020",
"Data_sample_FEMP_04_2021.xlsx"),
sheet = "Data_POBL")
dens2022pob <- read_excel(here("Data",
"Posterior 2020",
"Data_sample_FEMP_04_2022.xlsx"),
sheet = "Data_POBL")
dens2023pob <- read_excel(here("Data",
"Posterior 2020",
"Data_sample_FEMP_04_2023.xlsx"),
sheet = "Data_POBL")
dens2024pob <- read_excel(here("Data",
"Posterior 2020",
"Data_sample_FEMP_04_2024.xlsx"),
sheet = "Data_POBL")
Visualizo los datos y su estructura. Para replicar los procesos de
calculos en las hojas excel, usaremos solo las columnas con datos
crudos. Es decir, desde Date
hasta MCSWsub
, y
algunas columnas finales. La idea es hacer los cálculos en el codigo
para tener la secuencia y replicar los resultados informados por Delgado & Silva (2023).
Primero comenzamos con los datos estandarizados del os años 2021 al
2023. Luego juntamos la data. En ambos muestreos COMERCIAL
y
POBLACIONAL
dejo las siguientes columas;
Date
= FechaBeach
= PlayaSampling.point
=punto de Muestreom_track
= distancia de arrastre (mts)tow_time
= tiempo de arrastre (minutos)Latº
Latmin
Longº
Longmin
Lat
Long
rastro
mariscador
SW
= Peso total de la muestra ( cascajo, coquina,
fauna)SWsub
= SubMuestra de SW
CSWsub
= Peso coquina contenida en
SWsub
CMSWsub
= Peso de toda la coquina comercial sub (>25
mm) (Columna solo en base COMERCIAL
)MCSWsub
= Peso de la coquina medida de
CSWsub
real*DCSWsub
= Peso de la coquina con daños en la muestra
SWsub
Categoria
= naCAT
= 2Poblacional, 1 ComercialNmedida
= Este dato son los individuos medidos
provenientes de los datos de Tallas. Preguntar a MD*Ndañossub
=Tide_coef
= Coef de MareaLow_tide_hour
=Catch_hour
= Hora de faenaspecies
= EspecieTemp
= TSMID_codificado_punto
= IDID_codificado_muestreo
= IDFiltro las bases
# poblacional
dens2021pobf <- dens2021pob %>%
select(2:18, 23, 27:29, 32, 35:39, 44, 45)
dens2022pobf <- dens2022pob %>%
select(2:18, 23, 27:29, 32, 35:39, 43, 44) %>%
rename(ID_codificado_punto=ID)
dens2023pobf <- dens2023pob %>%
select(2:18, 23, 27:29, 32, 35:39, 43, 44) %>%
rename(ID_codificado_punto=ID)
dens2024pobf <- dens2024pob %>%
select(2:18, 23, 27:29, 32, 35:39, 43, 44) %>%
rename(ID_codificado_punto=ID)
#compruebo si hay columnas iguales
nombres_iguales_pob <- identical(names(dens2021pobf),
names(dens2023pobf)) && identical(names(dens2021pobf),
names(dens2022pobf))
#junto la base
denspob2124f <- rbind(dens2021pobf,
dens2022pobf,
dens2023pobf,
dens2024pobf)
Separate Date
column
denspob2124f <- denspob2124f %>%
mutate(ANO = year(Date),
MES = month(Date),
DIA = day(Date))
table(denspob2124f$ANO, denspob2124f$MES)
##
## 1 2 3 4 5 6 7 8 9 10 11 12
## 2021 12 6 5 12 6 6 11 5 6 11 6 12
## 2022 6 6 12 6 6 6 18 6 0 6 12 6
## 2023 6 6 5 6 6 6 6 6 6 6 6 6
## 2024 6 6 6 6 6 0 0 0 0 0 0 0
De todas formas, hay una columna que difiere de ambos bases filtradas
COMERCIAL
y POBLACIONAL
, en este caso
CMSWsub
definida previamente. por lo mismo, no puedo juntar
las bases.
Ahora calculamos las siguientes variables para
POBLACIONAL
;
fps
=SW
/ SWsub
CSW
= CSWsub
* fps
fpm
= CSW
/ CSWsub
MCSW
= MCSWsub
* fpm
(Peso de
coquina medida de CSW
Hipotetico)DCSW
= DCSWsub
* fps
(Peso de
la coquina con daños en SW
)TCSW
= CSW
+ DCSW
(peso
coquina en SW
, incluidos daños)Btotal
= TCSW (g)
+ TCSW (p)
(Grande y pequeña, Usar como referencia el
Sampling.point
)fpn
= MCSWsub
/ CSW
NtotalCSW
= Nmedida
*
fpn
Ndaños
= Ndañossub
* fps
Ntotal
=
NtotalCSW (g)
+NtotalCSW (p)
+
Ndaños
* fps
(Grande y pequeña, Usar como
referencia el Sampling.point
)area
= m_track
* 0.445 (preguntar
valor!)bio
= Btotal
/ area
dens
= Ntotal
* area
(ind/m2)pproceder a los calculos para calcular las variables poblacionales de interes, en este caso Densidad, Abundancia y Biomasa;
denspobtot <- denspob2124f %>%
mutate(fps = SW /SWsub,
CSW = CSWsub * fps,
fpm = CSW / CSWsub,
MCSW = MCSWsub * fpm,
DCSW = DCSWsub * fps,
TCSW = CSW + DCSW)
denspobtot2 <- denspobtot %>%
group_by(Beach, Sampling.point, ANO, MES, DIA) %>%
mutate(Btotal=sum(TCSW),
fpn = CSW/MCSWsub,
NtotalCSW = Nmedida * fpn,
Ndaños = Ndañossub * fps,
Ntotal = (sum(NtotalCSW) + Ndaños) * fps,
area = m_track * 0.445,
bio= Btotal / area,
dens = Ntotal / area)
denspobtot2
## # A tibble: 290 × 46
## # Groups: Beach, Sampling.point, ANO, MES, DIA [148]
## Date Beach Sampling.point m_track tow_time Latº Latmin Longº
## <dttm> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2021-01-12 00:00:00 Donan… 2 51 5 36 50.3 6
## 2 2021-01-12 00:00:00 Donan… 2 51 5 36 50.3 6
## 3 2021-01-12 00:00:00 Donan… 4 56 5 36 53.5 6
## 4 2021-01-12 00:00:00 Donan… 4 56 5 36 53.5 6
## 5 2021-01-12 00:00:00 Donan… 6 69 5 36 56.8 6
## 6 2021-01-12 00:00:00 Donan… 6 69 5 36 56.8 6
## 7 2021-01-14 00:00:00 LaBota 9 40 5 37 12.1 7
## 8 2021-01-14 00:00:00 LaBota 9 40 5 37 12.1 7
## 9 2021-01-14 00:00:00 Isla_… 10 49 5 37 10.7 7
## 10 2021-01-14 00:00:00 Isla_… 10 49 5 37 10.7 7
## # ℹ 280 more rows
## # ℹ 38 more variables: Longmin <dbl>, Lat <dbl>, Long <dbl>, rastro <chr>,
## # mariscador <chr>, SW <dbl>, SWsub <dbl>, CSWsub <dbl>, MCSWsub <dbl>,
## # DCSWsub <dbl>, Categoria <chr>, CAT <dbl>, Nmedida <dbl>, Ndañossub <dbl>,
## # Tide_coef <dbl>, Low_tide_hour <dttm>, Catch_hour <dttm>, species <chr>,
## # Temp <dbl>, ID_codificado_punto <chr>, ID_codificado_muestreo <chr>,
## # ANO <dbl>, MES <dbl>, DIA <int>, fps <dbl>, CSW <dbl>, fpm <dbl>, …
saco un grafico de datos de densidad
plotdens2124 <- ggplot(denspobtot2 %>%
filter(Categoria== "g") %>%
group_by(ANO, Sampling.point),
aes(ANO, dens, group=ANO))+
geom_boxplot()+
theme_few()
plotdens2124p <- ggplot(denspobtot2 %>%
filter(Categoria== "p") %>%
group_by(ANO, Sampling.point),
aes(ANO, dens, group=ANO))+
geom_boxplot()+
theme_few()
ggarrange(plotdens2124p, plotdens2124, ncol=2)
Aqui trataré de replicar los rresultados de los Informes de MD en los
codes Pondera1.R
y Pondera2.R
alojados en este
folder. Este hace un cruce con los datos de tallas.
size2021 <- read_excel(here("Data",
"Posterior 2020",
"Data_size_Coquina_2021.xlsx"),
sheet = "Coquina_donax") %>%
select(-c(1, 10, 11))
size2022 <- read_excel(here("Data",
"Posterior 2020",
"Data_size_Coquina_2022.xlsx"),
sheet = "Coquina_donax") %>%
select(-c(1, 2))
size2023 <- read_excel(here("Data",
"Posterior 2020",
"Data_size_Coquina_2023.xlsx"),
sheet = "Coquina_Donax") %>%
select(-c(1, 2))
size2024 <- read_excel(here("Data",
"Posterior 2020",
"Data_size_Coquina_2024.xlsx"),
sheet = "Coquina_Donax") %>%
select(-c(1, 2))
Este aspecto se trabaja de forma de ponderación ad-hoc descrita en la Figure @ref(fig:edaplot1)
size_21_24 <- rbind(size2021,
size2022,
size2023,
size2024)
Separate Date
column
size_21_24<- size_21_24 %>%
mutate(
DIA = day(Date),
MES = month(Date),
ANO = year(Date)
)
unique(size_21_24$rastro)
## [1] "POBLACIONAL" "COMERCIAL"
glimpse(size_21_24)
## Rows: 51,455
## Columns: 12
## $ Date <dttm> 2021-01-12, 2021-01-12, 2021-01-12, 2021-01-12…
## $ Beach <chr> "Donana_sur", "Donana_sur", "Donana_sur", "Dona…
## $ Sampling.point <chr> "2", "2", "2", "2", "2", "2", "2", "2", "2", "2…
## $ rastro <chr> "POBLACIONAL", "POBLACIONAL", "POBLACIONAL", "P…
## $ CAT <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,…
## $ Categoria <chr> "g", "g", "g", "g", "g", "g", "g", "g", "g", "g…
## $ size <dbl> 22.39, 23.72, 17.88, 23.98, 22.69, 25.96, 24.46…
## $ sizeE <dbl> 22, 23, 17, 23, 22, 25, 24, 24, 22, 22, 24, 22,…
## $ ID_codificado_muestreo <chr> "FEMP_04_2101", "FEMP_04_2101", "FEMP_04_2101",…
## $ DIA <int> 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,…
## $ MES <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ ANO <dbl> 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021,…
table(size_21_24$ANO, size_21_24$MES)
##
## 1 2 3 4 5 6 7 8 9 10 11 12
## 2021 3103 1600 897 2399 784 1384 2846 819 1384 2389 1552 2814
## 2022 1374 1156 2560 1673 1013 1857 2577 868 0 996 2619 733
## 2023 915 1040 866 857 732 1068 618 655 639 384 490 772
## 2024 615 374 968 523 542 0 0 0 0 0 0 0
size_21_24
## # A tibble: 51,455 × 12
## Date Beach Sampling.point rastro CAT Categoria size sizeE
## <dttm> <chr> <chr> <chr> <dbl> <chr> <dbl> <dbl>
## 1 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 22.4 22
## 2 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 23.7 23
## 3 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 17.9 17
## 4 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 24.0 23
## 5 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 22.7 22
## 6 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 26.0 25
## 7 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 24.5 24
## 8 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 24.0 24
## 9 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 22.4 22
## 10 2021-01-12 00:00:00 Donana… 2 POBLA… 2 g 22.5 22
## # ℹ 51,445 more rows
## # ℹ 4 more variables: ID_codificado_muestreo <chr>, DIA <int>, MES <dbl>,
## # ANO <dbl>
Ahora calculo la cantidad de individuos bajo los 15 mm. Si bien hemos visualizado la base usando los datos desde el 2017, previo al 2020 no se puede asignar un area a los datos. Por lo que trabajo con los datos del 2020 al 2023.
Primero calculo en n de ind medidos y luego junto con base que tiene
medida del area track_m
, que es una variable para estimar
D15
q es en función del área, de acuerdo a lo comentado por
MD.
D15n <- size_21_24 %>%
group_by(ANO,
MES,
Sampling.point,
ID_codificado_muestreo
) %>%
summarize(
total = sum(sizeE < 15, na.rm = TRUE),
.groups = "drop")
D15n$Sampling.point <- as.double(D15n$Sampling.point)
D15n1 <- right_join(denspobtot2, D15n)
A traves de la ponderación del D15
, hago un retrocalculo
a traves de los ponderadores fps
, fpn
y
fpm
para luego extrapolar al tamaño del área.
# formula para el informe de Abril 24
D15n2 <- D15n1 %>%
filter(!is.na(fpn) &
!is.na(fpm) &
!is.na(fps) ) %>%
group_by(ANO, MES, Sampling.point) %>%
mutate(ponderar = ifelse(fpn, fpn, 1) *
ifelse(fpm, fpm, 1) *
ifelse(fps, fps, 1)) %>%
# Multiplicar por m_track * 0.045
mutate(D15 = ponderar * (m_track * 0.045), na.rm = TRUE)
Ploteo columnas por año y Sampling point
plotD15 <- ggplot(D15n2 %>%
filter(Sampling.point %in% c(2,4,6)),
aes(MES,D15,
color=as.factor(Sampling.point),
group=as.factor(Sampling.point)))+
geom_point()+
geom_smooth(method="loess", se=T)+
facet_wrap(.~ANO, ncol=4)+
scale_color_viridis_d(option="H",
name="Sampling point")+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
labs(y="Indice de Reclutamiemto",
x="MES")+
ylim(0,40)
plotD15
D15_17_20a <- ggplot(D15n2 ,
aes(MES,D15,
color=as.factor(Sampling.point)))+
geom_point()+
geom_smooth(col=2)+
facet_wrap(.~ANO, ncol=4)+
scale_color_viridis_d(name="Sampling Points")+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
ylim(0,50)+
labs(y="Indice de Reclutamiemto",
x="MES")
D15_17_20a
Ahora agrupado por el complejo espacial total
totalD15 <- ggplot(D15n2 %>%
group_by(ANO, MES) %>%
summarise(MEAND15 =mean(D15), na.rm=TRUE),
aes(MES,MEAND15))+
geom_point()+
geom_smooth(method="loess",
se=FALSE)+
facet_wrap(.~ANO, ncol=4)+
scale_color_viridis_d(option="H",
name="Sampling point")+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
labs(y="Indice de Reclutamiemto",
x="MES")
totalD15
Ahora de Columnnas
plotD15 <- ggplot(D15n2,
aes(MES,D15))+
geom_col()+
#geom_smooth(method="lm")+
facet_grid(Sampling.point~ANO)+
scale_color_viridis_d(option="H",
name="Sampling point")+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
labs(y="Indice de Reclutamiemto",
x="MES")+
ylim(0,50)
#coord_polar(theta = "y")
plotD15
Obtengo el valor para el informe de acuerdo al mes. Para ello genero una
tabla de acuerdo al formato del informe
D15n3 <- D15n2 %>%
group_by(ANO, MES, Sampling.point) %>%
summarise(D15PRO =round(mean(D15),2))
D15n4 <- D15n3 %>%
filter(Sampling.point %in% c(2,4,6)) %>%
pivot_wider(names_from = Sampling.point,
values_from = D15PRO,
values_fill = 0)
kbl(D15n4) %>%
kable_styling(bootstrap_options = c("striped",
"hover",
"condensed",
"responsive"))
ANO | MES | 2 | 4 | 6 |
---|---|---|---|---|
2021 | 1 | 5.29 | 6.52 | 3.10 |
2021 | 2 | 20.77 | 7.55 | 6.05 |
2021 | 3 | 2.52 | 6.83 | 4.40 |
2021 | 4 | 15.55 | 5.01 | 2.43 |
2021 | 5 | 16.37 | 9.70 | 16.26 |
2021 | 6 | 10.11 | 11.11 | 5.08 |
2021 | 7 | 8.45 | 8.39 | 2.88 |
2021 | 8 | 2.98 | 11.37 | 0.94 |
2021 | 9 | 4.70 | 6.39 | 2.43 |
2021 | 10 | 2.49 | 3.36 | 2.16 |
2021 | 11 | 2.07 | 2.74 | 2.20 |
2021 | 12 | 8.08 | 2.25 | 2.25 |
2022 | 1 | 1.98 | 2.76 | 2.02 |
2022 | 2 | 2.75 | 2.54 | 3.02 |
2022 | 3 | 5.50 | 4.25 | 3.64 |
2022 | 4 | 9.09 | 5.68 | 3.64 |
2022 | 5 | 5.64 | 2.56 | 2.65 |
2022 | 6 | 4.39 | 3.10 | 5.13 |
2022 | 7 | 2.54 | 2.38 | 2.30 |
2022 | 8 | 2.34 | 1.87 | 1.96 |
2022 | 10 | 1.48 | 2.38 | 2.30 |
2022 | 11 | 4.00 | 2.20 | 2.11 |
2022 | 12 | 4.10 | 4.64 | 23.40 |
2023 | 1 | 4.86 | 25.71 | 2.34 |
2023 | 2 | 3.08 | 3.45 | 2.02 |
2023 | 3 | 4.10 | 3.69 | 2.30 |
2023 | 6 | 5.48 | 3.24 | 4.72 |
2023 | 7 | 3.60 | 37.02 | 4.10 |
2023 | 8 | 13.30 | 5.78 | 17.53 |
2023 | 9 | 8.80 | 6.00 | 3.79 |
2023 | 10 | 2.25 | 3.28 | 2.92 |
2023 | 11 | 2.25 | 3.28 | 2.92 |
2023 | 12 | 2.92 | 3.28 | 2.25 |
2024 | 1 | 3.28 | 3.42 | 3.51 |
2024 | 2 | 3.10 | 3.60 | 2.97 |
2024 | 3 | 7.60 | 10.49 | 4.05 |
2024 | 4 | 4.41 | 38.99 | 2.20 |
2024 | 5 | 5.09 | 2.61 | 3.01 |
Esto debemos tratarlo como grupo dado que de acuerdo a la replica de cálculos los valores son mayores que los registrados en los ITAs de los años 2021 y 2023 (Delgado & Silva, 2021, 2023).
Existe un archivo que tiene datos de D15
previos al 2020
y son valores menores.
D151720 <- read_excel("Data/Anterior a 2020/densidad_reclutamiento_2017_2018_2019_2020.xlsx")
D151720 <- D151720 %>%
mutate(
DIA = day(month...7),
MES = month(month...7),
ANO = year(month...7)
)
duda <- ggplot(D151720 %>%
drop_na(D15))+
geom_histogram(aes(x=D15),
bins=50)+
facet_wrap(.~ANO)+
scale_x_continuous(breaks = seq(from = 0,
to = 90,
by = 5,
size=2))+
theme_few()
duda
Ahora lo veo como un plot similar al de los años 2021-2024
D15_17_20 <- ggplot(D151720 ,
aes(MES,D15,
color=as.factor(Sampling.point)))+
geom_point()+
geom_smooth(col=2)+
facet_wrap(.~ANO, ncol=4)+
scale_color_viridis_d(name="Sampling Points")+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
ylim(0,50)+
labs(y="Indice de Reclutamiemto",
x="MES")
D15_17_20
Ambos graficos (2017-2020 y 2021.2024) para comparar metodologías. Estas
no tienen os mismos puntos muestreados
joinpl <- ggarrange(D15_17_20,
D15_17_20a,
ncol = 2,
legend="bottom")
joinpl
Tabla con los datos del año para el informe;
kbl(D15n2$Sampling.point.x, D15n2$num_individuos_m2,
booktabs = T,format = "latex",
caption = "D15 Mes de Diciembre 2023") %>%
kable_styling(latex_options = c("striped",
"condensed","scale_down"),
full_width = FALSE,font_size=8)
Este es una forma mas simple calculando la proporción de ind bajo los 15 mm, en la zona y tiempo (AÑO y MES). Al ser proporcional, no importa el valor absoluto de individuos. Aca habría que identificar un nivel de referencia asociado a este porcentaje es necesario para caultelar la sustentabilidad del reclutamiento. Cargo data total de las estructuiras de tallas
tallas13_24 <- readRDS("tallas13_24.RDS")
Creo la función para estimar el %
FUN <- function(x) (sum(x) / length(x)) * 100
D151 <- tallas13_24 %>%
filter(rastro=="POBLACIONAL") %>%
group_by(ANO, MES, Sampling.point) %>%
summarize(d15 = FUN(sizeE<15), rm.na=T,
total=n())
FUN <- function(x) (sum(x < 15, na.rm = TRUE) / length(x)) * 100
D15 <- tallas13_24 %>%
filter(rastro == "POBLACIONAL") %>%
group_by(ANO, MES, Sampling.point) %>%
summarize(
d15 = FUN(sizeE),
total = sum(sizeE < 15, na.rm = TRUE),
.groups = "drop"
)
representación con barPlot
D15plot <- ggplot(D15 %>%
drop_na(d15, Sampling.point),
aes(d15, Sampling.point,
fill=Sampling.point))+
geom_col(position = "dodge")+
scale_fill_viridis_d(option = "A",
name= "Punto")+
facet_wrap(.~ANO)+
geom_vline(xintercept = 8,
col="red",
linetype=2)+
coord_flip()+
theme_few()+
xlim(0,60)+
ylab("Punto de Muestreo")
D15plot
landpop <- ggplot(D15 %>%
drop_na(d15, Sampling.point)) +
geom_lollipop(aes(y=d15,
x=Sampling.point,
colour=Sampling.point),
size=0.9)+
scale_colour_viridis_d(option = "C",
name= "Punto")+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme_bw() +
theme(
legend.position = "none",
panel.border = element_blank(),
panel.spacing = unit(0.1, "lines"),
strip.text.x = element_text(size = 6),
axis.text.x = element_text(size = 5),
axis.text.y = element_text(size = 5)) +
xlab("") +
ylab("D15") +
facet_grid(ANO~MES)
landpop
Cálculo el índice
indice_reclutamiento <- tallas13_24 %>%
filter(sizeE<15,
rastro=="POBLACIONAL") %>%
group_by(ANO, MES, Sampling.point) %>%
summarize(PROP = n() / nrow(tallas13_24)*100) %>%
mutate(PROPLOG =log(PROP))
Veo los datos crudos con la linea como media del cuantil de los datos
indseg <- ggplot(indice_reclutamiento %>%
filter(Sampling.point %in% c(2, 4, 6)) %>%
drop_na(),
aes(PROP)) +
geom_histogram(bins = 10) +
facet_grid(Sampling.point~ANO) +
theme_few()+
theme(axis.text.x = element_text(angle = 90, hjust = 1))+
labs(x = "",
y = "Índice de Reclutamiento")
indseg
Ahora estandarizo entre - y 1
a <- -1 # Límite inferior del rango objetivo
b <- 1 # Límite superior del rango objetivo
# Calcular el valor mínimo y máximo de tus datos
min_x <- min(indice_reclutamiento$PROPLOG)
max_x <- max(indice_reclutamiento$PROPLOG)
# Aplicar la fórmula de normalización
indice_reclutamiento$PROPLOG2 <- ((indice_reclutamiento$PROPLOG- min_x) / (max_x - min_x)) * (b - a) + a
indseg3 <- ggplot(indice_reclutamiento %>%
filter(Sampling.point %in% c(2, 4, 6)) %>%
drop_na(),
aes(x = factor(MES),
y = PROPLOG2,
fill=PROPLOG2 > 0)) +
geom_bar(stat = "identity",
alpha=0.85) +
scale_fill_manual(values = c("black", "red"),
labels = c("Negativo", "Positivo"),
name="IR") +
#facet_wrap(.~ANO, ncol=10) +
facet_grid(Sampling.point~ANO) +
geom_hline(yintercept = 0, color = "black")+
#scale_x_discrete(breaks = seq(from = 1996, to = 2022, by = 4))+
theme_few()+
theme(axis.text.x = element_text(angle = 90, hjust = 1),
legend.position = "bottom")+
labs(x = "",
y = "IR")+
ylim(-1,1)
indseg3
Considerando los asuntos pendientes para la construccion de un indice poblacional desdee el 2013, extraeremos un un indice de densidad, por que es mas ad-hoc para los modelos de stock assessment (Caddy, 2004).
llamo los objetos con la base 2017-2020 y 2021- 2023, que serían
denspobtot2
y D151720
. Identifico los valores
a utilizar y uno bases.
names(denspobtot2)
## [1] "Date" "Beach" "Sampling.point"
## [4] "m_track" "tow_time" "Latº"
## [7] "Latmin" "Longº" "Longmin"
## [10] "Lat" "Long" "rastro"
## [13] "mariscador" "SW" "SWsub"
## [16] "CSWsub" "MCSWsub" "DCSWsub"
## [19] "Categoria" "CAT" "Nmedida"
## [22] "Ndañossub" "Tide_coef" "Low_tide_hour"
## [25] "Catch_hour" "species" "Temp"
## [28] "ID_codificado_punto" "ID_codificado_muestreo" "ANO"
## [31] "MES" "DIA" "fps"
## [34] "CSW" "fpm" "MCSW"
## [37] "DCSW" "TCSW" "Btotal"
## [40] "fpn" "NtotalCSW" "Ndaños"
## [43] "Ntotal" "area" "bio"
## [46] "dens"
names(D151720)
## [1] "month...1" "Sampling.point" "Talla media" "sd"
## [5] "Densidad" "D15" "month...7" "Rendimiento"
## [9] "...9" "...10" "DIA" "MES"
## [13] "ANO"
Datos previos al 2020 solo tienen D15
,
Densidad
y Rendimiento
.
dens1720 <- D151720 %>%
select(c(2, 12, 13, 5))
dens2123 <- denspobtot2 %>%
select(c(3, 30, 31, 46)) %>%
rename("Densidad"="dens") %>%
as.data.frame()
dens2124 <- dens2123 %>%
select(-c("Beach", "DIA"))
dens1724 <- rbind(dens1720,
dens2124)
plot_dens <- ggplot(dens1724 %>%
group_by(ANO,MES, Sampling.point) %>%
summarize(mead =mean(Densidad)) %>%
drop_na(),
aes(MES,mead))+
geom_point()+
geom_smooth(col=2,
method = "loess")+
#facet_grid(Sampling.point~ANO)+
scale_color_viridis_d(name="Sampling Points")+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
labs(y="Densidad (ind/mt2)",
x="MES")+
ylim(0, 75)
plot_dens
agrupada
plot_dens_agru <- ggplot(dens1724 %>%
group_by(ANO,MES) %>%
summarize(mead =mean(Densidad)) %>%
drop_na(),
aes(ANO,mead))+
geom_point()+
geom_smooth(col=2,
method = "loess")+
#facet_grid(Sampling.point~ANO)+
scale_color_viridis_d(name="Sampling Points")+
theme_few()+
geom_hline(yintercept = 8,
col="red",
linetype=2)+
theme(axis.text.x = element_text(angle = 90,
hjust = 1))+
scale_x_continuous(breaks = seq(from = 1,
to = 12,
by = 1,
size=2))+
labs(y="Densidad (ind/mt2)",
x="MES")+
ylim(0, 75)
plot_dens_agru
ahora creo vector con desviación
CV <- function(x) {
sd_value <- sd(x, na.rm = TRUE) # Calcular la desviación estándar, ignorando NA
mean_value <- mean(x, na.rm = TRUE) # Calcular la media, ignorando NA
cv <- sd_value / mean_value
# Calcular el coeficiente de variación
return(cv)
}
vectordens <- dens1724 %>%
group_by(ANO) %>%
summarize(MEAND =mean(Densidad, na.rm=TRUE),
SDD = sd(Densidad, na.rm = TRUE)/100,
CV = CV(Densidad))
# escribo la salida
write_csv(vectordens, "DENSIDADPOBLACIONAL")
Grafico de biomasas de acuerdo a las planillas
bio <- ggplot(denspobtot2 %>%
group_by(ANO) %>%
summarize(BIO =sum(bio,
na.rm=TRUE)),
aes(ANO, BIO))+
geom_point()+
geom_smooth(method = "lm")+
#facet_wrap(.~Sampling.point)+
theme_few()+
xlim(2020, 2023)+
labs(y="Biomasas (kg)")
bio
# REFERENCIAS