Existe una relación teórica entre la reproducción y el tamaño del cuerpo, se asume que la masa total o el tamaño se relacionan directamente a la fecundidad, independientemente del número de individuos involucrados, este supuesto de que una hembra grande puede ser reemplazada por varias hembras pequeñas, sin embargo se ha demostrado que las hembras grandes son mucho más productivas que las pequeñas. La presente práctica coloca una base de datos de varias especies analizadas en la publicación de Barneche 2018 (https://science.sciencemag.org/content/360/6389/642.full).
Las funciones necesarias para la práctica se encuentran en los siguientes paquetes:
library(FSA)
library(magrittr)
library(dplyr)
library(lubridate)
library(car)
library(ggplot2)
Se presentan las fecundidades (Número de huevos por hembra) y longitudes totales (mm) para varias especies con diferentes tipos de estrategias reproductivas (Demersales, pelágicas, con cuidado parental, y otras).
df <- read.csv("Fecdata.csv")
str(df_fec)
## 'data.frame': 6383 obs. of 4 variables:
## $ Especie: Factor w/ 159 levels "Abudefduf saxatilis",..: 1 2 2 2 2 2 2 2 2 2 ...
## $ Desove : Factor w/ 6 levels "Bolsa","Criador en boca",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ LT : num 109 122 122 125 125 ...
## $ Fec : num 31088 402 343 497 425 ...
Elaboramos un gráfico de dispersión para revisar la relación de las variables.
ggplot(data = df_fec, aes(x = LT, y = Fec)) +
geom_point() +
ylab("Fecundidad") +
xlab("Longitud total (mm)") +
theme_bw()
El gráfico muestra un evidente incremento de la fecundidad conforme se incrementa la longitud, sin embargo para facilitar el modelado de los datos, estos serán transformados por el logaritmo natural.
df_fec <- df_fec %>%
mutate(LogLT = log(LT), LogFec = log(Fec))
y volvemos a graficar, esta vez empleando las variables transformadas:
ggplot(data = df_fec, aes(x = LogLT, y = LogFec)) +
geom_point(alpha = 0.1) +
ylab("Logaritmo de Fecundidad") +
xlab("Logaritmo de Longitud total (mm)") +
theme_bw()
El nuevo gráfico nos muestra una tendencia aproximadamente linear, el argumento alpha = 0.1 hace a los puntos transparentes, de modo que las zonas más oscuras del diagrama son las zonas de mayor concentración de puntos.
Procedemos a modelar los datos:
model_fec <- lm(LogFec ~ LogLT, data = df_fec)
lm contiene la función de regresión linear.
y ~ x (variable dependiente, variable independiente)
data ; es la base de datos de donde provienen las variables
Comprobamos los resultados
summary(model_fec)
##
## Call:
## lm(formula = LogFec ~ LogLT, data = df_fec)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.1392 -0.5393 0.1009 0.7365 3.0562
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.71719 0.12079 -30.77 <2e-16 ***
## LogLT 2.67071 0.02084 128.13 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.175 on 6381 degrees of freedom
## Multiple R-squared: 0.7201, Adjusted R-squared: 0.7201
## F-statistic: 1.642e+04 on 1 and 6381 DF, p-value: < 2.2e-16
Nos interesan los valores:
Coeficientes que tienen la forma de la ecuación: y = a + bx
donde: a = (Intercept) b = LogLT
En este caso la b = 2.67
Lo transformamos (ya que está en escala logarítmica)
(exp_b = exp(2.67))
## [1] 14.43997
(Long_1 = exp(1))
## [1] 2.718282
Se interpreta que como: Hay un incremento de 14.43 (exp_b) ovocitos por cada 2.71 mm de longitud de pez.
Gráficamente el argumento geom_smooth(method = “lm”) añade la línea de tendencia.
ggplot(data = df_fec, aes(x = LogLT, y = LogFec)) +
geom_point(alpha = 0.1) +
geom_smooth(method = "lm") +
ylab("Logaritmo de Fecundidad") +
xlab("Logaritmo de Longitud total (mm)") +
theme_bw()
## `geom_smooth()` using formula 'y ~ x'
Sin embargo, aunque ya se logró modelar la relación entre la longitud y la fecundidad, la verdad es que esta relación puede variar dependiendo de la estrategia del pez(variable Desove).
ggplot(data = df_fec, aes(x = LogLT, y = LogFec)) +
facet_wrap(~Desove) +
geom_point(alpha = 0.1) +
ylab("Logaritmo de Fecundidad") +
xlab("Logaritmo de Longitud total (mm)") +
theme_bw()
Los gráficos nos muestras diferentes tendencias para cada tipo de estrategia, desde el tamaño de la hembra y fecundidad máximos que son capaces de alcanzar las hembras de cada grupo, hasta el número de datos registrados para cada uno.
Es posible modelar las relaciones para cada grupo, a continuación se evalúa para el grupo de pelágicos: levels(df_fec$Desove)
model_fec_Pel <- lm(LogFec ~ LogLT, data = subset(df_fec, Desove == "Pelagico"))
Extraemos los resultados
(fec_pel_sum <- summary(model_fec_Pel))
##
## Call:
## lm(formula = LogFec ~ LogLT, data = subset(df_fec, Desove ==
## "Pelagico"))
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.6303 -0.5676 0.0057 0.6946 2.9008
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.70762 0.14846 -18.24 <2e-16 ***
## LogLT 2.51275 0.02514 99.97 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.067 on 4017 degrees of freedom
## Multiple R-squared: 0.7133, Adjusted R-squared: 0.7132
## F-statistic: 9994 on 1 and 4017 DF, p-value: < 2.2e-16
(Coef_pel <- coef(model_fec_Pel))["LogLT"]
## LogLT
## 2.512749
(exp_b = exp(2.51))
## [1] 12.30493
(Long_1 = exp(1))
## [1] 2.718282
El incremento de la fecundidad por cada 2.71 mm de pez es de 12.30 huevos, este resultado difiere ligeramente del reportado para todos los peces en conjunto (~14 huevos).
¿cuál es la ecuación de la recta para los peces pelágicos?
Calcular el modelo de regresión y ecuaciones para todos los grupos (demersales, viviparos, bosa, etc.) ¿Porqué difieren los resultandos en los diferentes grupos?. Justificar respuesta.
Elegir tres especies de la base de datos, de tres estrategias distintas y elaborar sus respectivas curvas explicar los resultados basados en el conocimiento disponible sobre estas especies, buscar información en FishBase de la fecunidad y otros datos relevantes de su estrategia reproductiva en publicaciones especializadas.