Estimación de crecimiento en peces

Author

Cousteau Consultant Group

Published

January 22, 2024

Explora nuestros posts y nuestros cursos

Recuerda que tenemos diversos posts y dictamos cursos de programación, pesquerías, ecología, entre otros. Te invitamos a revisar la lista completa de nuestros posts en nuestra sección Posts y suscribirte a nuestras redes en Facebook y X para enterarte de nuestros cursos y de sus aperturas próximas.

El crecimiento es parte de la dinámica de una población que describe cómo los individuos crecen en longitud (y peso) en función a su edad. Es uno de los componentes principales que influyen en la biomasa total de una población y nos puede dar información acerca de su nivel de explotación.

Casi todas las especies de peces crecen de la misma manera. Durante los primeros años de edad, la tasa de crecimiento es muy acelerada debido a que invierten toda su energía en crecer. Una vez que llegan a cierta edad, la tasa de crecimiento comienza a desacelerar, y es aquí donde los individuos comienzan a invertir una parte de su energía en reproducirse. En una última fase, los individuos dejan de crecer, por lo que su tasa de crecimiento es cero, y toda su energía la invierten en reproducción. El crecimiento en peces es un proceso complejo que se ve afectado por diversos factores, como la genética, la temperatura, la disponibilidad de alimento y la competencia.

Existen diversos modelos para describir el crecimiento en peces. En este post les mostraremos el modelo deC crecimiento más usado: el modelo de von Bertalanffy y su aplicación en R

Instalación de librerías

Para poder replicar los ejercicios que se mostrarán a continuación es necesario instalar las siguientes librerías. Pueden realizar la instalación través del siguiente comando en consola de R:

install.packages("dplyr")
install.packages("FSA")
install.packages("nlstools")
install.packages("nlsMicrobio")
install.packages("AICcmodavg")

Acerca de la información y la ecuación

Para poder construir este modelo, necesitamos información acerca de la edad del individuo y su correspondiente talla.

La ecuación de von Bertalanffy se expresa de la siguiente manera:

\(L_t = L_\infty * (1 - e^{(-K*(t-t_0))})\)

Donde \(L_t\) es la longitud del individuo a una edad \(t\), \(K\) es el parámetro de curvatura y \(t_0\) es la edad de los peces cuando, hipotéticamente, tienen longitud cero o marca la época de nacimiento (Fig. 1).

Figura 1. Representación gráfica del modelo de crecimiento de von Bertalanffy.

Manos a la obra

Para este ejercicio usaremos la base de datos llamada LA.csv. Para este ejercicio, iniciaremos descargando el archivo LA.csv

Una vez que se haya descargado el archivo, cargamos las librerías necesarias y procedemos a leer de la siguiente manera:

library(dplyr)
library(FSA)
library(nlstools)
library(nlsMicrobio)
library(AICcmodavg)
datos <- read.csv("LA.csv")

Luego exploramos el contenido de esta base de datos:

# Observamos las 3 primeras y 3 útimas filas de la base de datos
headtail(datos)
    Age    L
1   0.5  6.0
2   0.5  6.5
3   0.5  6.5
225 2.5 17.0
226 2.5 17.0
227 3.0 17.5

Iniciamos con una exploración estadística básica de las dos variables que contiene la base de datos.

# Estadísticos descritivos
summary(datos)
      Age              L        
 Min.   :0.500   Min.   : 6.00  
 1st Qu.:0.500   1st Qu.:12.00  
 Median :1.500   Median :14.00  
 Mean   :1.315   Mean   :13.41  
 3rd Qu.:2.000   3rd Qu.:15.50  
 Max.   :3.000   Max.   :17.50  

Además se realiza una exploración gráfica y verificamos la relación entre la edad (Age) y la longitud (L):

plot(datos$L ~ datos$Age, data = datos,
xlab = "Edad (años)", ylab = "Longitud (cm)",
bg = "red", pch = 21, cex = 1.5,
xlim = c(0, 3), ylim = c(0, 20))

Una vez que hemos comprobado la relación que existe entre las variables de interés, procedemos a construir el modelo.

El primer paso estará enfocado en obtener unos valores de entrada de los parámetros a estimar, que en este caso son: \(L\infty\), \(K\) y \(t_0\). Para ello, utilizaremos la funcion vbStarts() del paquete FSA.

svb <- vbStarts(L~Age, data = datos, type = "Typical", plot = TRUE)

Se observa una gráfica que contiene los valores de entrada, los cuales están almacenados en el objeto svb como una lista, y que serán suministrados al modelo. Así tenemos:

model <- nls(formula = L ~ Linf*(1-exp(-K*(Age-t0))), data = datos, start = svb)

Verificamos qué es lo que contiene el modelo.

summary(model)

Formula: L ~ Linf * (1 - exp(-K * (Age - t0)))

Parameters:
     Estimate Std. Error t value Pr(>|t|)    
Linf 18.71326    0.73845  25.341  < 2e-16 ***
K     0.82075    0.12094   6.786 1.02e-10 ***
t0   -0.37671    0.09001  -4.185 4.09e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.082 on 224 degrees of freedom

Number of iterations to convergence: 5 
Achieved convergence tolerance: 2.899e-06

Y finalmente extraemos los coeficientes o parámetros.

coef(model)
      Linf          K         t0 
18.7132559  0.8207452 -0.3767086 

Sobre la predicción

Podemos hacer algunas predicciones usando la función predict() con base en el modelo (model) generado previamente. Lo que se quiere es predecir la longitud a una edad determinada. Para ello vamos a crear un objeto llamado L_pred el cual va a almacenar todos los valores predichos.

L_pred = predict(model)

Finalmente representamos gráficamente los resultados del modelo:

plot(L ~ Age, data = datos)
lines(L_pred ~ Age, data = datos, col = "red", lwd = 3)