User Tools

Site Tools


en:ecovirt:roteiro:den_ind:di_tdr_passo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:ecovirt:roteiro:den_ind:di_tdr_passo [2022/09/15 13:43]
adalardo [Density-independent Dynamics discrete time - R script]
en:ecovirt:roteiro:den_ind:di_tdr_passo [2022/09/15 13:59] (current)
adalardo [Desafio]
Line 10: Line 10:
 A population in which birth and death rates are constant grows independently of its own density. A population in which birth and death rates are constant grows independently of its own density.
 This situation is usually related to the absence of restriction on growth, when resources are unlimited, but it can also be associated with a depletion of resources and the extinction of the population. This situation is usually related to the absence of restriction on growth, when resources are unlimited, but it can also be associated with a depletion of resources and the extinction of the population.
-===== Taxa de crescimento ​=====+===== Growth Rate =====
  
-Vamos imaginar agora uma população hipotética com taxas constante de crescimento e mortalidade e sem migraçõesA cada ciclo de tempo relacionado ​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).+Let us now imagine a hypothetical population with constant growth and death rates and no migrationsAt each time cycle related to generation ​(T), the population size is the result of the number of individuals from the previous generation plus number of births ​(B), less deaths ​(D).
  
 $$N_{T+1} = N_T + B - D $$ $$N_{T+1} = N_T + B - D $$
  
-Podemos relacionar o número de mortes e nascimentos ​um valor per capita:+We can relate the number of deaths and births to a per capita ​value:
  
-  * $ B=bN_T $+  * $B=bN_T$
   * $ D=dN_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+where: b = birth rate per capita ​for each generation; d = mortality rate per capita ​for each generation
-Note que a taxa não muda com o tamanho da populaçãoentretantoo número de nascimentos e mortes é proporcional ao tamanho populacionalVamos apenas deixar claro mais uma premissapara fins didáticosos nascimentos e mortalidades ocorrem simultaneamente na população ​(p.ex: uma planta anual). +Note that the rate does not change with population sizehoweverthe number of births and deaths is proportional to population sizeLet's just clarify one more premisefor didactic purposesbirths and mortalities occur simultaneously in the population ​(eg, an annual plant). 
-Sendo //T// a escala de uma geração ​podemos então dizer que :+Since //T// is the scale of generationwe can then say that:
   * $N_{T+1} = N_T + bN_T-dN_T $   * $N_{T+1} = N_T + bN_T-dN_T $
   * $N_{T+1} = N_T + (b-d)N_T $   * $N_{T+1} = N_T + (b-d)N_T $
-se: $r_T = b-d$ ; fator de crescimento discreto+if: $r_T = b-d$ ; discrete growth factor
   * $N_{T+1} = (1+r_T)N_T$   * $N_{T+1} = (1+r_T)N_T$
   * $\frac{N_{T+1}}{N_T} = 1+r_T$   * $\frac{N_{T+1}}{N_T} = 1+r_T$
-Como $ 1+r_T $ é uma constantevamos designá-la como $\lambda$, ​um número positivo que mede o aumento proporcional da população de uma geração ​outraPortanto+Since $1+r_T$ ​is a constantlet's designate it as $\lambda$, a positive number that measures the proportional increase in population from one generation to the nextTherefore
-  * $\lambda=\frac{N_{T+1}}{N_T} $, ou:+  * $\lambda=\frac{N_{T+1}}{N_T} $, or:
    
-$$ N_{T+1} = \lambda N_T$$ +$$ N_{T+1} = \lambda N_T$$ 
 +===== Projecting the Population ======= 
 +We can then project our population to each time cycle (generations). For example:
  
-===== Projetando ​População ===== +If population of 100 has a per capita ​birth rate of 0.8/year and a death rate of 0.75/yearwhat is the expected population size in the next year?
-Podemos então projetar ​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/anoqual o tamanho esperado da população no próximo ano?+
  
 <​code>​ <​code>​
Line 45: Line 44:
 </​code>​ </​code>​
  
-Podemos também projetar a população para outras geraçõesusando iterações:+We can also project the population to other generationsusing iterations:
 <​code>​ <​code>​
 (Nt2=Nt1*lamb) (Nt2=Nt1*lamb)
Line 52: Line 51:
 </​code>​ </​code>​
  
-Note que:+Note that:
  
-  ​* $N_{T4}= N_{T0} \lambda \lambda\lambda\lambda $ +   * $N_{T4}= N_{T0} \lambda \lambda\lambda\lambda $ 
-  * $N_{T4}= N_{T0} \lambda^4 $+   ​* $N_{T4}= N_{T0} \lambda^4 $
  
-Essa equação recursiva pode ser escrita como:+This recursive equation can be written as:
  
 $$N_{T}=\lambda^T N_0 $$ $$N_{T}=\lambda^T N_0 $$
  
-Vamos pegar nosso exemplo anterior e projetá-lo para 10 ciclos de tempo.+Let's take our previous example and design it for 10 time cycles.
 <​code>​ <​code>​
 N0=100 N0=100
Line 72: Line 71:
 </​code>​ </​code>​
  
- +===== Initial Size ===== 
-===== Tamanho Inicial ​===== +Let's now explore the initial population size
-Vamos agora explorar o tamanho inicial da população.  +  * $N_0 = 10,20,30, 40$ 
-  * $N_0 = 10,20,30, 40 $ +  * $\lambda = 1.5$ 
-  * $\lambda = 1,5$ +  * $time = 1:10$
-  * $ tempo = 1:10$+
  
 <​code>​ <​code>​
Line 90: Line 88:
 colnames(Nt)<​-paste("​t",​ 0:10, sep=""​) colnames(Nt)<​-paste("​t",​ 0:10, sep=""​)
 rownames(Nt)<​-paste("​N0",​ c(10,​20,​30,​40),​ sep="​_"​) rownames(Nt)<​-paste("​N0",​ c(10,​20,​30,​40),​ sep="​_"​)
-Nt+nt
 matplot(0:​10,​t(Nt)) matplot(0:​10,​t(Nt))
 </​code>​ </​code>​
  
-Vamos agora colocar o mesmo gráfico em uma escala logarítmica para o eixo y.+Let's now put the same graph on a logarithmic scale for the y-axis.
 <​code>​ <​code>​
 par(mfrow=c(1,​2)) par(mfrow=c(1,​2))
Line 101: Line 99:
 </​code>​ </​code>​
  
-O que está acontecendo?? Parece que todas as populações crescem igualmente quando estamos em uma escala logarítmica+What's up?? It seems that all populations grow equally when we are on a logarithmic scale
-Vamos investigar a equação que estamos usando, $N_t=\lambda^T N_0$ e tirar o log dos dois lados da equação:+Let's investigate the equation we are using, $N_t=\lambda^T N_0$ and take the log of both sides of the equation:
   * $log{N_T} = log{\lambda^T N_0}$   * $log{N_T} = log{\lambda^T N_0}$
   * $ log{N_T} = (log{\lambda}) T + log{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}$. +This equation resembles an equation of the line $ y=ax+b $, where the intercept is $log(N_0)$ ​and the slope is equal to $log{\lambda}$.
    
-==== Desafio ​==== +==== Challenge ​==== 
-  Demonstre graficamente que a inclinação das populações do exemplo acima são iguais a $log{\lambda}$. ​+   ​Graphically show that the slope of the populations in the example above is equal to $log{(\lambda)}$. 
 +===== Average Population Growth ===== 
 +{{:​ecovirt:​roteiro:​den_ind:​pardal.jpg?​200 |}}
  
-===== Média do Crescimento Populacional ===== +We will now investigate the population size data of a North American sparrow species ​(//​Melopiza ​melody//) starting from the premise that this population grows in discrete timesince births occur in short period of nesting time every year.
-{{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 discretojá que os nascimentos ocorrem em um intervalo curto de tempo de nidificação ​cada ano+
 <box 320 green> <box 320 green>
-{{parda.png?​300 ​ |}}+{{:​ecovirt:​roteiro:​den_ind:​parda.png?​300 |}}
  
-O gráfico representa a contagem de pardais cantores na cidade de Darrtown, OH, USA.  +The graph represents the singing sparrow count in the city of Darrtown, OH, USA. 
-Baixe os dodos do arquivo ​{{pardal.txt|}} ​no seu computador.+Download the data from the file {{:​ecovirt:​roteiro:​den_ind:​pardal.txt|}} ​on your computer.
 </​box>​ </​box>​
  
-Vamos calcular os $\lambda$ ​para os cinco primeiros intervalos:+Let's calculate the $\lambda$ ​for the first five intervals:
 <​code>​ <​code>​
-pardal<​-read.table("​pardal.txt", header=TRUE,​ sep="​\t",​ as.is=TRUE) +sparrow<​-read.table("​sparrow.txt", header=TRUE,​ sep="​\t",​ as.is=TRUE) 
-str(pardal+str(sparrow
-head(pardal+head(sparrow
-pardal6pardal[1:6,] +sparrow6sparrow[1:6,] 
-plot(pardal6$Count ~pardal6$Year)+plot(sparrow6$Count ~sparrow6$Year)
 lamb_pardal=pardal6$Count[2:​6]/​pardal6$Count[1:​5] lamb_pardal=pardal6$Count[2:​6]/​pardal6$Count[1:​5]
-lamb_pardal+lamb_sparrow
 </​code>​ </​code>​
  
-Agoravamos 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!+Nowlet's calculate the population projection by the arithmetic and geometric mean of the $\lambda$ ​and draw the projections along with the observed data!
  
 <​code>​ <​code>​
  
-#media aritmetica+#arithmetic average
 (lamb.art = mean(lamb_pardal)) (lamb.art = mean(lamb_pardal))
-#media geometrica ​+#geometric average
 (lamb.geo = prod(lamb_pardal)^(1/​5)) (lamb.geo = prod(lamb_pardal)^(1/​5))
 tseq=0:5 tseq=0:5
-plot(tseq, ​pardal6$Count, pch=19) +plot(tseq, ​sparrow6$Count, pch=19) 
-N0=pardal6$Count[1] +N0=sparrow6$Count[1] 
-lines(tseq, N0*lamb.art^tseq,​ lty=2, col="​red"​)  +lines(tseq, N0*lamb.art^tseq,​ lty=2, col="​red"​) 
-lines(tseq, N0*lamb.geo^tseq,​ lty=3, col="​blue"​) ​+lines(tseq, N0*lamb.geo^tseq,​ lty=3, col="​blue"​)
  
 </​code>​ </​code>​
-  * Qual das duas médias parece se ajustar melhor aos dados observadosPor quê?+  * Which of the two means seems to fit the observed data betterWhy? 
 +==== Discrete Time Growth ====
  
-==== Crescimento Discreto ==== +Below is the code of a base function for projecting the growth of populationwhich can be used as a basic structure for other functions that we will develop in the courseIn this caseit is a function with argumentsnumber of individuals at time 0 (N0), population growth rate (lamb) ​and maximum time (tmax) ​of population projection.
- +
-Abaixo tem o código de uma função ​base para projeção do crescimento de uma populaçãoque pode ser usada como estrutura básica para outras funções que iremos desenvolver no cursoNo casoé uma funcão com argumentosnú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 +
 <​code>​ <​code>​
 cresc.geom= function(No=100,​ lamb=1.04, tmax=10) cresc.geom= function(No=100,​ lamb=1.04, tmax=10)
 { {
-resulta ​<- rep(NA,​tmax) +result ​<- rep(NA,​tmax) 
-resulta[1] <- No +result[1] <- No 
- for (i in 2:tmax) +for (i in 2:tmax) 
-+
- tam=resulta[i-1]*lamb +tam=result[i-1]*lamb 
- resulta[i]=tam +result[i]=tam 
-+
-return(resulta)+return(result)
 } }
  
 </​code>​ </​code>​
-Ao copiar esse código na  área de trabalho do R, um novo objeto é criadode nome //​cresc.geom//​. ​Ele é um objeto da classe função que você pode usá-lo digitando o seu nome e especificando seus argumentoscomo no exemplo a seguir:+By copying this code to the desktopa new object is creatednamed //​cresc.geom//​. ​It is an object of the function class that you can use it by typing its name and specifying its argumentsas in the following example:
  
-<​code>​  +<​code>​ 
-resultado ​<- cresc.geom(No=10,​ lamb=0.98, tmax=100)+result ​<- cresc.geom(No=10,​ lamb=0.98, tmax=100)
 </​code>​ </​code>​
  
-Note que o resultado da funçãonesse casoserá guardado no objeto ​//resultado//. Para fazer um gráfico dos resultados pode utilizar o código abaixo:+Note that the result of the functionin this casewill be stored in the object ​//result//. To graph the results you can use the code below:
  
-  plot(1:​length(resultado), resultado  +  plot(1:​length(result), result
- +===== Environmental Stochasticity ​===== 
- +Environmental fluctuations can have an effect on the instantaneous population growth rateIn a simple waywe can imagine that this variation works like a noise in //​r//, ​as if the population on average had ratebut at each realization it could be somewhat different due to conditions external to itself. The implementation of this environmental stochasticity in continuous models is little more complicatedbut we can imagine it as realizations in some small time interval
- +For discrete growth, the construction of simulations with environmental stochasticity is more intuitiveat each realization the Lambda ​is affected by the environmental variationLet's do it.
-===== Estocasticidade Ambiental ​===== +
-Flutuações ambientais podem exercer efeito na taxa de crescimento instantâneo da populaçãoDe uma forma simplespodemos imaginar que essa variação funcione como um ruído no //​r//, ​como se população em média tivesse uma taxamas cada realização ela pudesse ser um tanto diferente devido a condições externas a ela própria. A implementação dessa estocasticidade ambiental em modelos contínuos é um pouco mais complicadamas podemos imaginá-la como realizações em algum intervalo pequeno de tempo.  +
-Para um crescimento discreto ​construção de simulações com estocasticidade ambiental é mais intuitivoa cada realização o Lambda ​é afetado pela variação ambientalVamos fazê-la.+
  
 <​code>​ <​code>​
Line 198: Line 191:
 matplot(0:​5,​ Nt, type="​l",​ lty=2:7) matplot(0:​5,​ Nt, type="​l",​ lty=2:7)
 </​code>​ </​code>​
 +==== Challenge ====
  
-==== Desafio ====+It is possible to adapt our previous discrete growth function so that it can also model populations with environmental stochasticity!
  
-É possível adaptar a nossas função anterior de crescimento discreto para que possa também modelar populações com estocasticidade ambiental! +<box 70% green |Tips
- +The first step is always to think about what arguments we will need 
-<box 70% green |Dicas+In this casewe only have one more argument ​o **//​lamb.dp//​** : the standard deviation of //​lambda//​. ​The rest remains the sameremember that if **//​lamb.dp//​** ​is 0, our population is deterministicThat isthe same function can be used to simulate both scenarios.
-O primeiro passo sempre e pensar quais argumentos vamos precisar +
-Nesse casotemos apenas mais um argumento ​o **//​lamb.dp//​** : o desvio padrão de //​lambda//​. ​O resto continua o mesmolembre-se que se o **//​lamb.dp//​** ​for 0, nosso população é determinísticaOu sejaa mesma função pode se prestar para simular ambos cenários.+
  
  
 </​box>​ </​box>​
  
-{{tag>​R ​uma_população crescimento_exponencial tempo_discreto tempo_contínuo ​ estocasticidade_ambiental}}+{{tag>​R ​a_population exponential_growth discrete_time continuous_time stochasticity_environmental}} 
en/ecovirt/roteiro/den_ind/di_tdr_passo.1663260208.txt.gz · Last modified: 2022/09/15 13:43 by adalardo