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))