Estocasticidade Demográfica

Neste exercício vamos projetar o crescimento exponencial em tempo discreto de duas formas diferentes: sem estocasticidade demográfica(determinístico) e com estocasticidade demográfica.

Ao contrário do exercício anterior onde usamos os parâmetros de crescimento populacional (r e lambda), neste vamos modelar diretamente os eventos de reprodução (b) e mortalidade (d) para projetar as populações. Ou seja, iremos usar as taxas b e d para estimar quantos indivíduos nascem e quantos morrem em cada passo no tempo.

Na primeira parte faremos isso de forma determinística, onde os valores b e d determinam o crescimento da população e são constantes. Na segunda parte cada indivíduo poderá morrer ou reproduzir dada uma probabilidade, como se fosse lançada uma moeda para determinar a sua sobrevivência ou reprodução. Esta forma de modelar o crescimento da população vai evidenciar a impossibilidade dos indivíduos poderem sobreviver ou reproduzir em frações.

Por fim, iremos fazer um gráfico que mostra o crescimento determinístico e o crescimento estocástico, para que possamos compará-los. Olhe também os valores apresentados no final da execução da função e note como a diferença entre taxa base e taxa realizada varia com o tamanho da população, tanto para b como para d.
Testar com b=0.14, d=0.08, No = 100, tmax= 50
<box 70 red |Uma função pronta> Veja uma solução para o código da função aqui: estoc_demog.r </box>

 est.dem=function(N0=100, b=0.55, d=0.5, tmax=50)
{
...
}
 est.dem=function(N0=100, b=0.55, d=0.5, tmax=50)
{
resulta=matrix(0,ncol=7, nrow=(tmax+1))
colnames(resulta)=c("tempo", "Nt.st", "nasc.st", "mort.st", "Nt.dt", "nasc.dt", "mort.dt")
...
est.dem=function(N0=100, b=0.55, d=0.5, tmax=50)
{
resulta=matrix(0,ncol=7, nrow=(tmax+1))
colnames(resulta)=c("tempo", "Nt.dt", "nasc.dt", "mort.dt", "Nt.st", "nasc.st", "mort.st")
resulta[,1]=0:tmax
resulta[1,c(2,5)]=N0
pnasc=b/(b+d)
pmort=d/(b+d)
...
...
  for(t in 2:(tmax+1))
  {
  nt.st=resulta[(t-1),2]
  nt.dt=resulta[(t-1),5]
...
  }
...
...
if(nt.dt>0)
{
...
}
...
...
n.nasc.st=rbinom(1,nt.st,pnasc)
n.mort.st=rbinom(1,nt.st,pmort)
...
...
return(resulta)
}

Confira se todos os parênteses e colchetes estão corretamente colocados

estima=est.dem(N0=100, b=0.55, d=0.5, tmax=50)
plot(estima[,1], estima[,2], type="l",xlab="tempo", ylab="tamanho populacional")
points(estima[,1], estima[,5], type="l", col=2, lty=2)
legend(locator(1),legend=c("deterministico", "estocatico"), lty=c(1,2), col=c(1,2))
estima=est.dem(N0=100, b=0.55, d=0.5, tmax=50)
points(estima[,1], estima[,2], type="l")
points(estima[,1], estima[,5], type="l", col=2, lty=2)

par(mfrow=c(1,2))
estima10=est.dem(N0=10, b=0.55, d=0.5, tmax=50)
nt=dim(estima10)[1]-1
plot(estima10[1:nt,"tempo"], estima10[1:nt,"b.dt"],
ylim=c(0,max(estima10[,c(5,6,10,11)])),xlab="tempo", ylab="taxas")
points(estima10[1:nt,"tempo"], estima10[1:nt,"d.dt"], col="red") 
lines(estima10[1:nt,"tempo"], estima10[1:nt,"d.st"], col="red")
lines(estima10[1:nt,"tempo"], estima10[1:nt,"b.st"])
legend(locator(1), legend=c("b.base", "d.base","b.realizado", "d.realizado"),pch=c(1,1,NA,NA),
lty=c(NA,NA,1,2),col=c(1,2,1,2))

estima100=est.dem(N0=100, b=0.55, d=0.5, tmax=50)
nt=dim(estima100)[1]-1
plot(estima100[1:nt,"tempo"], estima100[1:nt,"b.dt"],
ylim=c(0,max(estima100[,c(5,6,10,11)])),xlab="tempo", ylab="taxas")
points(estima100[1:nt,"tempo"], estima100[1:nt,"d.dt"], col="red") 
lines(estima100[1:nt,"tempo"], estima100[1:nt,"d.st"], col="red")
lines(estima100[1:nt,"tempo"], estima100[1:nt,"b.st"])
legend(locator(1), legend=c("b.base", "d.base","b.realizado", "d.realizado"),pch=c(1,1,NA,NA),
lty=c(NA,NA,1,2),col=c(1,2,1,2))