Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

roteiros:matriz [2012/05/25 13:48] – [Valor reprodutivo] mortararoteiros:matriz [2024/01/09 18:18] (atual) – edição externa 127.0.0.1
Linha 65: Linha 65:
 <box 70% red | Exercício 1: Interpretando os gráficos > <box 70% red | Exercício 1: Interpretando os gráficos >
   * A projeção observada no gráfico (a) é condizente com o esperado pelo modelo de crescimento estruturado?    * A projeção observada no gráfico (a) é condizente com o esperado pelo modelo de crescimento estruturado? 
-  * Como você interpretaria o padrão de convergência observado no gráfico (b). +  * Como você interpretaria o padrão observado no gráfico (b). 
 </box>  </box> 
  
-Vamos calcular a taxa de incremento para toda a população a cada intervalo de tempo, definida como $R(t)$ 
- 
-$R(t) = N_{t+1}/N_{t}$  
- 
-<code> 
-N.total <- apply(N.projecoes, 2, sum) 
-Rs <- N.total[-1]/N.total[-(anos + 1)] 
-plot(0:(anos - 1), Rs, type = "b", xlab = "Tempo (t)", ylab = "R") 
-</code> 
- 
-<box 80% red | Exercício> 
-  * 1. Qual a contribuição, em proporção de indivíduos, de cada classe (estágio) para o tamanho total da população a cada tempo? 
-  * 2. Essa contribuição das classes varia ao longo do tempo? 
-  * 3. Ilustre sua resposta com projeções de populações e gráficos dessas simulações. 
-  * 4. Calcule a taxa de crescimento da população a cada intervalo de tempo e faça o gráfico dessa taxa ao longo do tempo.  
-</box> 
  
 ==== Uma ajuda ==== ==== Uma ajuda ====
-Abaixo uma função para projetar populações a partir da matriz de transição e do estado inicial (tmax é o tempo máximo de projeção). É basicamente o que fizemos anteriormente, mas agora com a função. +Abaixo uma tem uma função para projetar populações a partir da matriz de transição e do estado inicial (tmax é o tempo máximo de projeção). É basicamente o que fizemos anteriormente, mas agora com a ajuda da função. 
  
 <box blue 90% | Função proj.mat> <box blue 90% | Função proj.mat>
Linha 99: Linha 83:
  for(i in 2:(tmax+1))  for(i in 2:(tmax+1))
  {  {
- res.mat[i,]=res.mat[(i-1),%*% matproj+ res.mat[i,]=matproj %*% res.mat[(i-1),]
  }  }
 return(res.mat) return(res.mat)
Linha 116: Linha 100:
 </code> </code>
 </box> </box>
 +===== Taxa de Crescimento  =====
 +
 +$ \lambda = \frac{N_{t}}{N_{t-1}}$
  
-===== Taxa de Crescimento  ===== 
 Vamos ver como a taxa de crescimento se comporta! Vamos ver como a taxa de crescimento se comporta!
 +
 <code> <code>
 ############################# #############################
Linha 124: Linha 111:
 ############################# #############################
 lambPop<-nPop[2:11]/nPop[1:10] lambPop<-nPop[2:11]/nPop[1:10]
-matplot(1:10, lambPop, type="l")+matplot(1:10, lambPop, type="b", pch=1)
 </code> </code>
  
Linha 131: Linha 118:
   * projete a população a tempos mais longos!   * projete a população a tempos mais longos!
   * veja como se comporta a taxa de crescimento da população $\lambda= \frac{N_t}{N_{t-1}}$   * veja como se comporta a taxa de crescimento da população $\lambda= \frac{N_t}{N_{t-1}}$
-  * faça o mesmo variando a alguma parâmetro da matriz de transição+  * faça o mesmo variando algum parâmetro da matriz de transição
   * como se comporta essa taxa ao longo do tempo? Ele muda (qualitativamente) quando muda algum parâmetro da população (transições, estado inicial)?   * como se comporta essa taxa ao longo do tempo? Ele muda (qualitativamente) quando muda algum parâmetro da população (transições, estado inicial)?
  
Linha 147: Linha 134:
 matplot(1:11, propEst, type="l") matplot(1:11, propEst, type="l")
 </code> </code>
 +
 +<box 80% red | Exercício>
 +  * 1. Qual a contribuição, em proporção de indivíduos, de cada classe (estágio) para o tamanho total da população a cada tempo?
 +  * 2. Essa contribuição das classes varia ao longo do tempo?
 +  * 3. Ilustre sua resposta com projeções de populações e gráficos dessas simulações.
 +  * 4. Calcule a taxa de crescimento da população a cada intervalo de tempo e faça o gráfico dessa taxa ao longo do tempo. 
 +</box>
  
 <box 70% red| Exercício (de novo?!!)> <box 70% red| Exercício (de novo?!!)>
Linha 182: Linha 176:
 <box 80% red| Exercício> <box 80% red| Exercício>
   * 1. A sobrevivência do adulto tem muita influência no destino da população?   * 1. A sobrevivência do adulto tem muita influência no destino da população?
-  * 2. A extinção da população é imediata quanto a taxa de sobrevivência de adultos é zero? +  * 2. Se você fosse pensar em uma extração sustentável dessa população, como você poderia usar esta análise para fazer alguma recomendação para o manejo? 
-  * 3. Faça o mesmo para a transição de sementes para juvenil e compare com a sobrevivência do adulto. Qual transição é mais importante para o destino da população? +  * 3. A extinção da população é imediata quanto a taxa de sobrevivência de adultos é zero? 
-  * 4. A proporção dos estádios em relação ao total da população é diferente entre cenários da matriz com perturbação e da matriz original? +  * 4. Faça o mesmo para a transição de sementes para juvenil e compare com a sobrevivência do adulto. Qual transição é mais importante para o destino da população? 
 +  * 5. A proporção dos estádios em relação ao total da população é diferente entre cenários da matriz com perturbação e da matriz original? 
  
  
Linha 235: Linha 230:
 return(mat) return(mat)
 } }
-#estado inical  +cory 
-n0=c(10,5,2)+# estado inical  
 +n0=matrix(c(10,5,2), ncol=1)
 ## tempo 1 ## tempo 1
-n1 = n0 %*% cory +n1 =  cory %*% n0  
-n1d= n0 %*% ddf(n0,cory,h=10, st=3)+n1 
 +n1d= ddf(n0,cory,h=10, st=3)%*%  n0 
 n1 n1
 n1d n1d
 ## tempo 2 ## tempo 2
-n2 = n1 %*% cory +n2 =  cory %*% n1  
-n2d=n1d %*% ddf(n1d,cory,h=10, st=3)+n2 
 +n2d= ddf(n1,cory,h=10, st=3)%*%  n1 
 n2 n2
 n2d n2d
 ## tempo 3 ## tempo 3
-n3 = n2 %*% cory +n3 =  cory %*% n2 
-n3d=n2d %*% ddf(n2d,cory,h=10, st=3)+
 n3 n3
-n3d+n3d= ddf(n2,cory,h=10, st=3)%*%  n1  
 +n2 
 +n2d
 </code> </code>
  
Linha 266: Linha 265:
  for(i in 2:(tmax+1))  for(i in 2:(tmax+1))
  {  {
- res.mat[i,]=res.mat[(i-1),] %*% ddf(res.mat[(i-1),], matproj,h, st)+ res.mat[i,]=ddf(res.mat[(i-1),], matproj,h, st)  %*%  res.mat[(i-1),]
  }  }
 return(res.mat) return(res.mat)
Linha 276: Linha 275:
 prop.estdd<-res.corydd/apply(res.corydd,1,sum) prop.estdd<-res.corydd/apply(res.corydd,1,sum)
 matplot(0:20,prop.estdd, type="l", lty=2:4, col=2:4) matplot(0:20,prop.estdd, type="l", lty=2:4, col=2:4)
 +## tmax = 100 
 +res.corydd<-proj.dd(n0,matproj=cory, h=100, st=3, tmax=100) 
 +res.corydd 
 +matplot(0:100,res.corydd, type="l", ylab="N"
 +prop.estdd<-res.corydd/apply(res.corydd,1,sum) 
 +matplot(0:100,prop.estdd, type="l", lty=2:4, col=2:4, ylab="Proporção das classes")
 </code> </code>
  
Linha 284: Linha 288:
   *3. o estado inicial da população influencia a projeção quanto ao estado final da população? Há alguma similaridade com relação ao modelo sem densidade-dependência?   *3. o estado inicial da população influencia a projeção quanto ao estado final da população? Há alguma similaridade com relação ao modelo sem densidade-dependência?
 </box> </box>
- 
  
 ===== Autovalores e autovetores ===== ===== Autovalores e autovetores =====
Linha 298: Linha 301:
 O que acontece é que frequentemente em Ecologia ouvimos dizer de autovalores e autovetores. Isso aparece em: em análises multivariadas de ordenação; análises de estabilidade com uma ou mais espécies e em análises de matrizes projeção populacional!  O que acontece é que frequentemente em Ecologia ouvimos dizer de autovalores e autovetores. Isso aparece em: em análises multivariadas de ordenação; análises de estabilidade com uma ou mais espécies e em análises de matrizes projeção populacional! 
    
-Para o nosso caso em crescimento populacional estruturado podemos encontrar o $\lambda$ assintótico simplesmente encontrando o autovalor dominante da matriz de projeção. Autovalores são representados por $ \lambda $ e correspondem a solucão para a equacão acima. O autovalor dominante é aquele com o maior valor absoluto e geralmente é um número complexo. Em matrizes de projeção, o $ \lambda_{1} $ é sempre positivo e real. Podemos usar análises de autovalor e autovetor para encontrar o $ \lambda_{1} $ como se fosse mágica. Para fazermos operações com números complexos no R usaremos a função Re. +Para o nosso caso em crescimento populacional estruturado podemos encontrar o $\lambda$ assintótico simplesmente encontrando o autovalor dominante da matriz de projeção. Autovalores são representados por $ \lambda $ e correspondem à solução para a equação acima. O autovalor dominante é aquele com o maior valor absoluto e geralmente é um número complexo. Em matrizes de projeção, o $ \lambda_{1} $ é sempre positivo e real. Podemos usar análises de autovalor e autovetor para encontrar o $ \lambda_{1} $ como se fosse mágica. Para fazermos operações com números complexos no R usaremos a função Re. 
  
 <box 80% green |Resumindo> <box 80% green |Resumindo>
Linha 341: Linha 344:
 w <- Re(aval.A$vectors[,1]) # indexamos pela posicao 1 que eh a posicao correspondente do autovalor dominante w <- Re(aval.A$vectors[,1]) # indexamos pela posicao 1 que eh a posicao correspondente do autovalor dominante
 w w
-round(w/sum(w), 2)+round(w/sum(w), 3)
 </code> </code>
  
Linha 403: Linha 406:
  
 <code> <code>
 +L1 <- Re(aval.A$values[1])
 elas <- (A/L1) * S elas <- (A/L1) * S
 round(elas, 3) round(elas, 3)
Linha 414: Linha 418:
 ==== Comparando as análises ==== ==== Comparando as análises ====
 Vamos agora fazer uma sequência de análises usando a álgebra matricial e depois compará-la com o pacote //**popbio**// do R para análises matriciais de dinâmica populacional!  Vamos agora fazer uma sequência de análises usando a álgebra matricial e depois compará-la com o pacote //**popbio**// do R para análises matriciais de dinâmica populacional! 
 +
 +E para finalizar, faremos os cálculos com o nosso modelo para o cacto. 
  
 <code> <code>
Linha 426: Linha 432:
 lamb lamb
 abline(h=lamb,col="red") abline(h=lamb,col="red")
-v=Re(eigen.cory$vectors[,which.max(Re(eigen.cory$values))]) # calculo de valor proporcional ao valor reprodutivo ok! +v.cory=Re(eigen.cory$vectors[,which.max(Re(eigen.cory$values))]) # calculo de valor proporcional ao valor reprodutivo ok! 
-+v.cory 
-vr=v/v[1] +vr.cory=v.cory/v.cory[1] 
-vr   # agora sim o valor reprodutivo padronizado para escala da primeira classe+vr.cory   # agora sim o valor reprodutivo padronizado para escala da primeira classe
  
-w=Re(eigen.tcory$vectors[,which.max(Re(eigen.tcory$values))])#stage stable vector ok! +w.cory=Re(eigen.tcory$vectors[,which.max(Re(eigen.tcory$values))])#stage stable vector ok! 
-w/sum(w)+w.cory/sum(w.cory)
 prop.est[100,] prop.est[100,]
  
 ### sensibilidade ### sensibilidade
  
-vms=vr%*%t(w) +vms.cory=vr.cory%*%t(w.cory
-S=vms/as.numeric(vr%*%w) ## Funciona!!! Só precisa substituir por zero transicoes não existentes...pois ele calcula+S.cory=vms.cory/as.numeric(vr.cory%*%w.cory) ## Funciona!!! Só precisa substituir por zero transicoes não existentes...pois ele calcula
  
 ### elasticidade ### elasticidade
-(cory/lamb)*S+(cory/lamb)*S.cory
 ############################## ##############################
 ## conferindo nossos cálculos ## conferindo nossos cálculos
 ############################# #############################
 +# se voce ainda nao tem o pacote popbio, instale-o com o comando abaixo retirando a #:
 +# install.packages("popbio")
 library(popbio) library(popbio)
 eigen.analysis(cory) eigen.analysis(cory)
  
 </code> </code>
 +
 +===== Extração e Manejo =====
 +
 +[[exercicios:manejo|]]
 +
roteiros/matriz.1337953694.txt.gz · Última modificação: 2024/01/09 18:17 (edição externa)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0