Modelos de dinámica poblacional

Práctica 4, Ecología I

Grado en Biología

Profesor
Departamento

Ecología e Hidrología, Facultad de Biología

Fecha de publicación

25 de febrero de 2024

Fecha de modificación

10 de abril de 2024

Introducción

En esta práctica analizaremos las características de diversos modelos de dinámica poblacional considerando poblaciones con crecimiento densoindependiente, con crecimiento densodependiente, y poblaciones estructuradas en clases de edades o estadios. Analizaremos también la influencia de diferentes parámetros que caracterizan la demografía de poblaciones estructuradas (distribución estable de edades/estadios y valor reproductivo) y realizaremos un ejercicio de introducción a los modelos estocásticos, aprendiendo a interprear el significado de la varianza de las tasas de crecimiento, y su influencia en las estimas de la probabilidad o riesgo de (cuasi)extinción.

En concreto, los objetivos de la práctica son:

  1. Analizar la evolución temporal de poblaciones con crecimiento densoindependiente.

  2. Analizar e interpretar las características generales de los modelos logísticos (crecimiento densodependiente).

  3. Analizar la evolución temporal de poblaciones estructuradas con crecimiento densoindependiente.

  4. Interpretar la influencia de la distribución de edades/estadios estable (DEE) y del valor reproductivo en la dinámica de poblaciones estructuradas.

  5. Conocer las características generales de los modelos estocásticos, interpretando el efecto de la varianza de las tasas de crecimiento en la estimación de las probabilidades de (cuasi)extinción.

Preparación

Una vez iniciado R cargaremos el archivo de datos y funciones desde el servidor:

load( url( "http://webs.um.es/jfcalvo/eco1.RData" ) )

Usando ls() podemos ver los objetos cargados. Utiliza la función info para obtener información sobre ellos; por ejemplo: info( "modelo" ) o info( "ganso" ). Teclea info() para más información.

La función modelo

La función modelo permite simular una amplia variedad de modelos de crecimiento poblacional: densoindependientes, densodependientes, de poblaciones estructuradas y estocásticos. Los argumentos que podemos proporcionar a la función son los siguientes:

modelo( lambda, r, R, K, theta, tiempo, N0, mod, comp, mat, n0, mu, s2, Nx, sim, CDF )

Los primeros cinco (lambda, r, R, K y theta) son los parámetros de las ecuaciones discretas y continuas de crecimiento exponencial (densoindependiente) y logístico (densodependiente);

tiempo permite fijar el horizonte temporal de proyección;

N0 establece el tamaño inicial de la población;

mod específica el modelo logístico a utilizar: case (por defecto), ricker, theta y begon;

comp permite comparar los cuatro modelos logísticos (comp = TRUE);

mat indica una matriz de proyección (población estructurada);

n0 es el vector inicial de edades/estadios de una población estructurada;

mu es la tasa de crecimiento de un modelo estocástico (\(\mu\));

s2 es la varianza de \(\mu\);

Nx es el tamaño de población crítico (umbral de cuasiextinción en modelos estocásticos);

sim es el número de simulaciones a realizar en un modelo estocástico; y

CDF especifica, para modelos estocásticos, la opción de visualizar únicamente la función de distribución acumulada (que representa la probabilidad de extinción en función del tiempo; CDF = TRUE).

Crecimiento densoindependiente

Recordemos el modelo discreto de crecimiento denso-independiente:

\[N_{t+1} = \lambda\ N_{t} = e^r \ N_t\] \[N_{t} = \lambda^{t}\ N_{0}= e^{rt} \ N_t\]

Realizaremos algunos cálculos sencillos en R, considerando por ejemplo una \(\lambda\) = 1.05 y un tamaño de población inicial (\(N_0\)) de 20 individuos:

lambda <- 1.05
N0 <- 20
N <- NA

N[ 1 ] <- lambda * N0
N[ 2 ] <- lambda * N[ 1 ]
N[ 3 ] <- lambda * N[ 2 ]
N[ 4 ] <- lambda * N[ 3 ]
N[ 5 ] <- lambda * N[ 4 ]
N

Podemos comprobar que el resultado final (\(N_5\)) se obtiene también usando la ecuación general:

lambda ^ 5 * N0

También podemos utilizar la función modelo con los parámetros correspondientes:

modelo( lambda = 1.05, N0 = 20, tiempo = 5 )

La ecuación representa un modelo de crecimiento exponencial, que puede apreciarse mejor si consideramos un horizonte temporal mayor; por ejemplo:

modelo( lambda = 1.05, N0 = 20, tiempo = 25 )

La función modelo proporciona los valores de los parámetros \(lambda\), \(r\) y \(R\), independientemente de cuál hayamos indicado. Comprueba que:

\[r = \log_e \lambda \qquad \qquad \lambda + 1=R \qquad \qquad R= e^r - 1\]

Ya sabemos, por otra parte, que si \(\lambda\) < 1, o \(r\) < 0, la población disminuirá con el tiempo. Por ejemplo:

modelo( r = -0.05, N0 = 20, tiempo = 25 )

Crecimiento densodependiente

Los modelos logísticos requieren la especificación de dos parámetros: la tasa de crecimiento (\(R\) o \(r\)) y la capacidad de carga (\(K\)), que representa el máximo número de individuos de la población. La función modelo permite comparar cuatro modelos discretos de crecimiento logístico:

Case (2000):

\[N_{t + 1} = N_{t}\left( 1 + R\left( 1 - \frac{N_{t}}{K} \right) \right)\]

Ricker:

\[N_{t + 1} = N_{t} \ e^{r\left( 1 - \frac{N_{t}}{K} \right)}\]

\(\theta\)-logístico:

\[N_{t + 1} = N_{t} \ e^{r\left( 1 - \left( \frac{N_{t}}{K} \right)^{\theta} \right)}\]

Begon et al. (1988):

\[N_{t + 1} = \frac{N_{t} \ e^{r}}{1 + \frac{\left( e^{r} - 1 \right) \ N_{t}}{K}}\]

Podemos comparar los resultados de estos cuatro modelos con la función modelo, incorporando el argumento comp = TRUE. Por ejemplo:

modelo( R = 0.3, K = 50, N0 = 2, comp = TRUE )

Por defecto, la función considera \(\theta\) = 1, por lo que el modelo \(\theta\)-logístico y el modelo de Ricker son en este caso equivalentes. Para analizar el efecto de este parámetro sobre la dinámica de crecimiento de la población probaremos diferentes valores:

modelo( R = 0.3, K = 50, N0 = 2, theta = 1.5, comp = TRUE )
modelo( R = 0.3, K = 50, N0 = 2, theta = 0.5, comp = TRUE )

Para examinar con mayor detalle las características del crecimiento densodependiente, consideraremos el modelo logístico discreto de Case (2000), que es la opción por defecto en la función modelo. Comprobaremos que conforme aumentan los valores de \(R\) esta ecuación produce oscilaciones (ciclos de periodo 2, 4, 8, etc.). Finalmente, cuando \(R\) > 2.57 se entra en un patrón no repetitivo conocido como caos.

modelo( R = 1.0, K = 100 )
modelo( R = 1.9, K = 100 )
modelo( R = 2.1, K = 100 )
modelo( R = 2.5, K = 100 )
modelo( R = 2.6, K = 100 )

Modelos de crecimiento de poblaciones estructuradas

Ejemplo de la población de correlimos semipalmeado

Utilizaremos en esta sección la matriz de proyección de la una población de correlimos semipalmeado (Calidris pusilla) con tres clases de edades (edad1: 1 año, edad2: 2 años, edad3+: 3 o más años).

correlimos

Recuerda que el análisis demográfico de esta población podemos realizarlo con:

matriz( correlimos )

La dinámica de la población puede simularse utilizando el modelo discreto:

\[\mathbf{n}_{t + 1} = \mathbf{A} \, \mathbf{n}_{t}\] Para ello necesitaremos establecer un vector de tamaños de población (en este caso valores de densidad: número de individuos por hectárea):

n0 <- c( 23.5, 14.2, 7.3 )

En R, el producto matricial se expresa mediante %*%. Así podremos calcular la evolución temporal de la población en un plazo de varios años:

correlimos %*% n0 -> n1
correlimos %*% n1 -> n2
correlimos %*% n2 -> n3
correlimos %*% n3 -> n4
correlimos %*% n4 -> n5
data.frame( n0, n1, n2, n3, n4, n5 )

Podemos así analizar la evolución de la estructura de edades y comprobar que, con el tiempo: (1) la proporción relativa de tamaños entre las distintas clases de edades se estabiliza, aproximándose a la distribución estable de edades (DEE); y (2) el crecimiento poblacional anual (\(N_{t+1} / N_t\)) tiende a estabilizarse, aproximándose a la tasa de crecimiento anual (\(\lambda\)):

sum( n5 ) / sum( n4 )
n5 / sum( n5 )

Con la función modelo podemos proyectar la evolución de la población de correlimos en el tiempo y observar cómo se alcanza la distribución de edades estable:

modelo( mat = correlimos, n0 = n0, tiempo = 10 )
Ejemplo de la población de orca

Analizaremos ahora el significado del valor reproductivo residual ($vrr) con otro ejercicio, para el que utilizaremos la matriz de proyección de la orca (Orcinus orca), disponible en el objeto orca. Recordemos las características demográficas de esta población::

matriz( orca )

Simularemos cuatro proyecciones temporales a 100 años, partiendo en cada caso de distintas poblaciones iniciales de 10 hembras, todas ellos pertenecientes a la misma clase de edad:

modelo( mat = orca, n0 = c( 10,  0,  0,  0), tiempo = 100 )
modelo( mat = orca, n0 = c(  0, 10,  0,  0), tiempo = 100 )
modelo( mat = orca, n0 = c(  0,  0, 10,  0), tiempo = 100 )
modelo( mat = orca, n0 = c(  0,  0,  0, 10), tiempo = 100 )

Observa cómo cada proyección produce distintos resultados, lo cual es debido al distinto valor reproductivo de cada clase. Así, los tamaños poblacionales totales finales (\(N_{100}\)) son proporcionales al valor reproductivo residual de cada clase que, como recordarás, es igual a 1 para la primera clase de edad. En consecuencia, dividiendo dichos tamaños poblacionales por el correspondiente al de la primera clase, obtenemos aproximadamente el vector $vrr:

c( 140.1022, 147.0057, 220.6248, 1.381434 ) / 140.1022
Ejercicio 1

Analiza la dinámica de la población del ganso emperador (Chen canagica) cuya matriz de proyección está disponible en el objeto ganso. Partiendo una población inicial de 50 individuos de la clase de edad con mayor valor reproductivo:

  • ¿Cuál será el tamaño total de la población al cabo de 10 años? Observa que la población ha aumentado pese a que el valor de \(\lambda\) es menor que 1.

  • ¿Cuál será el tamaño poblacional al cabo de 50 años, y cuántos tendrán 2 o más años?

Ejercicio 2

Utilizando la matriz de proyección de la ballena franca del norte Eubalaena glacialis (ballena), y partiendo de un vector inicial de población n0 = (10, 20, 10, 5, 0), responde a las siguientes cuestiones:

  • ¿Al cabo de cuántos años, aproximadamente, se estabiliza la estructura de edades?;

  • Suponiendo una población inicial de solo 10 individuos de la clase de edad con mayor valor reproductivo ¿cuántas hembras inmaduras habrá en la población dentro de 20 años?

Modelos estocásticos

Los modelos estocásticos incorporan variabilidad en las parámetros demográficos, por lo que, a diferencia de los modelos deterministas, la estimación del tamaño poblacional en el futuro se basa en criterios probabilísticos. Una aplicación de gran interés de estos modelos es la estimación de probabilidades de extinción, o más concretamente de cuasiextinción (la probabilidad de alcanzar un tamaño de población crítico \(N_x\)). La función modelo puede simular modelos estocásticos, lo cual nos permitirá comprobar el efecto de la varianza en las probabilidades de (cuasi)extinción. En el caso de los modelos estocásticos se utiliza el parámetro poblacional \(\mu\), que es el equivalente estocástico del parámetro \(r\) en un modelo determinista. [Recuerda que \(\mu = \log(\lambda)\).]

modelo( mu = 0.01, s2 = 0.05, N0 = 40, Nx = 10, tiempo = 20 )

Veamos ahora el efecto de incrementar la varianza:

modelo( mu = 0.01, s2 = 0.15, N0 = 40, Nx = 10, tiempo = 20 )

Dado que el número de simulaciones por defecto es bajo (20), las probabilidades estimadas son muy variables. Necesitaríamos un número de simulaciones mucho mayor para obtener una estima más precisa (por ejemplo 10000):

modelo( mu = 0.01, s2 = 0.15, N0 = 40, Nx = 10, tiempo = 20, sim = 10000 )

Evaluación

Realiza la prueba de evaluación disponible en la herramienta Exámenes del Aula Virtual.

Bibliografía

  • Begon M, Harper JL, Townsend CR (1988) Ecología. Omega, Barcelona.

  • Case TJ (2000) An Illustrated Guide to Theoretical Ecology. Oxford University Press, Oxford.

  • Caswell H (2001) Matrix Population Models. Sinauer, Sunderland MA.

  • Morris WF, Doak DF (2002) Quantitative Conservation Biology. Sinauer, Sunderland MA.

  • Piñol J, Martínez-Vilalta J (2006) Ecología con números. Lynx, Barcelona.

Descripción de las funciones, tablas de vida y matrices de proyección

Utiliza la función info. Por ejemplo: info( "modelo" ) o info( "ganso" ).