Ferramentas do usuário

Ferramentas do site


02_tutoriais:tutorial9:start

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
02_tutoriais:tutorial9:start [2024/09/10 17:11]
127.0.0.1 edição externa
02_tutoriais:tutorial9:start [2024/09/11 12:48] (atual)
Linha 201: Linha 201:
 mean(sample(macho,​ replace = TRUE)) mean(sample(macho,​ replace = TRUE))
 </​code>​ </​code>​
-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 duas últimas linhas de comando produzem valores diferentesapesar de serem identicas. 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.as mesmas
 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: ​
Linha 215: Linha 215:
 </​code>​ </​code>​
  
-Agora precisamos calcular o intervalo de confiança, chamado **intervalo bootstrap**,​ para o limite que interessa (95%, 99%...). ​Vamos calcular ​para um intervalo de 90%. Uma forma de faze-lo é ordenando os valores ​olhado ​quais valores estão nos extremos ​com 5% de cada lado.+Agora precisamos calcular o intervalo de confiança, chamado **intervalo bootstrap**,​ para o limite que interessa (95%, 99%...). ​Para calcular um intervalo de 90% podemos ordenar o vetor verificar ​quais valores estão nos limite das posições ​com 5% de cada lado. Como o vetor tem cem posições só precisamos olhar a posição ''​6''​ e a posição ''​95''​ 
 +  
 <code rsplus> <code rsplus>
 sort(resulta) sort(resulta)
Linha 221: Linha 223:
 sort(resulta)[95] ## o valore que deixa os 5 maiores de fora sort(resulta)[95] ## o valore que deixa os 5 maiores de fora
 </​code>​ </​code>​
 +
 +
 Podemos também usar a função ''​quantile()''​ definindo os quantis de interesse: Podemos também usar a função ''​quantile()''​ definindo os quantis de interesse:
 +
 <code rsplus> <code rsplus>
-quantile(resulta,​ prob=c(0.05,​ 0.95))+quantile(resulta,​ prob = c(0.05, 0.95))
 </​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 ​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.+Definitivamente,​ fazer só 100 simulações,​ não parece adequado. Existem muitos arranjos possíveis de 10 elementos reamostrados com reposição((a ​combinatória com reposição de 10 elementos ​em conjuntos de 10 é da ordem de 92378)). Refaça o código com 1000 (mil) iterações e recalcule o intervalo.
  
  
Linha 247: Linha 252:
 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'':​
 <code rsplus> <code rsplus>
-data.coef<​-matrix(c(NA,​ .30, .14, .23, .30, -0.04, 0.02, -0.09, NA, NA, .50,.50, .40, 0.04, 0.09, -0.06, NA, NA, NA, .54, .50, .11, .14, 0.05, rep(NA, 4), .61, .03,-.16, -.16, rep(NA, 5), .15, .11, .03, rep(NA, 6), .14, -.06, rep(NA, 7), 0.36, rep(NA, 8)), nrow=8, ncol=8)+data.coef <- matrix(c(NA,​ .30, .14, .23, .30, -0.04, 0.02, -0.09, NA, NA, .50,.50, .40, 0.04, 0.09, -0.06, NA, NA, NA, .54, .50, .11, .14, 0.05, rep(NA, 4), .61, .03,-.16, -.16, rep(NA, 5), .15, .11, .03, rep(NA, 6), .14, -.06, rep(NA, 7), 0.36, rep(NA, 8)), nrow=8, ncol=8)
 rownames(data.coef) <- c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​) rownames(data.coef) <- c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​)
 colnames(data.coef) <- c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​) colnames(data.coef) <- c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​)
Linha 256: Linha 261:
  
 <code rsplus> <code rsplus>
-dist.atual<​-matrix(c(NA,​1,​2,​1,​2,​3,​2,​1,​ NA, NA, 1,​2,​3,​4,​3,​2,​ NA, NA, NA,​3,​4,​5,​4,​3,​ rep(NA, 4),1,2,3,2, rep(NA, 5), 1,4,3, rep(NA, 6), 5,4, rep(NA, 7), 1, rep(NA, 8)), nrow=8, ncol=8)+dist.atual <- matrix(c(NA,​1,​2,​1,​2,​3,​2,​1,​ NA, NA, 1,​2,​3,​4,​3,​2,​ NA, NA, NA,​3,​4,​5,​4,​3,​ rep(NA, 4),1,2,3,2, rep(NA, 5), 1,4,3, rep(NA, 6), 5,4, rep(NA, 7), 1, rep(NA, 8)), nrow=8, ncol=8)
 dist.atual dist.atual
-dist.deriva<​- matrix(c(NA,​1,​2,​1,​2,​3,​2,​1,​ NA, NA, 1,​1,​1,​2,​1,​2,​ NA, NA, NA,​1,​1,​2,​2,​3,​ rep(NA, 4),1,2,2,2, rep(NA, 5), 1,2,3, rep(NA, 6), 3,4, rep(NA, 7), 1,  rep(NA, 8)), nrow=8, ncol=8)+dist.deriva <- matrix(c(NA,​1,​2,​1,​2,​3,​2,​1,​ NA, NA, 1,​1,​1,​2,​1,​2,​ NA, NA, NA,​1,​1,​2,​2,​3,​ rep(NA, 4),1,2,2,2, rep(NA, 5), 1,2,3, rep(NA, 6), 3,4, rep(NA, 7), 1,  rep(NA, 8)), nrow=8, ncol=8)
 # colocando nomes nas matrizes # colocando nomes nas matrizes
 rownames(dist.atual) <- colnames(dist.atual)<​- c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​) rownames(dist.atual) <- colnames(dist.atual)<​- c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​)
  
-colnames(dist.deriva)<​- rownames(dist.deriva)<​- ​ c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​)+colnames(dist.deriva) <- rownames(dist.deriva)<​- ​ c("​Eur_Asia",​ "​Africa",​ "​Madag",​ "​Orient",​ "​Austr",​ "​NewZea",​ "​SoutAm",​ "​NortAm"​)
 # olhando as matrizes # olhando as matrizes
 dist.atual dist.atual
Linha 273: Linha 278:
  
  $$ 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}}}$$
 +
 <code rsplus> <code rsplus>
-cor12<​-cor(as.vector(data.coef),​ as.vector(dist.atual),​ use="​complete.obs"​) +cor12 <- cor(as.vector(data.coef),​ as.vector(dist.atual),​ use="​complete.obs"​) 
-cor13<​-cor(as.vector(data.coef),​ as.vector(dist.deriva),​ use="​complete.obs"​)+cor13 <- cor(as.vector(data.coef),​ as.vector(dist.deriva),​ use="​complete.obs"​)
 cor12 ## correlação com a distancia atual cor12 ## correlação com a distancia atual
 cor13 ## correlação com a distancia antes da deriva cor13 ## correlação com a distancia antes da deriva
Linha 286: Linha 292:
  
 <code rsplus> <code rsplus>
-data.sim<​-data.coef # copia da matriz que será aleatorizada+data.sim <- data.coef # copia da matriz que será aleatorizada
 data.sim ​ data.sim ​
  
Linha 294: Linha 300:
 data.sim # olhando a matriz data.sim # olhando a matriz
 data.sim[8:​1,​ 8:1] # uma matriz baguncada mas que mantem certa estrutura data.sim[8:​1,​ 8:1] # uma matriz baguncada mas que mantem certa estrutura
-sim.pos<​-sample(1:​8) # posicoes permutadas ​+sim.pos <- sample(1:8) # posicoes permutadas ​
 sim.pos sim.pos
-data.sim<​-data.sim[sim.pos,​ sim.pos] # aqui uma matriz verdadeiramente permutada +data.sim <- data.sim[sim.pos,​ sim.pos] # aqui uma matriz verdadeiramente permutada 
-cor12.sim<​-cor(as.vector(data.sim),​ as.vector(dist.atual),​ use="​pairwise.complete.obs"​) +cor12.sim <- cor(as.vector(data.sim),​ as.vector(dist.atual),​ use="​pairwise.complete.obs"​) 
-cor13.sim<​-cor(as.vector(data.sim),​ as.vector(dist.deriva),​ use="​pairwise.complete.obs"​)+cor13.sim <- cor(as.vector(data.sim),​ as.vector(dist.deriva),​ use="​pairwise.complete.obs"​)
 cor12.sim ​ cor12.sim ​
 cor13.sim cor13.sim
Linha 309: Linha 315:
 <code rsplus> <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)
-res.cor[1,​]<​-c(cor12,​ cor13)+res.cor[1,] <- c(cor12, cor13)
 str(res.cor) str(res.cor)
 for(s in 2:5000) for(s in 2:5000)
     {     {
-        sim.pos<​-sample(1:​8) +        sim.pos <- sample(1:​8) 
-        data.sim<​-data.sim[sim.pos,​ sim.pos] +        data.sim <- data.sim[sim.pos,​ sim.pos] 
-        res.cor[s,​1]<​-cor(as.vector(data.sim),​ as.vector(dist.atual),​ use="​pairwise.complete.obs"​) +        res.cor[s,​1] <- cor(as.vector(data.sim),​ as.vector(dist.atual),​ use="​pairwise.complete.obs"​) 
-        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"​)
     }     }
  
Linha 328: Linha 334:
 <code rsplus> <code rsplus>
 str(res.cor) str(res.cor)
-par(mfrow=c(2,​1))+par(mfrow = c(2,1))
 hist(res.cor[,​1]) hist(res.cor[,​1])
-abline(v=res.cor[1,​1],​ col="​red"​)+abline(v = res.cor[1,​1],​ col = "​red"​)
 hist(res.cor[,​2]) hist(res.cor[,​2])
-abline(v=res.cor[1,​2],​ col="​red"​)+abline(v = res.cor[1,​2],​ col = "​red"​)
 #### calculando o P ########### #### calculando o P ###########
-p12=sum(res.cor[,​1]<​= res.cor[1,​1])/​(dim(res.cor)[1])+p12 <- sum(res.cor[,​1] <= res.cor[1,​1])/​(dim(res.cor)[1])
 p12 p12
-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
  
02_tutoriais/tutorial9/start.1725999064.txt.gz · Última modificação: 2024/09/10 17:11 por 127.0.0.1