====== Modelos Densidade Independente ======
Em uma população onde as taxas de nascimento e mortalidade são constantes (não são afetadas pelo tamanho da população), dizemos que essa população tem um crescimento independente da densidade dela própria.
Essa situação é geralmente relacionada a uma ausência de restrição ao crescimento, onde os recursos são ilimitados, mas pode também estar associada a uma depleção de recursos e à extinção da população.
===== Taxa de crescimento =====
Vamos imaginar agora uma população hipotética com taxas constante de crescimento e mortalidade e sem migrações. A cada ciclo de tempo relacionado a uma geração (T), o tamanho da população é o resultado do número de indivíduos da geração anterior mais números de nascimentos (B), menos mortes (D).
$$N_{T+1} = N_T + B - D $$
Podemos relacionar o número de mortes e nascimentos a um valor per capita:
* $ B=bN_T $
* $ D=dN_T $
onde: b = taxa de nascimento per capita a cada geração ; d = taxa de mortalidade per capita a cada geração.
Note que a taxa não muda com o tamanho da população, entretanto, o número de nascimentos e mortes é proporcional ao tamanho populacional. Vamos apenas deixar claro mais uma premissa, para fins didáticos: os nascimentos e mortalidades ocorrem simultaneamente na população (p.ex: uma planta anual).
Sendo //T// a escala de uma geração, podemos então dizer que :
* $N_{T+1} = N_T + bN_T-dN_T $
* $N_{T+1} = N_T + (b-d)N_T $
se: $r_T = b-d$ ; fator de crescimento discreto
* $N_{T+1} = (1+r_T)N_T$
* $\frac{N_{T+1}}{N_T} = 1+r_T$
Como $ 1+r_T $ é uma constante, vamos designá-la como $\lambda$, um número positivo que mede o aumento proporcional da população de uma geração a outra. Portanto:
* $\lambda=\frac{N_{T+1}}{N_T} $, ou:
$$ N_{T+1} = \lambda N_T$$
===== Projetando a População =====
Podemos então projetar a nossa população a cada ciclo de tempo (gerações). Por exemplo:
Se uma população com 100 indivíduos tem uma taxa per capita de natalidade de 0,8/ano e de mortalidade de 0,75/ano, qual o tamanho esperado da população no próximo ano?
N0=100
lamb=1+(0.8-0.75)
Nt1=N0*lamb
Nt1
Podemos também projetar a população para outras gerações, usando iterações:
(Nt2=Nt1*lamb)
(Nt3=Nt2*lamb)
(Nt4=Nt3*lamb)
Note que:
* $N_{T4}= N_{T0} \lambda \lambda\lambda\lambda $
* $N_{T4}= N_{T0} \lambda^4 $
Essa equação recursiva pode ser escrita como:
$$N_{T}=\lambda^T N_0 $$
Vamos pegar nosso exemplo anterior e projetá-lo para 10 ciclos de tempo.
N0=100
lamb=1+(0.8-0.75)
tmax=10
tseq=0:tmax
Nseq=N0*lamb^tseq
Nseq
plot(tseq, Nseq, type="l")
===== Tamanho Inicial =====
Vamos agora explorar o tamanho inicial da população.
* $N_0 = 10,20,30, 40 $
* $\lambda = 1,5$
* $ tempo = 1:10$
tseq=0:10
lamb=1.5
N0=c(10,20,30,40)
N0.mat=matrix(N0, ncol=length(tseq), nrow=length(N0))
N0.mat
lamb_t=lamb^tseq
lambt_mat=matrix(lamb_t,ncol=length(tseq), nrow=length(N0), byrow=TRUE)
Nt=N0.mat*lambt_mat
colnames(Nt)<-paste("t", 0:10, sep="")
rownames(Nt)<-paste("N0", c(10,20,30,40), sep="_")
Nt
matplot(0:10,t(Nt))
Vamos agora colocar o mesmo gráfico em uma escala logarítmica para o eixo y.
par(mfrow=c(1,2))
matplot(0:10,t(Nt))
matplot(0:10, t(Nt), log="y")
O que está acontecendo?? Parece que todas as populações crescem igualmente quando estamos em uma escala logarítmica!
Vamos investigar a equação que estamos usando, $N_t=\lambda^T N_0$ e tirar o log dos dois lados da equação:
* $log{N_T} = log{\lambda^T N_0}$
* $ log{N_T} = (log{\lambda}) T + log{N_0} $
Essa equação lembra uma equação da reta $ y=ax+b $, onde o intercepto é $log(N_0)$ e a inclinação é iqual a $log{\lambda}$.
==== Desafio ====
* Demonstre graficamente que a inclinação das populações do exemplo acima são iguais a $log{\lambda}$.
===== Média do Crescimento Populacional =====
{{:exercicios:pardal.jpg?200 |}}
Vamos agora investigar os dados do tamanho populacional de uma espécie de pardal norte-americano (//Melopiza melodia//) partindo da premissa que essa população cresce em tempo discreto, já que os nascimentos ocorrem em um intervalo curto de tempo de nidificação a cada ano.
{{ :exercicios:parda.png?300 |}}
O gráfico representa a contagem de pardais cantores na cidade de Darrtown, OH, USA.
Baixe os dodos do arquivo {{:exercicios:pardal.txt|}} no seu computador.
Vamos calcular os $\lambda$ para os cinco primeiros intervalos:
pardal<-read.table("pardal.txt", header=TRUE, sep="\t", as.is=TRUE)
str(pardal)
head(pardal)
pardal6= pardal[1:6,]
plot(pardal6$Count ~pardal6$Year)
lamb_pardal=pardal6$Count[2:6]/pardal6$Count[1:5]
lamb_pardal
Agora, vamos calcular a projeção da população pela média aritmética e geométrica dos $\lambda$ e desenhar as projeções junto com os dados observados!
#media aritmetica
(lamb.art = mean(lamb_pardal))
#media geometrica
(lamb.geo = prod(lamb_pardal)^(1/5))
tseq=0:5
plot(tseq, pardal6$Count, pch=19)
N0=pardal6$Count[1]
lines(tseq, N0*lamb.art^tseq, lty=2, col="red")
lines(tseq, N0*lamb.geo^tseq, lty=3, col="blue")
* Qual das duas médias parece se ajustar melhor aos dados observados? Por quê?
==== Crescimento Discreto ====
Abaixo tem o código de uma função base para a projeção do crescimento crescimento de uma população, que pode ser usada como estrutura básica para outras funções que iremos desenvolver no curso. No caso, é uma funcão com 3 argumentos: número de indivíduos no tempo 0 (N0), taxa de crescimento populacional (lamb) e o tempo máximo (tmax) de projeção da população.
cresc.geom= function(No=100, lamb=1.04, tmax=10)
{
resulta <- rep(NA,tmax)
resulta[1] <- No
for (i in 2:tmax)
{
tam=resulta[i-1]*lamb
resulta[i]=tam
}
return(resulta)
}
Ao copiar esse código na área de trabalho do R, um novo objeto é criado, de nome //cresc.geom//. Ele é um objeto da classe função que você pode usá-lo digitando o seu nome e especificando seus argumentos, como no exemplo a seguir:
resultado <- cresc.geom(No=10, lamb=0.98, tmax=100)
Note que o resultado da função, nesse caso, será guardado no objeto //resultado//. Para fazer um gráfico dos resultados pode utilizar o código abaixo:
plot(1:length(resultado), resultado)
===== Crescimento Contínuo =====
Nem todos os organismos são como plantas que tem uma época reprodutiva bem definida e que, em parte, podem ser modelados com o tempo discreto. Mesmo partindo da premissa que todos os nascimentos ocorrem em um curto intervalo de tempo anualmente (como no caso dos pardais), a mortalidade ocorre continuamente nessas populações. Para a grande maioria das populações nascimentos ocorrem praticamente a qualquer instante e são assincrônicas, o crescimento discreto não parece uma boa descrição desse fenômeno.
Vamos modelar uma população que tem uma taxa de crescimento anual de $\lambda = 1,5$.
* $N_1=N_0 \lambda$ , ou:
* $N_1=N_0 (1+ rd)$ , onde //rd// = coeficiente discreto de crescimento
* $N_1= N_0(1 + 0.5)$
Agora, vamos supor que essa mesma população tenha dois ciclos reprodutivos anuais, portanto temos que modelar seu crescimento por semestre, o que equivale a dizer que:
* $N_1=N_0 (1+0.5/2)^2 -> N_0(1+0.25)^2$
Ou seja, essa população tem uma taxa de crescimento de $\lambda = 1+ 0.25 $ por semestre. Trimestralmente teria uma taxa de (1 + 0.5/4)^4 e assim por diante, podemos então descrever:
$$ \frac{N_1}{N_0}= (1+\frac{r_d}{n})^n $$
O que acontece se deixarmos o número de frações de tempo cada vez maior, tendendo a um número infinitamente grande?
$$ \lim\limits_{\to \infty}(1+\frac{r_d}{n})^n$$
Vamos tentar resolver o limite acima de forma bruta, aumentando o número de divisões dentro de um ano da nossa taxa de crescimento discreta. A principio vamos deixar o $\lambda =2$, portanto o $r_d=1$ e o $N_0=1$ ; portanto $\frac{N_t}{N_0}= N_t$. Em seguida vamos fazer $\lambda =3$ e $\lambda =1.5$ (r=2 e r=0.5).
##############################
#### Crescimento Contínuo ####
##############################
n<- c(0:100, 200, 500,1000, 10000, 100000,1e+10)
N0 <- 1
rd1 <- 1
N1<-N0* (1+ rd1/n)^n
N1_N0= N1[length(N1)]/N0
plot(1:103, N1[1:103]/N0, type="l")
text(x=50, y=2.5, labels= paste("Máximo = ", N1[length(N1)/N0]))
N1_N0
exp(1)
rd2=2
N1a<-N0* (1+ rd2/n)^n
N1a_N0= N1a[length(N1a)]/N0
N1a_N0
exp(2)
rd.5=0.5
N1b<-N0* (1+ rd.5/n)^n
N1b_N0= N1b[length(N1b)]/N0
N1b_N0
exp(0.5)
Acima, demostramos na força bruta que:
$$ \lim\limits_{\to \infty}(1+\frac{r_d}{n})^n = e^r$$
Ou seja:
$$\frac{N_t}{N_0}=e^{rt} $$
$$N_t= N_0 e^{rt}$$
Chegamos a equação de crescimento contínuo!!
Além disso, chegamos a relação entre a taxa intrínseca de crescimento instantâneo e a taxa de crescimento discreto da população:
$$ \lambda = e^r $$ ou
$$ r = log_n(\lambda)$$
===== Equação diferencial =====
O mesmo problema do crescimento contínuo pode ser abordado de outra forma, utilizando uma equação diferencial.
Nesse caso, podemos dizer que a taxa de variação instantânea da população é igual a uma taxa intrínseca de crescimento (//r//), multiplicado pelo tamanho da população (//N//).
$$ \frac{dN}{dt}=rN $$
O {{:exercicios:maximalogo.png?30|}} Maxima pode nos ajudar a solucionar a equação diferencial.
Digite as seguintes expressões, indicando que você quer resolver (ode2) a equação diferencial acima:
diff(N(t),t)=r*N(t);
ode2(%, N(t), t);
O resultado deve ser:
$ N(t)=c * e^{rt} $
Como o //c// representa o intercepto ou a situação inicial do sistema, o nosso $N_0$, chegamos novamente a:
$$ N_t= N_0 e^{rt} $$
====== Função Crescimento Exponencial ======
A partir da função cresc.geom, vamos criar uma função de crescimento contínuo exponencial. Há várias formas de fazê-la, mas vamos usar uma lógica que, apesar de não ser a mais eficiente ((nem de perto)), vai nos ajudar em outro passos de exercícios futuros.
Basicamente, temos que mudar:
*1. nome da função: //cresc.exp//
*2. argumentos: //lamb// para //rc//
*3. a linha:
tam=resulta[i-1]*lamb
muda para
tam=resulta[i-1]*exp(rc)
O resto permanece como estava:
cresc.exp= function(No=100, rc=0.04, tmax=10)
{
....
tam=resulta[i-1]*exp(rc)
....
}
===== Estocasticidade Ambiental =====
Flutuações ambientais podem exercer efeito na taxa de crescimento instantâneo da população. De uma forma simples, podemos imaginar que essa variação funcione como um ruído no //r//, como se a população em média tivesse uma taxa, mas a cada realização ela pudesse ser um tanto diferente devido a condições externar a ela própria. A implementação dessa estocasticidade ambiental em modelos contínuos é um pouco mais complicada, mas podemos imaginá-la como realizações em algum intervalo pequeno de tempo.
Para um crescimento discreto a construção de simulações com estocasticidade ambiental é mais intuitivo: a cada realização o Lambda é afetado pela variação ambiental. Vamos fazê-la.
npop=10
n0=10
lamb.med = 1.2
lamb.sd= 0.4
lamb = rnorm(npop, mean=lamb.med, sd=lamb.sd)
N0=rep(n0,npop)
N1=lamb*N0
lamb=rnorm(npop, mean=lamb.med, sd=lamb.sd)
N2=N1*lamb
N3=N2*rnorm(npop,mean=lamb.med,sd=lamb.sd)
N4=N3*rnorm(10,mean=lamb.med,sd=lamb.sd)
N5=N4*rnorm(10,mean=lamb.med,sd=lamb.sd)
Nt<-rbind(N0,N1,N2,N3,N4,N5)
matplot(0:5, Nt, type="l", lty=2:7)
==== Desafio ====
É possível adaptar a nossas função anterior de crescimento discreto para que possa também modelar populações com estocasticidade ambiental!
O primeiro passo sempre e pensar quais argumentos vamos precisar
Nesse caso, temos apenas mais um argumento o **//lamb.dp//** : o desvio padrão de //lambda//. O resto continua o mesmo, lembre-se que se o **//lamb.dp//** for 0, nosso população é determinística! Ou seja, a mesma função pode se prestar para simular ambos cenários.
----