La relación longitud-peso se usó inicialmente para obtener información sobre la condición de crecimiento de los peces y para determinar si el crecimiento somático era isométrico(el peso incrementa en forma proporcional a la longitud) o alométrico (el peso no se incrementa en forma proporcional a la longitud) (Le Cren, 1951). Jellyman et al. (2013) considera que la importancia de esta relación es información fundamental para los científicos que intentan deducir la estructura de edad, calcular las tasas de crecimiento, modelar bioenergéticas o cuantificar algún otro aspecto de la dinámica de la población de peces. Se requieren “relaciones -longitud” para: 1) estimar el peso con base en la longitud de los peces cuando el tiempo o las limitaciones técnicas impiden su registro en campo; 2) utilizar en modelos de evaluación de stock al convertir el crecimiento en longitud al crecimiento en peso; 3) estimar la biomasa de una comunidad de peces utilizando solo datos de talla y especies; 4) estimar el factor de condición del pez; y 5) hacer comparaciones de las características del ciclo de vida de los peces.

Modelar la relación entre la longitud y el peso de una especie de pez se consideró hace muchos años un análisis de rutina, para el cual los resultados no justificaban publicación o se había menospreciado por tener poco valor, Sin embargo, la revisión de métodos y el metanálisis de un una gran cantidad de relaciones longitud-peso por Froese (2006) demostraron que un análisis sintético de las relaciones longitud-peso para las especies pueden proporcionar información importante sobre la ecología de esa especie.

Paquetes requeridos

Las funciones usadas en esta sección requieren de los siguientes paquetes:

library(FSA)
## ## FSA v0.8.17. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
library(car)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(magrittr)
library(readxl)

Datos requeridos

Los datos requeridos para evaluar la relación longitud-peso son: la longitud (medida en cm) y el peso (medido en gramos) de los individuos. La medida de longitud puede ser la Longitud total (Lt), Longitud estándar (Ls) o Longitud horquilla (Lh), mientras que el peso del pez puede ser humedo o seco, entero o eviscerado. Aunque información sobre fechas, áreas de pesca, sexo o métodos de captura entre otros no intervienen en la estimación de la relación Longitud-peso se recomienda que tambien se registre (Froese, 2006). Información detallada sobre tamaños de muestra, rango de tallas y otras consideraciones a tener en cuenta la pueden ampliar en Froese et al 2011 y Froese 2006.

En este modulo utilizaremos información de longitud total (Lt) en cm y el peso total(Pt) en g de la especie Lutjanus synagris capturada en el Caribe colombiano y cuyos registros se obtuvieron del Sistema Estadístico Pesquero Colombiano-SEPEC.

L_synagris <- read_excel("~/JAVIER DE LA HOZ/L.synagris.xlsx")
attach(L_synagris)
L_synagris
Figura 1. Medidas Lt (longitud total), Le (Longitud estandar)y Lh (longitud horquilla)para Lutjanus synagris

.

Modelo Longitud-Peso

Hay basicamente dos razones por las cuales es inapropiado modelar la relación talla peso a traves de una regresion líneal simple. La primera es que la relación entre esas dos variables es a menudo no-líneal. Esta no linealidad es debida a que la mayoría de los peces agregan una cantidad lineal de longitud con el paso del tiempo, mientras que la masa o volumen es tridimensional. La segunda es que la variabilidad en el peso de los peces se incrementa con la longitud, es decir, que la variabilidad del peso es menor en peces pequeños.

Las dos caracteristicas mencionadas desafortunadamente violan los supuestos de linealidad y homocedasticidad de la regresión, por lo que se infiere que la relación talla-peso de la mayoria de especies seguira una relación de tipo potencial(Le Cren 1951, Froese 2006)

(1)

En donde \(\alpha\) (intercepto) y \(\beta\) (pendiente) son las constantes a ser estimadas, e(euler) y \(\epsilon\) es el error multiplicativo del i-esimo pez. El modelo (1) puede ser tranformado aplicando logaritmo en ambos terminos de la ecuación

(2)

con y=log(Pt), x=log(Lt), pendiente \(\beta\) e intercepto =log(\(\alpha\)), de esta forma se linealiza la ecuación (1), y además esta transformación tiene un beneficio adicional pues hace que los errores sean aditivos y estabilizar las variaciones del modelo. Con esta linealización y estabilización los métodos habituales de regresión líneal pueden ser ahora utilizados.

Ajuste del Modelo de regresión

Antes de comenzar la regresión del modelo de longitud-peso, el archivo de datos debe ser “limpiado” eliminando todos los registros donde faltaban las medidas de longitud o peso. Esta limpieza se logra con

L_synagris2 <- Subset(L_synagris,!is.na(Pt) & !is.na(Lt))

El ajuste de un modelo lineal a los datos de talla-peso transformados logarítmicos requiere la construcción de dos nuevas variables logPt y LogLt. Estos valores se anexan al archivo de datos y la funcion selectnos permite extraer solo esas dos variables como sigue a continuación :

L_synagris2<-mutate(L_synagris2,logPt=log(Pt),logLt=log(Lt)) %>%
  select(logPt,logLt,Sexo)
headtail(L_synagris2)

El modelo transformado (2), se ajusta con la funcion lm(), cuyos argumentos son : una formula de la forma y ~ x seguido por el argumento dataque el archivo a dataframe donde se pueden encontrar las variables creadas. El resultado debe guardarse en un objeto para permitir la extracción de información de resumen. El modelo se ajusta con:

lm1 <- lm(logPt~logLt,data=L_synagris2)

La información resumida básica se extrae al enviar el objeto lm () guardado a la funcion summary () de la siguiente manera :

summary(lm1)
## 
## Call:
## lm(formula = logPt ~ logLt, data = L_synagris2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.38114 -0.05937  0.00082  0.05877  0.39787 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.664008   0.030559  -119.9   <2e-16 ***
## logLt        2.794881   0.009676   288.9   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1001 on 1955 degrees of freedom
## Multiple R-squared:  0.9771, Adjusted R-squared:  0.9771 
## F-statistic: 8.344e+04 on 1 and 1955 DF,  p-value: < 2.2e-16

A partir de este resumen se observa que la variabilidad del peso es explicada en un 97.7 % (R2=0.977) por la longitud total,la regresión es altamente significativa (F1,1955=83440, p-valor<0.00001) y tanto la pendiente(t-value=288.9,pvalor<0.0001) como el intercepto(t-value=-119.9,pvalor<0.0001) son estadísticamente diferentes de cero. La ecuación de la línea que mejor se ajusta es log (Pt) = -3.664 + 2.794 * log (Lt) en la escala transformada y Pt = 0.02563Lt2.794 en la escala original, note que \(\alpha\)=eintercepto=e-3.664

Predicción y visualización del ajuste

Tal y como se menciono anteriormente si un investigador esta interesado en predecir el peso con base en la longitud puede usar el modelo ajustado para encontrarlo. Alternativamente, el peso observado de un pez se puede comparar con un peso predicho para determinar si tiene un peso promedio superior o inferior (ver Factor de condición).

Los valores de la variable de respuesta (es decir, log(Pt)) se predicen a partir de modelo ajustado utilizando predict () con el objeto lm()como primer argumento. El segundo argumento es un data.frame que contiene los valores de la variable independiente variable (es decir, log(L)) que se utilizará para predecir los valores de la variable de respuesta. Este data.frame está construido con data.frame () donde el primer argumento es exactamente el mismo nombre que la variable explicativa en el conjunto de objetos lm() igual a un vector de valores en el cual hacer predicciones. Este nuevo data.frame es entonces el segundo argumento para lm(). Por ejemplo, el código a continuación se usa para predecir el peso del logaritmo para 10 y 50 cm. Los pesos del logaritmo predichos se transforman de nuevo a la escala original utilizando el vector de valores como el exponente para la base utilizada en los logaritmos.Sin embargo, los valores que se transforman de nuevo desde la escala de registro suelen ser parciales. Una corrección común para las ecuaciones alométricas (Sprugel 1983) es multiplicar el valor de la transformación posterior por un factor de correción.

lons <- c(10,50)                  # vector de longitudes
nd <- data.frame(logLt=log(lons))  # df de log(longitudes)
( plogW <- predict(lm1,nd) )       #  Predicción de log(pesos)
##        1        2 
## 2.771444 7.269632

El factor de corrección puede ser calculado con la funcion logbtcf()del paquete FSA cuyos argumentos son el objeto lm() y la base del logaritmo usado como segundo argumento.El valor pronosticado transformado y corregido de la variable de respuesta se calcula multiplicando el valor predicho transformado por el factor de corrección.

( fc <- logbtcf(lm1,exp(1)) )  # Factor de corrección
## [1] 1.005026
fc*(exp(1)^plogW)         
##          1          2 
##   16.06201 1443.23864

Este modelo predice que el peso de promedio de un L. sinagrys de 10 cm es de 16,06 g. Los intervalos de confianza para la media o los intervalos de predicción para un valor individual de la variable de respuesta pronosticada a partir del modelo ajusto se determinan con la función predict () incluyendo el argumento interval= "confidence"o interval= "prediction", respectivamente.

mlogPt <- predict(lm1,nd,interval="confidence")
fc*exp(1)^mlogPt
##          fit        lwr        upr
## 1   16.06201   15.79638   16.33212
## 2 1443.23864 1421.56508 1465.24264
plogPt <- predict(lm1,nd,interval="prediction")
fc*exp(1)^plogPt
##          fit        lwr        upr
## 1   16.06201   13.18889   19.56103
## 2 1443.23864 1185.22471 1757.42014

Se observa que con una confianza del 95 % el peso promedio de un L. sinagrys de 10 cm estará entren 15.79 y 16.33 cm, mientras que con una confianza del 95 % un individuo de 10 cm pesará entre 13.18 y 19.56 cm.

Para construir un gráfico utilizamos la funciónplot (), el primer argumento es una formula y~x, el segundo es nombre de la data, los siguientes son caracteristicas basicas de cualquier tipo de grafico como el color, tipo de línea y las etiquetas de los ejes

plot(logPt~logLt,data=L_synagris2,pch=19,col=rgb(0,0,0,1/4),
     ylab="log Pt (g)",xlab="log Lt (cm)")
tmp <- range(L_synagris2$logLt)
xs <- seq(tmp[1],tmp[2],length.out=99)
ys <- predict(lm1,data.frame(logLt=xs))
lines(ys~xs,lwd=2,col="blue")
 text(2.8,7,expression(log(Pt)==-3.664+2.794*log(Lt)),col="blue")
Figura 2. Relación talla-peso con datos tranformados logaritmicamente de individuos de Lutjanus sinagrys capturados en el Caribe colombiano en el año 2013 y línea de mejor ajuste.
btxs <- exp(1)^xs
btys <- fc*exp(1)^ys
btys <- fc*exp(1)^predict(lm1,data.frame(logLt=xs), interval="prediction")
head(btys,n=3)
##        fit      lwr      upr
## 1 24.31938 19.97339 29.61099
## 2 25.30940 20.78687 30.81588
## 3 26.33972 21.63347 32.06980
plot(Pt~Lt,data=L_synagris,pch=19,col=rgb(0,0,0,1/4), xlab="Longitud total (cm)",ylab="Peso total (g)")
lines(btys[,"fit"]~btxs,col="green",lwd=2,lty="solid")
lines(btys[,"lwr"]~btxs,col="blue",lwd=2,lty="dashed")
lines(btys[,"upr"]~btxs,col="blue",lwd=2,lty="dashed")
text(17,1200, expression(Pt==0.02563*Lt^2.794),col="green")
Figura 3. Relación talla-peso con datos no-tranformados de individuos de Lutjanus sinagrys capturados en el Caribe colombiano en el año 2013, línea de mejor ajuste e intervalos de confianza al 95 %.

.

Tipo de crecimiento

Cuando un pez exhibe un crecimiento isométrico (b=3) su peso incrementa en forma proporcional a su longitud, cuando esto no sucede se puede presentar crecimiento alométrico que puede ser alométrico negativo(b<3) cuyo patrón de crecimiento corresponde a aquellas especies en la que individuos de mayor talla son más elongados que los pequeños (Froese 2006) o crecimiento alométríco positivo(b>3) que es acorde con una tendencia de aumento progresivo de la robustez desde formas tempranas más elongadas o delgadas, por lo cual hay una mayor ganancia proporcional en peso que en longitud, fenómeno que es común entre peces (Froese 2006).

Se puede obtener una prueba de si los peces en una población exhiben crecimiento isométrico o no mediante las siguientes hipótesis estadísticas:

\(H_{0}: \beta=3\) (crecimiento isométrico)
\(H_{1}: \beta\neq3\). (cecimiento alométrico)

Cuyo estadístico de prueba es:

(3)

En R se puede utilizar la función hoCoef() del paquete FSA, cuyos argumentos son : El objeto de ajuste de la regresión

Un número que indica qué término usar en la prueba de hipótesis (1 para el intercepto, 2 para la pendiente),

Un número que indica el valor específico en la hipótesis nula (es decir, \(\beta\)0), y

Una cadena de caracteres que indica la dirección de la hipótesis alternativa (“less”, “greater” o “two.sided”(por defecto)).

La prueba de hipótesis e intervalo de confianza para la pendiente se realiza de la siguiente forma:

hoCoef(lm1,2,3)
##  term Ho Value Estimate  Std. Error         T   df      p value
##     2        3 2.794881 0.009675648 -21.19948 1955 6.000986e-90
confint(lm1)
##                 2.5 %    97.5 %
## (Intercept) -3.723940 -3.604075
## logLt        2.775906  2.813857

Estos resultados muestran que se rechaza la hipótesis nula(t=-21.19, df=1955, p-valor=6e-90), lo que significa que L. sinagrys presenta un crecimiento alometrico negativo (con una confianza del 95 % la pendiente se encuentra entre 2.775 y 2.805).

Verificación de supuestos

La regresión líneal simple asume que los datos pueden modelarse a teaves de una línea recta y que los erores son independientes, estan normalmente distribuidos y tienen varianza constante (homocedasticos).

Por ejemplo, los errores probablemente no son independientes si se realizan múltiples mediciones del mismo individuo a traves del tiempo. Los errores dependientes generalmente no son un problema con los datos de longitud de peso; por lo tanto, esta suposición no la abordaremos aquí.

Las evaluaciones de los supuestos de linealidad, normalidad y varianza constante requieren el cálculo de dos valores relacionados con las cantidades ajustadas y los residuales. Los valores ajustados son valores de la variable de respuesta predicha a partir del modelo de regresión lineal ajustado para cada individuo. Residuales son la diferencia entre el valor observado de la variable de respuesta y el valor ajustado para cada individuo. Los individuos con residuos lejos de cero no están bien representados por el modelo ajustado. Los residuos y los valores ajustados se extraen del objeto lm con residuals () y fitted (), respectivamente.

r <- residuals(lm1)
fv <- fitted(lm1)
residPlot(lm1)

library(nortest)
qqnorm(r)
qqline(r)

Referencia bibliográficas

Froese, R. (2006). Cube law, condition factor and weight-length relationships: history, meta-analysis and recommendations. Journal of applied ichthyology, 22(4), 241-253.

Froese, R., Tsikliras, A. C., & Stergiou, K. I. (2011). Editorial note on weight-length relations of fishes. Acta Ichthyologica et Piscatoria, 41(4), 261-263

Jellyman, P. G., Booker, D. J., Crow, S. K., and Jellyman, D. J. (2013).Does one size fit all? An evaluation of length-weight relationships for New 2893 Zealand’s freshwater fish species. New Zealand Journal of Marine and Fresh water Research, 47:450-468

Le Cren, E. D. (1951). The length-weight relationship and seasonal cycle in gonad weight and condition in the perch (Perca fluviatilis). The Journal of Animal Ecology, 201-219.

Sprugel, D. G. (1983). Correcting for bias in log-transformed allometric equations. Ecology, 64:209-210.