Ecologia BIO231C_2020

Poblaciones

En este módulo repasaremos y analizaremos conceptos centrales en el ámbito de la ecología de poblaciones, principalmente los principios de crecimiento exponencial (denso-independiente) y crecimiento logístico (denso-dependiente), así cómo las aproximaciones matemáticas (ecuaciones diferenciales y de diferencia) y sus implicancias biológicas.

En términos funcionales, de acuerdo a Berryman (2002) una población queda definida como:

“Un grupo de individuos de la misma especie que viven juntos en un área del tamaño suficiente para permitir la dispersión y/o el comportamiento migratorio y en el cual los cambios numéricos son mayoritariamente determinados por procesos de nacimiento y muerte.”

Por consiguente, la dinámica de poblaciones se centra en responder y generar preguntas relacionadas a los cambios en el número de individuos que experimenta una población.

Modelo de crecimiento exponencial

Siendo el modelo más sencillo de crecimiento poblacional, este modelo sólo cuenta con un parámetro que refleja la denso-independencia en el crecimiento de una población. La ecuación de diferencia corresponde a \[\frac{\Delta N}{\Delta t}=\frac{N_{t-1} - N_t}{\Delta t} = \lambda\] tal que N(t) corresponde al tamaño poblacional para un tiempo determinado, que depende solo del tamaño poblacional en el tiempo anterior N(t-1) y la tasa de crecimiento \(\lambda\). De forma análoga, la ecuación diferencial de este caso, corresponde a \[\frac{dN}{dt}=rN\] En este módulo, nos ocuparemos de la primera aproximación, para ver la evolución de una población en el tiempo bajo este principio poblacional.

Ahora, veamos cómo podemos programarla y simular un comportamiento exponencial de una población.Podemos pensar por ejemplo en dinamicas iniciales de poblaciones eruptivas como el caso actual de coronavirus o las etapas inciiales de crecimiento tumoral. Lo importante es ser capaz de identificar la entidad que definiremos como “individuo”. que puede ser tanto un organismo como una celula.

# Inicialmente definiremos los parámetros fijos del modelo

  N <- 10 # tamaño poblacional inicial
  lambda <- 1.5 # tasa de crecimiento
  tiempos <- 100 # numero de tiempos a simular

# Luego calculamos la abundancia para cada tiempo discreto en la ventana de tiempo de interes. 
# Notar que el tiempo avanza de forma discreta, lo que implican saltos de una unidad temporal.

  for(t in 2:tiempos){
    N[t] <- N[t-1] * lambda

  }

#A continuacion graficaremos los resultados
plot(`N`, bty="n", las=1, type="l", lwd= 2,ylim=c(0, max(N)),
       xlab="t", ylab="Population size (N)", main="Crecimiento Exponencial", col="blue")

./?

Respecto a lo que sabemos hasta el momento, responde a las siguientes preguntas.

Quiz

Modelo de crecimiento logistico

Este segundo modelo refleja el fenómeno de denso-dependencia en el crecimiento de una población (mecanismos de feedback o retroalimentación poblacional). En este caso abordaremos la aproximación en tiempo continuo y consideraremos que nuestra variable de interés es biomasa (una variable continua, diferenciable en el tiempo), siendo el modelo \[\frac{dN}{dt}=rN\times \Big(1 - \dfrac{N}{K}\Big)\]. Donde \(r\) es la tasa per capita de crecimiento poblacional y \(K\) es la capacidad de carga del sistema. Si buscamos las soluciones en el equilibrio (i.e., cuando \(\dot{N}=0\)) encontramos dos soluciones: la solución trivial \[\hat{N} = 0\] y otra solución tal que \[\hat{N} = K\].

¿ Cómo llegamos a estos resultados analíticos?

A continuación estudiaremos si esta aproximación analítica se corresponde con lo que podemos obtener a través de la simulación determinista de una población.

#Al igual que en el caso anterior, comenzaremos por definir la variables fijas 
# Definimos los parametros de crecimiento (fijos)
r <- 0.4 ; K <- 10

#Ademas necesitamos entregarle un vector inicial de poblacion (N0)
N0 <- c(N = 2)

#Definimos el intervalo de tiempo
time <- seq(from = 0, to = 30, by = 0.2)

#Creamos la funcion que describe el crecimiento logistico
LogisticGrowth <- function(t, N, parameters){
  r <- parameters[1]
  K <- parameters[2]
  dN <- r*N*(1 - N/K)
  list(dN)
}


#Creamos una realizacion para determinada condicion inicial dada
out_1 <- ode(y = N0, times = time, func = LogisticGrowth,
           parms = c(r,K))

#Graficamos el resultado
plot(out_1, bty="n",main = "Crecimiento Logistico", lwd = 2, xlab = "t", ylab = "Population size (N)", col="blue")

logistic.phasePortrait <- phasePortrait(logistic, ylim = c(-0.5, max(out_1)), lwd = 2,
                                        parameters = c(r,K), points = 10, col="purple", xlab="Tiempo", ylab="Función R")
#Tambien podemos crear otras instancias para comparar con el caso anterior.
#Por ejemplo cambiando la tasa de crecimiento
##Caso A:
N0 <- c(N = 2)
r <- 0.5  ; K <- 10
time <- seq(from = 0, to = 50, by = 0.2)

out_2 <- deSolve::ode(y = N0, times = time, func = LogisticGrowth,
           parms = c(r,K))

##Caso B:
N0 <- c(N = 2)
r <- 0.25 ; K <- 10

out_3 <- ode(y = N0, times = time, func = LogisticGrowth,
           parms = c(r,K))

#Y graficamos los resultados con el resultado anterior
plot(out_2,out_3, bty="n",main = "Crecimiento Logístico", 
     lwd = 2, xlab = "t", ylab = "Population size (N)",col = c("green", "blue"))
legend("bottomright",inset=0.05, c("Caso A", "Caso B"),cex=0.8, lty = c(1,2), col = c("green", "blue"))

Quick coding task

¿Qué crees que pasará si el tamaño poblacional inicial es mayor a la capacidad de carga? Evalúa el caso y grafica los resultados. Discute con respecto a si la capacidad de carga es un atractor o un repulsor demográfico (hint:puntos de equilibrios estables/inestables).

./?

Respecto a lo que sabemos hasta el momento, responde a las siguientes preguntas.

Quiz

Modelo de crecimiento logistico con efecto Allee

Este tercer modelo refleja el fenómeno de denso-dependencia positiva a bajor numeros poblacionales, tambien conocido como efecto Allee. En este caso abordaremos la aproximación en tiempo continuo y consideraremos que nuestra variable de interés es biomasa (una variable continua, diferenciable en el tiempo), siendo el modelo \[\frac{dN}{dt}=rN\times \Big(1 - \dfrac{N}{K}\Big) \times \Big( 1 - \dfrac{a}{N}\Big)\]. Donde \(r\) es la tasa per capita de crecimiento poblacional y \(K\) es la capacidad de carga del sistema y \(a\) es el umbral de Allee. Al igual que para el modleo logistikco podemos buscar las soluciones analiticas. A continuación estudiaremos si esta aproximación analítica se corresponde con lo que podemos obtener a través de la simulación determinista de una población.

#Al igual que en el caso anterior, comenzaremos por definir la variables fijas 
# Definimos los parámetros de crecimiento (fijos) y el umbral Allee
r <- 0.4 ; K <- 50 ; a = 5

#Ademas necesitamos entregarle un vector inicial de poblacion (N0)
N0 <- c(N = 10)

#Definimos el intervalo de tiempo
time <- seq(from = 0, to = 30, by = 0.2)

#Creamos la funcion que describe el crecimiento logistico con efecto Allee
AlleeGrowth <- function(t, N, parameters){
  r <- parameters[1]
  K <- parameters[2]
  a <- parameters[3]
  dN <- r*N*(1 - N/K) * (1 - a/N)
  list(dN)
}


#Creamos una realizacion para determinada condicion inicial dada
out_1 <- ode(y = N0, times = time, func = AlleeGrowth,
           parms = c(r,K, a))

#Graficamos el resultado
plot(out_1, bty="n",main = "Crecimiento Logistico", lwd = 2, xlab = "t", ylab = "Population size (N)", col="blue")

logistic.phasePortrait <- phasePortrait(logistic, ylim = c(-0.5, max(out_1)), lwd = 2,
                                        parameters = c(r,K,a), points = 10, col="purple", xlab="Tiempo", ylab="Función R")
#Tambien podemos crear otras trayectorias para comparar con el caso anterior.
#Por ejemplo cambiando la tasa de crecimiento
##Caso A:
N0 <- c(N = 10)
r <- 0.5  ; K <- 50 ; a <- 8
time <- seq(from = 0, to = 50, by = 0.2)

out_2 <- deSolve::ode(y = N0, times = time, func = AlleeGrowth,
           parms = c(r,K,a))

##Caso B:
N0 <- c(N = 10)
r <- 0.25 ; K <- 2 ; a = 6

out_3 <- ode(y = N0, times = time, func = AlleeGrowth,
           parms = c(r,K,a))

#Y graficamos los resultados con el resultado anterior
plot(out_2,out_3, bty="n",main = "Crecimiento Logistico", 
     lwd = 2, xlab = "t", ylab = "Population size (N)",col = c("green", "blue"))
legend("bottomright",inset=0.05, c("Caso A", "Caso B"),cex=0.8, lty = c(1,2), col = c("green", "blue"))

Simon P. Castillo - spcastil@uc.cl