Ferramentas do usuário

Ferramentas do site


ecovirt:roteiro:sucess:div_estab

Diferenças

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

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
ecovirt:roteiro:sucess:div_estab [2019/02/04 15:20]
prado
ecovirt:roteiro:sucess:div_estab [2020/02/02 21:10]
prado [Equilíbrio com coexistência]
Linha 1: Linha 1:
 +<WRAP tabs>
 +  * [[ecovirt:​roteiro:​sucess:​div_estab|{{:​ecovirt:​rlogo.png?​20|}}]]
 +</​WRAP>​
  
 +====== Diversidade e estabilidade ======
 +
 +{{http://​imgs.xkcd.com/​comics/​computer_problems.png?​400}}
 +
 +Equilíbrio e estabilidade são conceitos muito importantes em ecologia, mas que comportam muitas definições. Uma das definições mais usadas foi trazida do ramo da física e da matemática chamada de análise de [[http://​en.wikipedia.org/​wiki/​Dynamical_system|sistemas dinâmicos]].
 +
 +É esta abordagem que trouxe para a ecologia equações para descrever a dinâmica de populações,​ como a [[http://​en.wikipedia.org/​wiki/​Logistic_function#​In_ecology:​_modeling_population_growth|equação logística]] e o sistema de [[http://​en.wikipedia.org/​wiki/​Lotka%E2%80%93Volterra_equation|equações de Lotka-Volterra]].  ​
 +
 +Há técnicas para avaliar se estes sistemas de equações têm pontos de equilíbrio,​ e se este equilíbrio é estável. Robert May (1972) usou estas ferramentas para demonstrar algo surpreendente:​ a estabilidade em redes tróficas diminui com o aumento de espécies e de complexidade.
 +
 +Este exercício é uma repetição simplificada do procedimento usado por Robert May. O objetivo é que você compreenda os conceitos de equilíbrio e estabilidade usadas em sistemas dinâmicos, para diferenciá-los de outras definições de equilíbrio e estabilidade usadas na ecologia. Com isso você terá também os elementos para avaliar criticamente os resultados da análise de May (1972).
 +
 +
 +<WRAP center round important 60%>
 +Para fazer esse roteiro pressupõe que você deve conhecer os critérios para análise de pontos de equilíbrio e sua estabilidade em modelos de uma população. ​
 +
 +Se isso não é familiar a você, faça primeiro o roteiro de [[ecovirt:​roteiro:​math:​stabilitysage|introdução à análise de estabilidade em sistemas dinâmicos.]] ​
 +</​WRAP>​
 +
 +
 +===== Preparação:​ ambiente R =====
 +
 +Este exercício é feito em R (R Core Team 2012), mas você não precisa conhecer a linguagem R, porque damos os comandos já prontos para executar. Eles estão reproduzidos nesta página, e também em um arquivo, abaixo. A  única coisa que você precisa saber é como enviar os comandos escritos neste arquivo para o R. Para isso você pode copiar os comandos desta página e colar na linha de comando do R. Mas é bem mais prático usar o arquivo de comandos, ou //script//. Para isso, siga os seguintes passos:
 +
 +  - Instale em seu computador o ambiente R, com os pacotes adicionais ''​deSolve''​ e ''​rootSolve''​. A [[http://​www.r-project.org/​|página do R]] tem instruções de instalação. Veja também nosso [[ecovirt:​roteiro:​soft:​instalacaor| roteiro de instalação do R]].
 +  - Crie um diretório em seu computador para os exercícios.
 +  - Copie para este diretório os arquivos abaixo:
 +     - {{:​ecovirt:​roteiro:​math:​eq_funcoes.r}}
 +     - {{:​ecovirt:​roteiro:​sucess:​eq_lv_comandos.r|}}
 +  - Abra o R a partir do arquivo de comandos ''​eq_lv_comandos.r''​. Certifique-se de que você está no diretório onde estão os arquivos.
 +  - Os comandos neste arquivo estão na mesma ordem deste exercício. Siga o roteiro, enviando os comandos indicados a cada seção.
 +  - Se você não sabe como enviar os comandos do arquivo faça este [[ecovirt:​roteiro:​soft:​rprincip|tutorial]].
 +  - Carregue no R os pacotes e funções que vamos usar neste exercício com os comandos:
 +<​code>​
 +library(deSolve)
 +library(rootSolve)
 +source("​eq_funcoes.r"​)
 +</​code>​
 +
 +
 +
 +===== Duas populações =====
 +
 +No roteiro de [[ecovirt:​roteiro:​math:​stabilitysage| análise de estabilidade]] vimos o critério de estabilidade local em sistemas dinâmicos
 +
 +<WRAP center round box 60%>
 +Um ponto de equilíbrio de uma dinâmica populacional é estável se a derivada da velocidade de crescimento da população for negativa nesse ponto.
 +</​WRAP>​
 +
 +O primeiro passo para compreender os resultados de Robert May é generalizar esse critério para mais de uma população que interagem. ​
 +
 +Para entender isso vamos usar o sistema de [[http://​en.wikipedia.org/​wiki/​Competitive_Lotka%E2%80%93Volterra_equations|equações de competição de Lotka-Volterra]]:​
 +
 +
 +$V_1 \ = \ r_1 N_1 \left( 1 - \frac{N_1 - \alpha N_2}{K_1} \right)$
 +
 +
 +$V_2 \ = \ r_2 N_2 \left( 1 - \frac{N_2 - \beta N_1}{K_2} \right)$
 +
 +Onde para as espécies 1 e 2:
 +
 +  * $V_1$, $V_2$ são as velocidades de crescimento populacional
 +  * $r_1$, $r_2$ são as taxas de crescimento intrínseco
 +  * $K_1$, $K_2$ são as capacidades de suporte
 +  * $\alpha$, $\beta$ são os coeficientes de competição de cada espécie sobre a outra
 +
 +Use a função ''​plota.LV''​ para plotar as abundâncias de duas espécies competidoras que coexistem. Os argumentos correspondem aos parâmetros acima, mais as condições iniciais:
 +
 +  * ''​n''​ : vetor com tamanho inicial das populações da espécie 1 e 2
 +  * ''​r1''​ e ''​r2''​ : taxas intrínsecas de crescimento
 +  * ''​K1''​ e ''​K2''​ : capacidades de suporte
 +  * ''​alfa''​ e ''​beta'':​ coeficientes de competição
 +  * ''​time''​ : tempo máximo
 +
 +Verifique a função com este comando:
 +
 +<​code>​
 +plota.LV(n=c(n1=1,​n2=1),​r1=0.2,​K1=150,​r2=0.2,​K2=100,​
 +         ​alfa=0.2,​beta=0.1,​time=150)
 +</​code>​
 +
 +==== Equilíbrio com coexistência ====
 +
 +Neste sistema de equações os tamanhos populacionais em equilíbrio são (Gotelli 2007):
 +
 +$N^*_1 ​ =  \frac{K_1-\alpha K_2}{1-\alpha \beta}$
 +
 +\\
 +
 +$N^*_2 ​ =  \frac{K_2-\beta K_1}{1-\alpha \beta}$
 +
 +A função ''​lv.neq''​ calcula estes valores. Use-a para obter os tamanhos em equilíbrio usados no comando anterior que produziu o gráfico, e compare com o gráfico:
 +
 +<​code>​
 +(lv.n1 <- lv.neq(r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=0.2,​beta=0.1))
 +</​code>​
 +
 +==== Estabilidade ====
 +
 +Há duas condições para a coexistência de competidores no sistema de Lotka-Volterra com duas espécies:
 +
 +$\frac{1}{\beta} \ > \ \frac{K_1}{K_2} \  >  \ \alpha$
 +
 +\\
 +
 +$\frac{1}{\beta} \ < \ \frac{K_1}{K_2} \ < \ \alpha$
 +
 +Vamos verificar a estabilidade dos tamanhos populacionais em equilíbrio sob estas duas condições. A função ''​plota.LV''​ também tem um argumento para aumentar ou reduzir a população a qualquer momento.
 +
 +Já calculamos os tamanhos no equilíbrio para um caso da primeira condição, que guardamos no objeto ''​lv.n1''​. Para fazer o gráfico basta indicar este objeto no argumento ''​n''​ da função. No argumento ''​perturb''​ coloque os valores a adicionar ou subtrair de cada população.
 +
 +Execute o comando abaixo para subtrair um indivíduo da população 1 e acrescentar um indivíduo à população 2: 
 +
 +<​code>​
 +## Perturbando no equilibrio
 +## Grafico ##
 +plota.LV(n=lv.n1,​r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=0.2,​beta=0.1,​time=150,​ perturb=c(-1,​1),​ t.perturb=50)
 +</​code>​
 + 
 +Faça o mesmo para uma combinação de parâmetros que satisfaça a segunda condição:
 +
 +<​code>​
 +## Coexistência das duas espécies, 1/beta > k1/k2 > alfa ##
 +## Calculo dos valores no equilibrio
 +(lv.n2 <- lv.neq(r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=1.8,​beta=0.9))
 +## Grafico ##
 +plota.LV(n=lv.n2,​r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=1.8,​beta=0.9,​time=150)
 +
 +## Perturbando no equilibrio ##
 +plota.LV(n=lv.n2,​r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=1.8,​beta=0.9,​time=200,​ perturb=c(-1,​1),​ t.perturb=50)
 +</​code>​
 +
 +O que acontece se você inverte a perturbação?​
 +
 +<​code>​
 +## Invertendo a perturbação ##
 +plota.LV(n=lv.n2,​r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=1.8,​beta=0.9,​time=200,​ perturb=c(1,​-1),​ t.perturb=50)
 +</​code>​
 +
 +==== Interpretação matemática ====
 +
 +A lógica da análise matemática da estabilidade local deste sistema é a mesma da aplicada para [[ecovirt:​roteiro:​math:​stabilitysage#​estabilidade_da_logistica|uma população]]. Um ponto será localmente estável se na sua vizinhança a velocidade (variação do tamanho populacional) tiver uma relação negativa com os tamanhos populacionais. Só que agora temos duas equações, e em cada uma as velocidades dependem dos tamanhos populacionais das duas espécies.
 +
 +Uma maneira de resolver o problema é avaliar o efeito de cada população sobre cada velocidade, mantida a outra população fixa. Isto é feito com [[http://​en.wikipedia.org/​wiki/​Partial_derivative|derivadas parciais]], designadas com o símbolo $\partial$.
 +
 +Por exemplo, ​
 +
 +$\frac{\partial V_1}{\partial N_1}$
 +
 +é a derivada da velocidade de crescimento da população 1 em relação ao tamanho da população 1, mantida a população 2 fixa. Esta derivada expressa o efeito que uma espécie tem sobre seu próprio crescimento populacional. O efeito da espécie 1 sobre o crescimento da espécie 2 é 
 +
 +$\frac{\partial V_2}{\partial N_1}$
 +
 +O próximo truque é organizar as derivadas parciais em uma matriz, que podemos ler como a combinação dos efeitos parciais de cada espécie sobre si mesma e sobre a competidora:​
 +
 +$\left( \begin{matrix} \frac{\partial ​ V_1}{\partial N_1} & \frac{\partial ​ V_1}{\partial N_2} \\ & \\\frac{\partial ​ V_2}{\partial N_1} & \frac{\partial ​ V_2}{\partial N_2} \end{matrix} \right) $
 +
 +Esta é a **Matriz Jacobiana** do sistema de equações. A diagonal desta matriz tem os efeitos das populações de cada espécie sobre si mesmas. Fora das diagonais temos os efeitos inter-específicos.  ​
 +
 +No estudo de estabilidade local da equação logística avaliamos o sinal da derivada nos pontos de equilíbrio. Aqui fazemos o mesmo para cada derivada parcial. Com isso teremos a matriz das derivadas parciais avaliadas num dado ponto de equilíbrio. A esta Jacobiana do sistema Lotka-Volterra,​ avaliada nos pontos de equilíbrio,​ May (1972) chamou de **Matriz da comunidade**:​
 +
 +Para uma equação a aproximação linear indica que o equilíbrio é estável se a relação entre velocidades e tamanhos populacionais na sua vizinhança é negativa. Mas como avaliar isto agora? A extensão do critério de estabilidade local por aproximação linear para um sistema de equações Lotka-Volterra é o seguinte:
 +
 +
 +<WRAP box red 50% center round>
 +
 +Para um sistema de equações de Lotka-Volterra,​ um ponto de equilíbrio é localmente estável se todos os autovalores da matriz da comunidade forem negativos.
 +
 +</​WRAP>​
 +
 +[[http://​en.wikipedia.org/​wiki/​Eigenvalues_and_eigenvectors|Autovalores]] são propriedades de matrizes, e uma das bases da álgebra linear. Para uma introdução didática veja Otto & Day (2007, caps 7 e 8). 
 +
 +Para nossos propósitos,​ basta a noção de que autovalores negativos são o equivalente multivariado da derivada negativa para uma equação diferencial.
 +
 +O número de autovalores de uma matriz de comunidades é igual ao número de espécies. O cálculo de autovalores não é simples, mas temos a ajuda do R, com sua função [[http://​stat.ethz.ch/​R-manual/​R-patched/​library/​base/​html/​eigen.html|eigen]].
 +
 +=== Cálculos no R ===
 +
 +Vamos calcular a matriz de comunidades para a primeira combinação de parâmetros que experimentamos. Para isso usamos a função ''​jacob.lv'',​ informando os valores dos parâmetros. A função já calcula os tamanhos populacionais no equilíbrio e a matriz Jacobiana avaliada nestes pontos:
 +
 +<​code>​
 +##Primeira combinação de parametros: 1/beta < k1/k2 < alfa  ##
 +## Matriz da comunidade
 +j1 <- jacob.lv(r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=0.2,​beta=0.1)
 +</​code>​
 +
 +Agora aplicamos a função ''​eigen''​ para obter os autovalores desta matriz:
 +
 +<​code>​
 +##​Autovalores
 +eigen(j1, only.values=TRUE)$values
 +</​code>​
 +
 +Faça o mesmo com a segunda combinação de parâmetros que experimentamos:​
 +
 +<​code>​
 +## Segunda combinação de parametros: 1/beta > k1/k2 > alfa  ## 
 +## Matriz da comunidade
 +j2 <- jacob.lv(r1=0.2,​K1=150,​r2=0.2,​K2=100,​alfa=1.8,​beta=0.9)
 +##​Autovalores
 +eigen(j2, only.values=TRUE)$values
 +</​code>​
 +
 +**Pergunta:​** Os resultados desta análise são coerentes com o que você observou ao perturbar o sistema?
 +
 +
 +
 +===== O Estudo do Barão May =====
 +
 +A matriz de comunidade pode ser estendida para quantas espécies desejarmos. Robert May usou isso para avaliar se diversidade de espécies aumenta a estabilidade. Se isto for verdade, como era aceito à época, deve ser mais fácil montar matrizes estáveis que sejam grandes, do que pequenas.
 +
 +Para testar esta hipótese, May fez a seguinte simulação:​
 +
 +  - Defina o número de espécies do sistema, S
 +  - Defina a fração de interações potenciais que ocorrem. Isto é a conectância da matriz, C
 +  - Crie uma matriz com S linhas por S colunas
 +  - Preencha a diagonal desta matriz com o valor -1
 +  - Preencha ao acaso as células restantes com valores aleatórios até que se alcance a conectância
 +  - Verifique se os autovalores desta matriz são todos negativos. Se sim, conte como um sistema estável
 +
 +Com isso, geramos um sistema em que há competição intra-específica igual para todas as espécies, e uma proporção fixa de associações inter-específicas,​ distribuídas ao acaso. O valor e sinal destas interações também é sorteado. May sorteou os efeitos inter-específicos de uma distribuição normal com média zero. Com isso interações positivas e negativas são igualmente prováveis. Outro parâmetro importante da simulação é o desvio-padrão desta distribuição normal, que aumenta o valor médio do efeito das interações. Por isso, ele é chamado de **força de interação**.
 +
 +==== Simulando ====
 +
 +A função ''​may''​ reproduz a simulação,​ e tem os argumentos:
 +
 +  * ''​S''​ : número de espécies
 +  * ''​C''​ : conectância
 +  * ''​f''​ : força média das interações
 +  * ''​nsim'':​ número de repetições da simulação
 +
 +A função retorna a proporção das repetições que produziram sistemas estáveis ((isto é, matrizes de comunidades com todos os autovalores negativos)).
 +
 +Vamos começar com 20 espécies, conectância de 0,3 ((30% das células da matriz de comunidades tem valor diferente de zero)) e força de interação de 0,2:
 +
 +<​code>​
 +(sim.1 <- may(S=20,​C=0.3,​ f=0.2, nsim=100))
 +</​code>​
 +
 +O comando acima já guarda os resultados em uma tabela. Prossiga aumentando o número de espécies, mantendo os outros parâmetros constantes:
 +
 +<​code>​
 +(sim.1 <- rbind(sim.1,​may(S=40,​C=0.3,​ f=0.2, nsim=100)))
 +(sim.1 <- rbind(sim.1,​may(S=60,​C=0.3,​ f=0.2, nsim=100)))
 +(sim.1 <- rbind(sim.1,​may(S=80,​C=0.3,​ f=0.2, nsim=100)))
 +(sim.1 <- rbind(sim.1,​may(S=90,​C=0.3,​ f=0.2, nsim=100)))
 +(sim.1 <- rbind(sim.1,​may(S=100,​C=0.3,​ f=0.2, nsim=100)))
 +(sim.1 <- rbind(sim.1,​may(S=110,​C=0.3,​ f=0.2, nsim=100)))
 +(sim.1 <- rbind(sim.1,​may(S=120,​C=0.3,​ f=0.2, nsim=100)))
 +</​code>​
 +
 +O que lhe parece? Um gráfico pode ajudar:
 +<​code>​
 +## Grafico
 +plot(p.estab~S,​ data=sim.1, xlab="​N de espécies",​ylab="​Proporção matrizes estáveis"​)
 +</​code>​
 +
 +A conectância pode ser interpretada como uma medida de complexidade do sistema. Será que maior complexidade aumenta as chances de estabilidade?​ Experimente:​
 +
 +<​code>​
 +##Riqueza e força de interação fixa, aumento de Conectancia ##
 +(sim.2 <- may(S=120,​C=0.3,​ f=0.2))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.28,​ f=0.2)))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.26,​ f=0.2)))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.24,​ f=0.2)))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.22,​ f=0.2)))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.20,​ f=0.2)))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.18,​ f=0.2)))
 +(sim.2 <- rbind(sim.2,​may(S=120,​C=0.16,​ f=0.2)))
 +##grafico
 +plot(p.estab~C,​ data=sim.2, xlab="​Conectancia",​ylab="​Proporção matrizes estáveis"​)
 +</​code>​
 +
 +**Pergunta:​** diversidade e complexidade levam a estabilidade?​
 +
 +===== Para saber mais =====
 +
 +    * **Gotelli, N. 2007. Ecologia. Londrina, Ed. Planta.** (A referência básica sobre os modelos dinâmicos em ecologia).
 +    * **May, R.M. 1972. Will a large complex system be stable? Nature, 238, 413-414.** (O artigo clássico que estabeleceu o conceito de equilíbrio de redes tróficas como solução de um sistema de equações de Lotka-Volterra.)
 +    * **May, R.M. 2001. Stability and complexity in model ecosystems. Princeton, Princeton University Press.** (Nesta influente monografia Robert May desenvolve as idéias do artigo de 1972. A primeira edição é de 1973, e o livro foi re-editado na coleção [[http://​press.princeton.edu/​catalogs/​series/​plb.html|Princeton Landmarks of Biology]] em 2001.) ​
 +    * **Sarah P. Otto & Troy Day 2007. A Biologist'​s Guide to Mathematical Modeling in Ecology and Evolution. Princeton, Princeton University Press.** (Ótima introdução à matemática,​ de biólogos para biólogos. Como neste exercício, muita vezes usa abordagens menos tradicionais e mais intuitivas. Uma ótima fonte para quem quiser entender melhor os detalhes das análises de estabilidade e algebra matricial que usamos aqui. Veja também o [[http://​www.zoology.ubc.ca/​biomath/​|site do livro]].)
 +    *  R Development Core Team (2012). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0,​ URL [[http://​www.R-project.org/​]].
 +
 +
 +{{tag> R cálculo derivada equação_diferencial lotka-volterra crescimento_logístico}}
ecovirt/roteiro/sucess/div_estab.txt · Última modificação: 2020/02/02 21:10 por prado