Ferramentas do usuário

Ferramentas do site


ecovirt:roteiro:pop_str:pstr_ddr

Denso-dependência em População Estruturada - Roteiro em R

A análise de matrizes e a projeção da população permite grande flexibilidade para simular cenários nas populações. Podemos, por exemplo, incluir efeito de densidade em uma dos estágios na população e o efeito inverso em outro (denso dependência positiva ou negativa) ou mesmo incluir diminuição na sobrevivência e aumento na natalidade em um estágio. Vamos aqui incluir o efeito de densidade na probabilidade de permanência da classe adulta. Vamos usar uma equação em que o $P_{33} $ a permanência na classe adulta seja uma fração de da transição quando o N=0. Uma possibilidade é a função:

$$ P_{33} = P'_{33} * \frac{h}{h+N_3}$$

O que essa função significa? Vamos apenas verificar o que acontece com a expressão $\frac{h}{h+N_3}$

des<-function(n,h){h/(h+n)}
des.mat<-outer(seq(1,10,by=0.1), seq(1,10,by=0.1), des)
filled.contour(x=seq(1,10,by=0.1),y=seq(1,10,by=0.1),des.mat,  color = terrain.colors, xlab="N", ylab="h", main="Proporção da taxa máxima")  

Exercício

  • 1. Varie os valores de intervalo de n e h e veja qual o resultado.
  • 2. O h pode ser negativo? Qual a sua interpretação biológica?

Mundo Real

cactus.jpg Vamos trabalhar agora com dados 1) de uma população de cactus (Coryphantha robbinsorum) ameaçada de extinção que ocorre em afloramentos calcários no Arizona e cercanias no México. Seus estádios de vida foram definidos de forma similar ao exemplo anterior: juvenis pequenos, juvenis grandes e adultos, sendo que apenas o adulto se reproduz.

################## 
### Matriz cory ##
##################

cory<-matrix(c(0.434, 0.333,0,0,0.61, 0.304,0.56, 0, 0.956), ncol=3, nrow=3)
cory

A função a seguir opera diretamente a matriz de transição para incorporar a denso dependencia. Veja como a população de cory se comporta!

ddf<-function(n, mat, h, st)
{
mat[st, st]<-mat[st,st]*(h/(h+n[st]))
return(mat)
}
cory
# estado inical 
n0=matrix(c(10,5,2), ncol=1)
## tempo 1
n1 =  cory %*% n0 
n1
n1d= ddf(n0,cory,h=10, st=3)%*%  n0 
n1
n1d
## tempo 2
n2 =  cory %*% n1 
n2
n2d= ddf(n1,cory,h=10, st=3)%*%  n1 
n2
n2d
## tempo 3
n3 =  cory %*% n2 
n3
n3d= ddf(n2,cory,h=10, st=3)%*%  n1 
n3
n3d

Vamos incluir essa função em uma outra para podermos fazer projeções para qualquer tempo:

############################
## função:denso-dependência
###########################
proj.dd<-function(n0, matproj,h, st, tmax=10)
{
res.mat<-matrix(NA,nrow=tmax+1,ncol=length(n0))
res.mat[1,]<-n0
	for(i in 2:(tmax+1))
	{
	res.mat[i,]=ddf(res.mat[(i-1),], matproj,h, st)  %*%  res.mat[(i-1),]
	}
return(res.mat)
}
## tmax = 20
res.corydd<-proj.dd(n0,matproj=cory, h=100, st=3, tmax=20)
res.corydd
matplot(0:20,res.corydd, type="l")
prop.estdd<-res.corydd/apply(res.corydd,1,sum)
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")

Exercício

  • 1. aumente o tempo (tmax=100) de projeção para o exemplo acima e compare com uma população sem denso-dependência. Apresente os gráficos!
  • 2. diminua e depois aumente o h e veja qual o efeito na trajetória da população
  • 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?

Autovalores e autovetores

Análise de autovalores e autovetores é uma transformação linear de matrizes para sumarizar dados multivariados. De maneira que:

$ Aw = \lambda w $

onde A é a matriz, w é o autovetor, e $ \lambda $ é o autovalor.

Hein? Veja este linque para uma explicação melhor.

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 à 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.

Resumindo

O autovalor dominante de uma solução matricial é um valor escalar 2) que é equivalente 3) à matriz ao multiplicar um vetor. Em outras palavras é a nossa taxa assintótica de crescimento: o $ \lambda $.

Para entender isso, vamos refazer o gráfico do crescimento assintótico da população!

par(mfrow=c(2,2))
res.cory<-proj.mat(n0,matproj=cory, tmax=100)
res.cory
matplot(0:10,res.cory[1:11,], type="l")
prop.est<-res.cory/apply(res.cory,1,sum)
matplot(0:10,prop.est[1:11,], type="l", lty=2:4, col=2:4)
legend("topleft", lty=2:4, col=2:4, legend=c("small", "large","adults"))
matplot(0:100,prop.est, type="l", lty=2:4, col=2:4)
legend("topleft", lty=2:4, col=2:4, legend=c("small", "large","adults"))
lamb.seq=res.cory[2:101]/res.cory[1:100]
plot(1:100, lamb.seq,type="l", lty=2)
par(mfrow=c(1,1))

Agora vamos calcular o autovalor da matriz e comparar com a taxa assintótica de crescimento.

eigen.cory=eigen(cory)
lamb=max(Re(eigen.cory$values)) 
lamb
abline(h=lamb,col="red")

Ou seja, uma maneira de achar o lambda (mais intuitiva para nós na Ecologia) é iterar o crescimento populacional por um longo período de tempo, com o aumento de t a taxa de crescimento anual R(t) se aproxima a $ \lambda_{1} $. Outro modo mais direto é através do autovalor dominante da matriz de transição!

Distribuição de Estágios Estável

A abundância relativa dos diferentes estágios de vida é chamada de distribuição de estágios. Para uma população estruturada na qual as taxas demográficas são constantes a estrutura de estágios irá atingir uma distribuição de estágios estável. A população pode crescer (como esperado pelo crescimento exponencial), mas as abundâncias relativas em cada estágio permanece constante. E já vimos isso antes…

Então, voltando aos autovalores e autovetores podemos encontrar a distribuição de estágios estável. Agora o que nos dará a abundância relativa será o autovetor dominante, w. O autovetor dominante está na mesma posição do autovalor dominante. Podemos então extrair o w, mantendo sua parte real e dividir pela sua soma.

Voltando então à nossa matriz “A” com os dados hipotéticos de uma população de palmeiras.

aval.A <- eigen(A)
w <- Re(aval.A$vectors[,1]) # indexamos pela posicao 1 que eh a posicao correspondente do autovalor dominante
w
round(w/sum(w), 3)

Exercício

Agora volte para a nossa projeção de N(t) (baseada na nossa matriz A) e calcule a partir de que ano a proporção de indivíduos em cada classe se ajusta à distribuição de estágios estável obtida acima. Lembre que os valores estão guardados na matriz N.projecoes.
# voltando
matplot(0:anos, log(t(N.projecoes)), type = "l", lty = 1:3, ylab = "n(t)", xlab = "Tempo (t)", xlim=)
legend("topleft", legend = c("Sementes", "Juvenil", "Adulto"),lty = 1:3, col = 1:3, bty = "n")

# lembrando que: 
colnames(N.projecoes) <- paste("N", 0:10, sep="")
rownames(N.projecoes) <- c("semente","juvenil", "adulto")

N.projecoes

Valor reprodutivo

A estrutura de estágios estável nos dá uma medida da importância do estágio (em termos de abundância relativa) no crescimento estruturado. No caso do valor reprodutivo temos uma medida da importância do indivíduo em cada estágio, ou seja, o valor reprodutivo é a contribuição esperada de cada indivíduo na reprodução presente e futura. Caracterizamos todos os indivíduos em um estado com o mesmo valor reprodutivo. Usando álgebra linear, encontramos o valor reprodutivo resolvendo:

$ vA = \lambda v $

$ VR = \frac{\nu_1}{\sum^{S}_{i=1}{\nu_1}} $

Podemos obter o autovalor esquerdo realizando uma análise de autovalor na matriz de projeção transposta. As posições do autovalor dominante direito e esquerdo são as mesmas. Extraímos apenas o autovetor esquerdo e o escalonamos, de maneira que o valor reprodutivo do primeiro estágio é 1.

De novo com a nossa matriz “A”.

M <- eigen(t(A))
M
v <- Re(M$vectors[, which.max(Re(M$values))]) 
VR <- v/v[1]
VR

Exercício

Como você interpretaria o aumento dos valores reprodutivos encontrados?

Para saber mais

Gotelli, N. J. 2007. Ecologia. Cap.3- Crescimento Populacional Estruturado. Pp. 49-82. Ed. Planta.

Gurevitch, J, Scheiner, S.M, Fox, G.A. 2009. Ecologia Vegetal. Cap. 5 - Ed. Artmed, São Paulo.

Freckleton, R.P., Silva Matos, D.M., Bovi, M.L.A & Watkinson, A.R. 2003. Predicting the impacts of harvesting using structured population models: the importance of density-dependence and timing of harvest for a tropical palm tree. Journal of Applied Ecology, 40: 846-858.

Silva Matos, D.M., Freckleton, R.P. & Watkinson, A.R. 1999. The role of density dependence in the population dynamics of a tropical palm. Ecology, 80: 2635-2650.

1)
Cochran & Ellner,1992
3)
a solução é a mesma!
ecovirt/roteiro/pop_str/pstr_ddr.txt · Última modificação: 2016/05/10 07:19 (edição externa)