* [[ecovirt:roteiro:den_ind:di_edrcmdr|{{:ecovirt:logorcmdr01.png?20|}}]] * [[ecovirt:roteiro:den_ind:di_edr|{{:ecovirt:rlogo.png?20|}}]] * [[ecovirt:roteiro:den_ind:di_edr_passo|{{:ecovirt:prompt.png?20|}}]] ====== Crescimento denso-independente com estocasticidade demográfica - Roteiro no R passo-a-passo ====== 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 dos exercícios anteriores, onde aplicamos diretamente as fórmulas do Gotelli (2007), neste vamos usar as taxas de natalidade(b) e de 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. Na segunda parte adicionaremos incerteza nos valores b e d, ou seja, o crescimento será com estocasticidade, como se em cada passo, cada indivíduo estivesse lançando uma moeda para decidir se ele sobrevive e se ele se reproduz. 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\\ * 1. determine quais os argumentos da função: stocdem <- function(No,b,d,tmax) { } * 2. crie o objeto onde guarda a projeção das populações: uma tabela com três colunas preenchidas com zeros STOCD <- matrix(rep(0, tmax,3) * colocar tempo na primeira coluna, e o tamanho inicial na primeira linha da segunda e terceira colunas.\\ * 3. Agora é preciso criar uma **matriz com 10 colunas e tmax linhas**. Nas colunas colocaremos os seguintes valores: //N(t)//, //número de mortes//, //número de nascimentos//, //taxa de mortalidade// e //taxa de natalidade// para as duas projeções de crescimento. registro <- matrix(0,tmax,10) * 4. Coloque **nomes nas linhas e colunas** da matriz de registros e o valor inicial do tamanho populacional para as duas simulaçoes: rownames(registro) <- seq(0:tmax) colnames(registro) <- c("Ndt", "mort.dt", "nasc.dt", " d.dt", "b.dt", "N.st", "mort.st", "nasc.st", "d.st", "b.st") registro[1,1] <- No registro[1,6] <- No * 5. Faça os cálculos para a projeção determinística\\ for (t in 1:tmax) { } * 5.1) Salve o tamanho populacional no tempo anterior, chame de pastN.\\ * 5.2) Calcule o número de mortes (d*pastN), chame de "mortes".\\ * 5.3) Calcule o número de nascimentos (b*pastN), chame de "nascim".\\ * 5.4) Coloque o novo tamanho populacional no tempo t+1 na segunda coluna da matriz STOCD, que será o N anterior mais os nascimentos menos as mortes.\\ STOCD[t+1,2]<-(pastN + nascim - mortes) * 5.5. Também coloque o novo tamanho populacional no tempo t+1 na segunda coluna da matriz de registros. Use um //if()//, para que esse passo seja realizado apenas enquanto t for menor que tmax. if (t * 5.6 Agora coloque o número de mortes, o número de nascimentos e as taxas de mortalidade e de natalidade na matriz de registros:\\ registro[t,2] <-mortes registro[t,3] <- nascim registro[t,4] <- d registro[t,5] <- b * 6. Agora faça os cálculos para a **projeção estocástica**\\ for (t in 1:tmax) { } * 6.1. Salve o N anterior.\\ ''pastN <- ??''\\ ''mortes <- 0 ## Crie um objeto que receberá o número de mortes''\\ ''nascim <- 0 ## Crie um objeto que receberá o número de nascimentos''\\ * 6.2) Neste exercício nós precisamos criar um **procedimento que avalie, ao acaso, se ocorrerá uma morte ou se o organismo continua vivo**. Faremos o mesmo para saber **se haverá um novo nascimento ou não**. Use um ''for()'' que passe por todos os organismos que estejam vivos, ou seja,"pastN".\\ ''for (i in 1:pastN) {''\\ * 6.2.1) Gere um número aleatório uniforme para mortalidade\\ ''m <- runif(1,min=0,max=1)''\\ * 6.2.2) Gere um número aleatório uniforme para natalidade\\ ''n<- runif(1,min=0,max=1)''\\ * 6.2.3) Agora vamos **ver se houve uma morte e um nascimento usando um ''if()''**. Ou seja,se o número aleatório da mortalidade for menor que "d", a taxa de mortalidade, haverá uma morte. O mesmo para a natalidade , se o número aleatório da natalidade for menor que "b", a taxa de natalidade, haverá um novo nascimento. Faça assim no R:\\ ''if (n * 6.3) Agora faça os **cálculos para projetar a população.**\\ ''newN <- ??''\\ * 6.4) Crie uma condição, usando if(), para colocar o newN na matriz apenas se o valor for maior que zero, pois não existe população com valor negativo.\\ ''if (newN>0) {STOCD[t+1,3] <- newN} ## Para colocar o valor na matriz STOCD''\\ ''if (t0) {registro[t+1,6] <- newN} ## Para colocar o valor na matriz registro''\\ ''6.5) Agora coloque o número de mortes, o número de nascimentos, e as taxas de mortalidade e natalidade na matriz registro:''\\ ''registro[t,7] <- ??''\\ ''registro[t,8] <- ??''\\ ''registro[t,9] <- ??/??''\\ ''registro[t,10] <- ??/??''\\ ''if (newN<=0) break # Isso irá interromper o processo (o for()) caso a população atinja 0.''\\ ''}''\\ ''7) Representação gráfica''\\ ''par(mfrow=c(1,1))''\\ ''plot(STOCD[,1],STOCD[,2],type="l", lty=2, xlab="tempo (t)",ylab="tamanho da população (N)", ylim=c(0,max(STOCD[,2:3])),main="Estocasticidade Demográfica")''\\ ''lines(STOCD[,1],SoTOCD[,3])''\\ ''legend("topleft",c("proj determinística","proj estocástica"),lty=2:1)''\\ 8) Agora vamos criar uma **série de comandos pra retornar alguns valores**.\\ * 8.1) Calcular média e variância das taxas de mortalidade e natalidade, excluir as taxas de mortalidade e natalidade estocásticas correspondentes a população extinta.\\ ''taxastoc <- registro[which(registro[,6]>0),9:10]''\\ ''cat("\nMortalidade determinística:\n")''\\ ''cat("média = ", mean(registro[,4])," var = ",round(var(registro[,4]),3),"\n")''\\ ''cat("\nMortalidade estocástica:\n")''\\ ''cat("média = ", mean(taxastoc[,1])," var = ",round(var(taxastoc[,1]),3),"\n")''\\ ''cat("\n")''\\ ''cat("\nNatalidade determinística:\n")''\\ ''cat("média = ", mean(registro[,5])," var = ",round(var(registro[,4]),5),"\n")''\\ ''cat("\nNatalidade estocástica:\n")''\\ ''cat("média = ", mean(taxastoc[,2])," var =",round(var(taxastoc[,2]),3),"\n\n")''\\ 9) Sair e entregar o registro.\\ ''return(registro)''\\ ''}''\\ 10) Teste sua função: 8-o\\ ''stocdem(100,0.14,0.08,50)''\\ 11) Varie o tamanho inicial da população e veja que quanto menor o tamanho da população inicial maior é a variabilidade de resultados possíveis. Repita várias vezes com os mesmos valores para ver o quanto os resultados podem variar.\\ {{tag>R uma_população crescimento_exponencial tempo_discreto estocasticidade_demográfica}}