Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
02_tutoriais:tutorial9:start [2022/06/21 17:51] adalardo [Simula T] |
02_tutoriais:tutorial9:start [2023/09/12 10:46] (atual) |
||
---|---|---|---|
Linha 44: | Linha 44: | ||
===== Revisitando o teste de hipótese ===== | ===== Revisitando o teste de hipótese ===== | ||
- | Agora vamos revisitar os dados de Chacal Dourado e a pergunta se há diferença no tamanho de mandíbulas entre machos e fêmeas, onde exemplificamos o teste de hipótese no [[02_tutoriais:tutorial6:start|]]. | + | Agora vamos revisitar os dados de Chacal Dourado e a pergunta se há diferença no tamanho de mandíbulas entre machos e fêmeas, onde exemplificamos o teste de hipótese no tutorial [[02_tutoriais:tutorial6:start|]]. |
<code rsplus> | <code rsplus> | ||
Linha 133: | Linha 133: | ||
abline(v = result[1]*-1, col = "red") | abline(v = result[1]*-1, col = "red") | ||
</code> | </code> | ||
- | ==== Cálculo do P ==== | + | ==== Cálculo do p-valor ==== |
Duas perguntas distintas podem ser colocadas nesse teste de hipótese. Se há diferença entre os tamanhos ou se um tamanho é maior (menor) que outro, como já vimos no teste de hipótese. | Duas perguntas distintas podem ser colocadas nesse teste de hipótese. Se há diferença entre os tamanhos ou se um tamanho é maior (menor) que outro, como já vimos no teste de hipótese. | ||
Linha 157: | Linha 157: | ||
p.uni | p.uni | ||
</code> | </code> | ||
+ | |||
+ | ==== Simula T ==== | ||
+ | |||
+ | No tutorial de [[02_tutoriais:tutorial6:start|]] também utilizamos uma função que automatiza esse teste de hipótese por simulação chamada {{ :02_tutoriais:tutorial6:simulaT.r |simulaT}}. Para relembrar, baixe a função e refaça o teste: | ||
+ | |||
+ | |||
+ | <code rsplus> | ||
+ | x11(width = 10, height = 10) | ||
+ | source("simulaT.r") | ||
+ | simulaT(macho, femea, teste = "maior", anima = TRUE) | ||
+ | </code> | ||
+ | |||
+ | As funções não precisam ser consideradas procedimento abstrato no qual não temos acesso. Uma função similar a essa foi criada durante a aula no curso de 2012, com o código que aprenderam neste tópico. Abra o arquivo da função em um editor de texto e reconheça todos os comando que estão nas linhas de código da função. Na próxima aula iremos entender como incorporar um procedimento em uma função. O primeiro passo é saber executar o procedimento em linhas de código, como fizemos no início do tutorial. | ||
Linha 190: | Linha 203: | ||
Perceba que as últimas linhas de comando produzem valores diferentes apesar de serem as mesmas. Esse processo é similar ao que usamos para fazer amostras de uma distribuição conhecida com o //rnorm()// e //rpois()//, só que agora os valores passíveis de serem amostrados são apenas aqueles presentes nos nossos dados. | Perceba que as últimas linhas de comando produzem valores diferentes apesar de serem as mesmas. Esse processo é similar ao que usamos para fazer amostras de uma distribuição conhecida com o //rnorm()// e //rpois()//, só que agora os valores passíveis de serem amostrados são apenas aqueles presentes nos nossos dados. | ||
Se repetirmos esse procedimento muitas vezes e guardarmos os resultados de cada simulação de amostras com reposição, teremos um conjunto de pseudo-valores que representam a distribuição do nosso parâmetro e portanto, podemos calcular o intervalo de confiança que desejarmos a partir dessa distribuição. | Se repetirmos esse procedimento muitas vezes e guardarmos os resultados de cada simulação de amostras com reposição, teremos um conjunto de pseudo-valores que representam a distribuição do nosso parâmetro e portanto, podemos calcular o intervalo de confiança que desejarmos a partir dessa distribuição. | ||
- | Como repetimos uma operação muitas vezes no R? Usando novamente os ciclos produzidos pela função //for(... in ...)//, vamos fazer então 100 simulações: | + | Como repetimos uma operação muitas vezes no R? Usando novamente os ciclos produzidos pela função ''for(... in ...)'', vamos fazer então 100 simulações: |
<code rsplus> | <code rsplus> | ||
Linha 213: | Linha 226: | ||
</code> | </code> | ||
+ | Definitivamente, fazer só 100 simulações, não parece adequado. Existem muitos arranjos possíveis de 10 elementos reamostrados com reposição((se não estou equivocado o número de arranjos é 10¹⁰, mas como no nosso cálculo a ordem dos elementos não importa, esse número é efetivamente menor)). Refaça o código com 1000 (mil) iterações e recalcule o intervalo. | ||
Linha 228: | Linha 242: | ||
===== Tesourinha e a deriva continental ===== | ===== Tesourinha e a deriva continental ===== | ||
- | Vamos agora reproduzir a análise principal do estudo publicado na Nature em 1966 (//Geographical Distribution of the Dermaptera and the Continental Drift Hypothesis//) e descrita no primeiro capítulo do [[03_apostila:08-simulacao#fnt__1|livro do Manly]] sobre permutação. | + | |
+ | Para fechar nosso tutorial vamos reproduzir uma análise mais complexa, que foi publicada em um artigo na Nature em 1966 (//Geographical Distribution of the Dermaptera and the Continental Drift Hypothesis//) e descrita no primeiro capítulo do livro do Manly (1997 ((Manly B. F. J., 1997 Randomization, bootstrap and Monte Carlo methods in biology. 2nd Ed., Chapman and Hall, London))) sobre permutação. | ||
A ideia era verificar se a ocorrência de tesourinhas (//Dermaptera//) estava mais correlacionada com a distribuição dos continentes atual ou antes da deriva continental. | A ideia era verificar se a ocorrência de tesourinhas (//Dermaptera//) estava mais correlacionada com a distribuição dos continentes atual ou antes da deriva continental. | ||
A informação de interesse é a correlação da ocorrência de tesourinha entre diferentes regiões biogeográficas: Eurasia, África, Madagascar, Oriente, Austrália, Nova Zelândia, América do Sul e América do Norte. Valores positivos próximos a 1 representam composições de comunidades muito parecidas, valores próximos a -1 representam composição muito distintas. Vamos reconstruir essa matriz no objeto ''data.coef'': | A informação de interesse é a correlação da ocorrência de tesourinha entre diferentes regiões biogeográficas: Eurasia, África, Madagascar, Oriente, Austrália, Nova Zelândia, América do Sul e América do Norte. Valores positivos próximos a 1 representam composições de comunidades muito parecidas, valores próximos a -1 representam composição muito distintas. Vamos reconstruir essa matriz no objeto ''data.coef'': | ||
Linha 255: | Linha 270: | ||
A primeira parte da análise dos dados é calcular a correlação entre a matriz de similaridade taxonômica e de eventos de dispersão (atual e antes da deriva). | A primeira parte da análise dos dados é calcular a correlação entre a matriz de similaridade taxonômica e de eventos de dispersão (atual e antes da deriva). | ||
- | Para isso, calculamos o coeficiente de correlação de //Pearson// entre as matrizes. Esse valor irá nos dizer se duas matrizes estão correlacionadas. A correlação pode ser positiva (até +1) se variações nos elementos de uma matriz levam a variações na mesma direção dos elementos correspondentes na outra , negativa quando em direção contrária (até -1), ou podem ser não relacionadas(0). | + | Para isso, calculamos o coeficiente de correlação de //Pearson// entre as matrizes. Esse valor irá nos dizer se duas matrizes estão correlacionadas. A correlação pode ser positiva (até +1) se variações nos elementos de uma matriz levam a variações na mesma direção dos elementos correspondentes na outra , negativa quando em direção contrária (até -1), ou podem ser não relacionadas (≅0). |
$$ r = \frac{\sum_1^n (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_1^n{(x_i-\bar{x})^2}}\sqrt{\sum_1^n{(y_i-\bar{y})^2}}}$$ | $$ r = \frac{\sum_1^n (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_1^n{(x_i-\bar{x})^2}}\sqrt{\sum_1^n{(y_i-\bar{y})^2}}}$$ | ||
Linha 288: | Linha 303: | ||
cor12 ## correlação observada com a distancia atual | cor12 ## correlação observada com a distancia atual | ||
cor13 ## correlação observada com a distancia antes da deriva | cor13 ## correlação observada com a distancia antes da deriva | ||
- | ######################################################## | + | </code> |
- | ### Repetir a simulação muitas vezes ################### | + | |
- | ####################################################### | + | Para reproduzir muitas vezes o procedimento acima, vamos colocá-lo dentro de um ciclo de iteração, não sem antes criar o objeto para guardar todos os valores que queremos. |
+ | |||
+ | <code rsplus> | ||
res.cor=data.frame(sim12=rep(NA, 5000), sim13=rep(NA,5000)) | res.cor=data.frame(sim12=rep(NA, 5000), sim13=rep(NA,5000)) | ||
str(res.cor) | str(res.cor) | ||
Linha 302: | Linha 320: | ||
res.cor[s,2]<-cor(as.vector(data.sim), as.vector(dist.deriva), use="pairwise.complete.obs") | res.cor[s,2]<-cor(as.vector(data.sim), as.vector(dist.deriva), use="pairwise.complete.obs") | ||
} | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | Por fim, vamos avaliar os resultados e calcular o p-valor: | ||
+ | |||
+ | <code rsplus> | ||
str(res.cor) | str(res.cor) | ||
par(mfrow=c(2,1)) | par(mfrow=c(2,1)) | ||
Linha 313: | Linha 338: | ||
p13=sum(res.cor[,2]<= res.cor[1,2])/(dim(res.cor)[1]) | p13=sum(res.cor[,2]<= res.cor[1,2])/(dim(res.cor)[1]) | ||
p13 | p13 | ||
- | |||
</code> | </code> | ||
+ | |||
+ | Um fase muito importante é a interpretação dos resultados de testes como esse, que não está no escopo deste curso. De qualquer forma, consegue imaginar a conclusão do artigo para esse resultado? | ||
===== Para saber mais ===== | ===== Para saber mais ===== | ||
Veja a aba da apostila deste mesmo tópico. Ali apresentamos outros conceitos. Dois livros são muito importantes e lançaram as bases das análises de Monte Carlo na ecologia: | Veja a aba da apostila deste mesmo tópico. Ali apresentamos outros conceitos. Dois livros são muito importantes e lançaram as bases das análises de Monte Carlo na ecologia: |