Los cambios en la abundancia de individuos es una de las características más importantes de una población (dinámica poblacional). Los cambios en la abundancia resumen varios procesos que se dan al interior de la comunidad; tasas de natalidad y mortalidad, y tasas de emigraciones e inmigraciones. El poder comprender esta dinámica y proyectar lo que sucederá en el futuro es una de las cuestiones básicas que la ecología de poblaciones persigue. El contar con modelos efectivos de proyección del tamaño poblacional es fundamental para desarrollar acciones de manejo de especies protegidas o en peligro de extinción.
Se han propuesto varios modelos de crecimiento poblacional, uno de los modelos básicos es el crecimiento denso-independiente, este crecimiento postula que la tasa de incremento per capita no tiene dependencia estadística del tamaño de la población. En otras palabras, las tasas de natalidad y mortalidad de un individuo son independientes del número de individuos que tenga la población. Aunque esto parezca no tener mucho sentido biológico, el modelo de crecimiento denso-independiente propone que la influencia que ejerce el tamaño poblacional sobre la tasa de incremento debe ser estadísticamente detectable. De esta forma, es posible que existan efectos del tamaño sobre la tasa de incremento pero estos no son suficientes para que sean detectados estadísticamente.
Ahora el modelo toma algo más de sentido, sin embargo hay que tener cuidado puesto que el detectar una relación significativa, al igual que en cualquier relación estadística, depende entre otros de dos variables; el número de observaciones y el rango de la variable predictora. Por lo tanto, nuestra conclusión, de que una población en particular exhibe un crecimiento independiente de la densidad, puede ser difícil establecer, si el tamaño de muestra es pequeño (pocas generaciones muestreadas), o si muestreamos la población en un rango muy estrecho de densidades.
A continuación describiremos dos de los modelos básicos de crecimiento denso independiente, el crecimiento geométrico discreto y el crecimiento exponencial continuo.
Para entender mejor la derivación del modelo de crecimiento geométrico discreto propondremos un ejemplo hipotético, a partir de este ejemplo iremos calculando los diferentes argumentos necesarios para construir un modelo de crecimiento geométrico.
Imaginemos que en un bosque natural se ha reportado la llegada de una especie de mariposa introducida. Es importante realizar el seguimiento de esta población con el fin de evaluar los posibles efectos sobre la diversidad local. Estas mariposas tienen un ciclo de vida de 3 meses, así que se ha decidido muestrear el bosque cada tres meses con el fin de evaluar los cambios en el tamaño poblacional. Luego de 13 meses de seguimiento tenemos datos del tamaño poblacional de esta especie en 5 periodos distintos. Vamos a ver que nos dice esta información.
#Tamaño de la mariposa durante los 13 meses
N<- c(2,4,8,16,32)
#Tiempo en el cual se hizo la observación
tiempo <- seq(as.POSIXct("2018-01-15"),as.POSIXct("2019-02-15"), by=60*60*24*30*3)
plot(tiempo, N, type="b",
xlab="Meses de muestreo",
ylab="Tamaño. N", ylim=c(0,40))
text(tiempo, N, N, pos=3)
Vemos que la población está creciendo, aparentemente ese crecimiento es más grande en cada ciclo. Una forma de ver la tasa a la cual está creciendo la población es dividiendo el tamaño poblacional en el tiempo dos para el tamaño en el tiempo uno.
\[tasa = (N_{t+1}/N_t)\]
Según esta fórmula, la tasa de incremento en el primer periodo sería 4/2, lo que nos daría una tasa de 2. Ahora veamos para todos los periodos.
## [1] 2 2 2 2
Como vemos, el crecimiento de la población tiene una tasa de incremento de dos en todos los periodos. Al contrario de lo que pensamos, la población no está creciendo más cada año, la tasa de incremento se ha mantenido constante a lo largo de los 13 meses de seguimiento de la población. Lo que si podemos ver, es que con una tasa de 2 la población se duplica cada ciclo, esta aseveración la podríamos representar como:
\[N_{abril} = 2 * N_{enero}\]
\[\frac{N_{abril}}{N_{enero}} = 2\]
Podemos generalizar esta fórmula como:
\[N_{t+1} = \lambda * N_t\] En este caso \(N_{t+1}\) representa el tamaño poblacional en el tiempo 1.
\[\frac{N_{t+1}}{N_{t}} = \lambda\] En este caso \(\lambda\) representa la tasa de incremento de la población.
Hemos logrado generar un modelo que nos permite representar el crecimiento, podemos utilizar este modelo para proyectar la población. Veamos la proyección de la población por cada periodo, en el caso del ejemplo de las mariposas cada 3 meses.
\[N_{abril} = 2 * N_{enero}\] \[N_{julio} = 2 * N_{abril} = 2 * (2 * N_{enero})\] \[N_{octubre} = 2 * N_{julio} = 2 * (2 * N_{abril})= 2 * (2 * (2 * N_{enero}))\]
Como vemos, podemos calcular el incremento de la población en cualquier momento, únicamente es necesario multiplicar la tasa de incremento por tantos ciclos queremos proyectar. Si queremos proyectar la población desde enero a octubre (tres ciclos), debemos multiplicar la tasa de crecimiento tres veces: 2 x 2 x 2 o lo que es lo mismo \(2^3\), así la tasa se eleva a la cantidad de ciclos que queremos proyectar la población. Ahora, generalizamos el modelo incluyendo en nuestra formula:
\[N_{t+1} = \lambda^t * N_t\]
Veamos si nuestro modelo nos permite proyectar la población de las mariposas.
# hacemos una función para calcular el tamaño de la población
crec <- function(lambda, t, N){
N <- lambda^t * N
return(N)
}
##Proyectemos a cuatro periodos y comparemos con la población que teníamos
crec(2,4,2)
## [1] 32
## [1] 2 4 8 16 32
## [1] 8192
Efectivamente, en 12 periodos pasaremos de 2 a 8192 individuos de mariposas. Nuestro modelo nos permite predecir el tamaño de la población en cualquier periodo. Como hemos visto conocer la dinámica de la población y poder modelar, nos permite comprender las tendencias de esta población en el futuro y de esta forma establecer medidas de manejo, sin embargo, es necesario que comprendamos el efecto que tiene el tamaño poblacional inicial y la tasa de incremento per capita sobre esa dinámica de crecimiento.
Es importante que diferenciemos dos conceptos; magnitud de cambio y tasa de incremento. La magnitud de cambio hace referencia a la cantidad de individuos totales que una población ha incorporado. En el ejemplo de las mariposas, tenemos que el primer ciclo cambio la población de dos a cuatro, eso quiere decir que la magnitud de cambio fue de dos individuos incorporados a la población, en el segundo ciclo la población paso de cuatro a ocho individuos, la magnitud del cambio fue de cuatro individuos incorporados. Por otro lado, la tasa de incremento realmente no cambio para los dos periodos se mantuvo en dos.
Como vemos la magnitud de cambio depende del tamaño de la población inicial, aunque la tasa de incremento se mantenga constante. A continuación vamos a calcular el crecimiento de la población, cambiando el tamaño inicial.
N0 <- c(10, 20, 30) #tres tamaños iniciales distintos
t <- c(0:6) #seis periodos
Nm <- matrix(NA,7,3)
#Proyectamos las tres poblaciones
for(i in 1:3){
Nm[,i] <- crec(2,t=t, N=N0[i])
}
matplot(Nm, type="b")
Al observar el gráfico, se puede apreciar un crecimiento diferente en cada una de las poblaciones, con un ritmo más acelerado en la población tres, esta diferencia es más evidente en cada ciclo. Pero, ¿realmente las poblaciones están creciendo a una tasa distinta? Para responder esta pregunta podemos log-transformar los datos y observar si la tasa de crecimiento es distinta. De ser distinta esperaríamos una pendiente más pronunciada, lo que implicaría a su vez una tasa de incremento mayor.
La gráfica muestra que la pendiente de las tres poblaciones es similar. Lo que cambia en cada población es el intercepto (donde inicia la población).
Como hemos visto lambda actúa directamente sobre la población, por lo que los cambios en la tasa per capita tienen un fuerte efecto sobre el crecimiento de la población. Cuando lambda tiene valores inferiores a uno la población decrece, mientras que con valores superiores a uno la población se incrementa, con valores de uno la población se mantiene constante.
Aunque en el ejemplo de las mariposas que hemos utilizado, la población crece a una tasa constante la verdad es que en la naturaleza esto no necesariamente sucede, diversos procesos pueden afectar el crecimiento durante un momento dado, por lo que la población puede cambiar en su crecimiento. Pero, si la tasa de incremento per capita es variable, que dato uso para proyectar la población.
Una forma que podemos hacer es usar el valor medio de los diferentes periodos. Vamos ahora a proyectar una población de ninfalidos.
#Nuestros datos
ninfalidos <- c(100, 50, 75)
#obtengamos lambda
ninL <- ninfalidos[2:3]/ninfalidos[1:2]
ninL
## [1] 0.5 1.5
## [1] 100
#según nuestro modelo deberíamos tener 100 individuos, pero
#realmente tenemos 75, nuestro modelo no funcionó
La media aritmética no resulto ser la mejor medida para poder proyectar la comunidad. Una medida que se ajusta mejor es la media geométrica. La média geométrica se calcula como:
\[MG = (x_1*x_2*x_3 ...x_n)^{(1/n)}\]
Donde; \(x\) es el valor de la variable y \(n\) la cantidad de elementos de la variable.
#calculamos la media geométrica
xgL <- prod(ninL)^(1/2) #La función prod devuelve el producto de
#todos los elementos. En este caso n=2
#usamos nuestra función
crec(lambda = xgL, t = 2,N = 100)
## [1] 75
En este caso la media geométrica calculada como el producto de los valores de lambda para cada periodo y elevada a uno dividido para t (el número de periodos) mostró ser mejor medida para proyectar nuestra población.
Vamos a utilizar datos sparrows que están anclados en el paquete primer. Estos datos corresponden a conteos anuales de gorriones (Melospiza melodia) en Darrtown, OH, USA por Sauer, J. R., J.E. Hines, and J. Fallon. 2005. Los conteos ha sido desarrollados desde 1966 hasta 2005, en total 36 años.
## Year Count ObserverNumber
## 1 1966 34 1
## 2 1967 40 1
## 3 1968 42 1
## 4 1969 54 1
## 5 1970 49 1
Utilizaremos estos datos para justar un modelo de crecimiento geométrico. Nos interesa evaluar en qué medida el modelo de crecimiento geométrico se ajusta a lo que le paso a la población de gorriones. Siga los siguientes pasos para construir el modelo.
Ahora puede explorar que sucede si usamos un número años diferente para generar el modelo de crecimiento de la población de gorriones.
Lm <- 28 #Modifique este valor para cambiar el número de años
#Ejecute el resto de código
popSp <- sparrows[1:Lm,2]
lambdaSp <- popSp[2:Lm]/popSp[1:Lm-1]
lamSppg <- prod(lambdaSp)^(1/(Lm-1))
proy1 <- crec(lambda = lamSppg, t = 1:(36-Lm), N = sparrows[Lm,2])
proy1 <- c(sparrows$Count[1:Lm], proy1)
plot(sparrows$Year, sparrows$Count, type="l", ylim=c(0,max(proy1, sparrows[,2])), xlab="Años", ylab="Abundancia")
lines(sparrows$Year, proy1, col ="darkred", lwd=1.4)
lines(sparrows$Year[1:Lm], proy1[1:Lm], col ="darkblue", lwd=1.4)
mtext("Crecimiento de gorriones en Darrtown, OH", side=3, adj=0, line=0.7, cex=1, font=2)
Conteste las siguientes preguntas:
El modelo geométrico propone el crecimiento de la población como una serie de eventos reproductivos, así cada ciclo la población se reproduce en un único evento. Aunque esta aproximación ha sido utilizada para estudiar poblaciones de varios grupos, no en todos los casos ha tenido un buen ajuste. El problema principal está en que las poblaciones no crecen a saltos, las poblaciones tienen múltiples eventos de reproducción.
Vamos a ver un ejemplo y comprender que implicaciones tiene este cambio de un único evento reproductivo o varios eventos. Usaremos como ejemplo una bacteria muy conocida la Escherichia coli. Imaginemos que ponemos en una caja petri 1000 individuos de E. coli y al siguiente día contamos la cantidad de bacterias y tenemos \(10^10\) bacterias, eso implicaría que las bacterias tienen una tasa de incremento (lambda) de \(10^7\) por día. Pero esto no es tan cierto, el ciclo de las bacterias no es de un día, posiblemente es cercano a minutos, además las bacterias están reproduciéndose continuamente y de forma asíncrona. Como vemos el crecimiento geométrico no se acopla a esta realidad.
Hace mucho atrás Jacob Bernulli (1654), se dio cuenta que el crecimiento geométrico depende de la periodicidad que asumimos que ocurren los ciclos reproductivos. Así una población que se incremente a una tasa de \(\lambda = 1.5\) anualmente, implicaría que la población incremente el 50% cada año, por lo que su tasa de incremento discreto es \(r_d = 0.5\). Pero que sucedería si en el año en vez de tener un periodo reproductivo tenemos dos, eso implicaría que esta tasa debería ser dividida para 2 y el resultado debería ser elevado para el número de ciclos que se dan en el año (2). De esta forma pasaríamos del modelo de crecimiento con un ciclo anual a un modelo con dos ciclos.
\[N_1 = N_0(1+0.5)\] \[N_1 = N_0(1+05/2)^2\]
Podríamos generalizar como:
\[N1 = N_0\biggl(1+ \frac{r_d}{n}\biggr)^n\] \[\frac{N1}{N0} = \biggl(1+ \frac{r_d}{n}\biggr)^n\] Ahora que pasa si los ciclos de reproducción son continuos, o infinitos periodos durante el año.
n <- 1:100 #entre 1 y 100 periodos en el año
N0 <- 1 #población inicial de 1
rd <- 1 #tasa de incremento discreto
#Calculamos el tamaño de la población
N1 <- N0 * (1 + rd/n)^n
#Graficamos los datos
plot(n, N1/N0, type = "l")
text(50, 2, "For n = 100,")
text(50, 1.6, bquote((1 + frac("r"["d"], "n"))^"n" == + .(round(N1[101]/N0, 3))))
Como vemos cuando incrementamos el número de eventos reproductivos llegamos a una constante que es 2.718. Podemos usar esta constante para modificar el crecimiento discreto de la población y transformar a un crecimiento continuo. De esta forma podemos generalizar el crecimiento exponencial y representarlo como:
\[N_t = N_0e^{rt}\] en este caso r es la tasa intrínseca de crecimiento.
Veamos como podemos ajustar un modelo de crecimiento exponencial continuo.
#nuestra población
mariposas <- c(10, 25, 89, 160, 312)
#obtenemos lambda
lamM <- mariposas[2:5]/mariposas[1:4]
#convertimos lambda en r
rM <- log(lamM)
##Hacemos una función de crecimiento exponencial
crecE <- function(N0,r,t ){
N <- N0*exp(r*t)
return(N)
}
#obtenemos la media aritmética de r
rMx <- prod(rM)^1/4
#proyectamos la población
marCrecE <- crecE(N0=15, r = rMx, t = 1:50)
plot(marCrecE, type="l")
Como vemos r tiene un efecto sobre el crecimiento, valores superiores a 0 implicarán un incremento de la población, mientras que valores debajo de cero implicarán una reducción de la población.
r1 <- crecE(40,0.06,1:20)
r2 <- crecE(40,0,1:20)
r3 <- crecE(40,-0.1,1:20)
plot(r1, type="l", ylim=c(-10,150), col="green", main="Tasa instantánea de crecimiento")
lines(r2, col="darkred", lty=2)
lines(r3, lty=3)
text(5,60, "r>0", font=2, cex=1.5)
text(5,45, "r=0", font=2, cex=1.5)
text(5,30, "r<0", font=2, cex=1.5)
Hasta ahora hemos trabajado con modelos deterministas usando una tasa de incremento promedio. Otra aproximación es simular la dinámica de la población.
El proyectar el crecimiento de la población debería incluir alguna cuantificación de incertidumbre. Una forma para incluir esta incertidumbre es analizar los datos y utilizarlos para calcular parámetros del modelo de forma aleatoria.
Antes utilizamos una media geométrica de lambda pero esa media tenía una variación. Podríamos utilizar esa variación como una medida aleatoria y proyectar la población. Miremos los datos:
FALSE [1] "Year" "Count" "ObserverNumber"
Podríamos graficar el tamaño de la población en los 36 años y lambda para cada uno de ellos.
par(mfcol=c(1,2))
plot(Year, Count, type="b", pch=19)
obs.R <- Count[-1]/Count[-length(Count)]
plot(Year[-1], obs.R, pch=19)
abline(h = 1, lty = 3)
¿Qué pasa con la tasa de crecimiento? Como se puede ver, lambda es muy variable y excepción de un dato, esta varía entre 1.5 y 0.5. Podemos utilizar esta variación para construir nuestra simulación
Simularemos el crecimiento de la población a 50 años, pero no utilizaremos una media geométrica de lambda, sino obtendremos valores aleatorios de los datos observados de lambda, para cada ciclo.
Ahora tenemos nuestra tasa de incremento aleatoria para cada año. Hemos incluido la función set.seed para que la simulación sea igual para todos.
Generamos un vector vacío para poder poner nuestra predicción.
sim1 <- numeric(years + 1)
sim1[1] <- Count[Year == max(Year)]
for (t in 1:years) {
sim1[t + 1] <- sim1[t] * sim.Rs[t] }
Ahora podemos graficar la población simulada
Repitamos el proceso pero ahora sin utilizar set.seed. ¿Qué pasó?
Tenemos una población simulada, sin embargo, cada que ejecutamos la función tenemos nuevos datos, para que podamos obtener información de esta simulación debemos generar múltiples corridas.
Ahora vamos a realizar 10 simulaciones
sims <- 10
sim.RM <- matrix(sample(obs.R, sims * years,
replace = TRUE),
nrow = years, ncol = sims)
sim1[1] <- Count[Year == max(Year)]
outmat <- sapply(1:sims, function(i) {
for (t in 1:years) sim1[t + 1] <-
sim1[t] * sim.RM[t, i]
sim1
})
Aunque con estas diez simulaciones podemos ver los límites de como varia esta población, sigue siendo insuficiente, debemos hacer muchas simulaciones para poder ser consistentes en la información que obtenemos.
Correremos una función creada por Stvens (2009) que permite hacer la simulación de la población.
PopSim <- function(Rs, N0, years = 50, sims = 10) {
sim.RM = matrix(sample(Rs, size = sims * years, replace = TRUE),
nrow = years, ncol = sims)
output <- numeric(years + 1)
output[1] <- N0
outmat <- sapply(1:sims, function(i) {
for (t in 1:years) output[t + 1] <- round(output[t] *
sim.RM[t, i], 0)
output
})
return(outmat)
}
Ahora, podemos simular la población y solo debemos incluir los datos de lambda (obs.R), el tamaño inicial de la población (N0) y la cantidad de simulaciones.
par(mfcol=c(2,1), mar=c(2,4,1,1))
output <- PopSim(Rs = obs.R, N0 = 13, sims = 1000)
matplot(output/1000, type="l", ylab="Número/1000")
matplot(output/1000, type="l", ylim=c(0,10), ylab="Número/1000")
## [1] 51 1000
Extraemos el tamaño de la población en el último año2053, para poder analizar la proyección generada de la población.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 3.00 17.50 171.38 83.25 5936.00
Grafiquemos los datos y veamos su distribución. Adicionamos los límites de un intervalo de confianza del 95%.
par(mfcol=c(2,1), mar=c(2,4,1,1))
hist(N.2053, main = "N")
hist(log10(N.2053 + 1), main = "log(N+1)")
abline(v = log10(quantile(N.2053, prob = c(0.0275, 0.975))
+ 1), lty = 3)
A. Crecimiento geométrico
Analizar los siguientes datos:
En los años 1996 a 2005, los tamaños de población de lirio son N = 150, 100, 125, 200, 225, 150, 100, 175, 100, 150. Haz una gráfica del tamaño de la población en función del tiempo.
Calcular lambda para cada año; graficar lambda frente al tiempo.
Calcular la media aritmética y las medias geométricas de las tasas de crecimiento de esta población.
Sobre la base de la tasa media de crecimiento (la que usted considere apropiada) responda las siguientes preguntas:
¿Cuál sería el tamaño de la población se espera en 2025? ¿Cuál sería el tamaño estimado de la población, si ha utilizado la media inapropiada?
Describir la distribución de los tamaños de población proyectados para 2010.
B. Crecimiento de la población Humana
Busca información del tamaño de la población a nivel mundial o a nivel local. Obtenga la tasa intrínseca de crecimiento. ¿Cómo ha cambiado la tasa intrínseca de crecimiento, r?
Representa gráficamente el modelo del tamaño de la población humana de la fecha más antigua que dispongas a 2050.
Añadir puntos en el gráfico que indica las duplicaciones de la población.
Responde las siguientes preguntas: ¿Qué va a impedir que los humanos prevalezcan en el planeta a finales de este siglo? ¿Qué controla el crecimiento de la población humana? ¿Estos controles varían espacialmente en todo el planeta?