Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2011:alunos:trabalho_final:tiago:start

Tiago Carrijo

t.f.carrijo.jpg

Doutorando pelo programa de Pós-graduação em Entomologia da Faculdade de Filosofia, Ciências e Letras de Ribeirão Preto, USP. Desenvolvo o projeto de monitoramento da fauna de cupins do complexo Mandeira, em Porto Velho, Rondônia, onde se insere meu projeto de Doutorado: “Estudo da termitofauna (Insecta, Isoptera) das áreas de influência da Usina Hidrelétrica (UHE) de Jirau, região do alto Rio Madeira, Rondônia”, orientado pela Profa. Dra. Eliana Marques Cancello, do Museu de Zoologia da USP.

Meus exercícios

Propostas de Trabalho Final

Principal

Testar auto-correlação espacial em diferentes níveis hierárquicos com o fim de determinar a melhor unidade amostral a ser utilizada em um projeto.

Durante a coleta de dados do meu doutorado realizei coletas de cupins em diferentes unidades:

- Quadrats (2,5 x 2 m): menor unidade amostral possível (abundância máxima de 1 para cada espécie).

- Subparcela (5 x 2 m): unidades amostrais compostas por dois quadrats, sempre coletadas à uma distância mínima de 50 m uma da outra ou, caso coletada no mesmpo ponto, com uma 'distância temporal' entre uma campanha e outra (abundância máxima de 2 para cada espécie)

- Parcela (250 x 40 m): unidades distantes 1 km uma da outra e com subparcelas distribuídas ao longo do espaço e tempo (abundância máxima igual ao número de subparcelas realizadas).

- Módulo (3 x 1 km): unidades distantes vários km uma das outras, ou com uma barreira (rio Madeira) os seprando; é o conjunto de 8 parcelas distribuídas em dois transectos de 3 km de comprimento que estão distantes entre si por 1 km (4 parcelas em cada transecto).

Desta forma, as unidades estão dispostas em diferentes classes de distância, como conjuntos e subconjuntos, onde os maiores são compostos pelos menores.

A idéia é identificar qual é a melhor unidade amostral para ser utilizada durante análises, levando em consideração a independência que elas devem apresentar entre si (baixa ou nenhuma auto-correlação espacial).

A entrada de dados será feita através de uma matriz de presença e ausência para cada quadrat amostrado. As primeiras colunas serão: Campanha, Módulo, Parcela, Subparcela, Quadrat, e as demais as espécies. As combinações das primeiras colunas formarão as unidades a serem analisadas para construção das matrizes de correlação ‘distância’ x ‘composição de espécies’.

Plano B

Os cupins considerados humívoros devem fazer parte, na verdade, de diversas guildas mais específicas, se alimentando de camadas diferentes do solo e partículas selecionadas. O tubo digestivo, principalmente dos operários, possui diversas variações entre os grupos taxonomômicos.

Dessa forma, o objetivo é fazer uma função que correlacione diversas medidas tomadas do tubo digestivo de cupins e agrupá-los, tentando correlacionar com o tipo de alimento que eles consomem.

Comentário Leandro

Tiago, o plano A parece bem interessante, mas não ficou claro como será incorporada a distância entre as parcelas na entrada dos dados. Dê uma olhada na proposta de trabalho final do Alexandre Igari. Talvez vocês possam trocas umas ideias.

Com relação ao plano B, não ficou muito claro quais seriam as entradas de dados e como seria feito o agrupamento das medidas.

Minha sugestão é que você tente executar o plano A em módulos, focando o teste de correlação entre cada forma de amostragem de maneira individual (primeiro os teste com quadrats, depois com subparcelas,…) e posteriormente comparando entre eles. Pode facilitar bastante a construção da função.

Comentário Ale

Concordo com o Leandro, fica dificil avaliar a viabilidade sem a descrição de como será a entrada da distância e qual o indice que irá usar para ver a autocorrelação espacial. Há índices como o de I Moran, C Geary… e mais que isso para avaliar a autocorrelação deve construir um envelope de confiança para tomar decisão. A autocorrelação é medida entre todas as unidades amostrais nas várias distâncias possíveis. Acho que pensar em uma função que faça apenas a primeira parte: a partir dos dados de ocorrência e da matriz de distância entre as amostras calcular um índice de autocorrelação já seria um baita desafio!

Reposta para Leandro e Ale

Estou tentando começar do começo, primeiramente quero fazer os índices de Moran, mas apenas para uma distância. Vou inicialmente testar pra ver se os quadrats (que são coletados um do lado do outro, par a par) estão correlacionados em relação à composição de espécies. Estou dando um estudada no pacote spdep, para ver como calcular o índice de Moran e, também, ver se é a melhor opção (eu havia pensando em fazer algo com diversidade Beta em vez de índice de Moran.. daria também??).

Mas enfim, a minha primeira dúvida na verdade é em relação a como fazer com que a função faça o índice de Moran (ou Jaccard) apenas entra um par de linhas, ou invés de fazer todas linhas contra todas.. porque meus os dados entram assim:

Quadrate sp.1 sp.2 sp.3
Q1 0 1 0
Q2 1 0 1
Q3 1 0 0
Q4 0 0 1
Q5 1 0 0
Q6 0 1 0
Q7 1 0 0
Q8 1 0 1

Mas o único quadrat ao lado do Q1 é o Q2, do lado do Q3 é o Q4, do lado do Q8 é o Q7.. ou seja, quero calcular um índice para as duplas: (1:2), (3:4) … (n-1,n). Por enquanto não consegui sair desse ponto.. (até postei no Forum e o Fábio está tentando me ajudar, mas ainda não consegui montar uma lista com os valores de dois em dois, e também acho que o for não aceita listas, mas apenas vetores..) Bom… passei desse ponto!

Depois eu construiria um modelo nulo como com todos os dados e um teste para ver se os índices que achei são devido ao acaso ou se existe correlação entre os quadrats vizinho..

Essa foi a forma que pensei em fazer algo mais simples, mas mesmo assim não sei a possibilidade de fazer..

Após a Entrega

Tivemos que fazer correções na função para que ela funcionasse. Ainda assim, foi difícil entender a entrada e saída, pois o help também precisa melhorar, principalmente quanto à fundamentação teórica da análise.

Função - Proposta A, reduzida

Essa função está funcionando, mas ele dá alguns warnings (quando dou sample, algumas linhas ficam com 0, e na hora de calcular o índice ele dá esse erro..) Mas acredito que para o resultado que quero isso não interfere..

Outro problema é que ela está extremamente lenta.. tive que reduzir para 100 repetições porque ela demora muito..

Eu fiz ela com o índice de Jaccard porque ao procurar os documentos do pacote spdep, que tem ínidices de Moran, a entrada de dados para as funções pedem listas de distâncias, que não é o caso dos dados para essa função, já que todas as unidades analisadas possuem a mesma distância..

Help da função

bside                package: requer o pacote 'vegan'               R Documentation

     Teste de significância para autocorrelação espacial entre diversas réplicas com distâncias constantes, par a par

Description:

     Teste de significância para autocorrelação espacial entre diversas réplicas com distâncias constantes, par a par

Usage:

      bside(a)

Arguments:

      a: data.frame ou matriz com unidades amostrais nas linhas, em sequência, par a par, e variáveis nas colunas ~~ 

Details:

      Utiliza o índice de similaridade (diversidade Beta) de Jaccard (pacote vegan e a função vegdist), para calcular a diferença de composição entre uma unidade amostral e seu par  ~~

Value:

      Retorna o valor de p. Se significativo, existe autocorrelação espacial.

Warning:

     Pode retornar diversos 'warnigns', dependendo da frequência das variáveis nas unidades amostrais. Resultado de p não influenciado pelos avisos.

Author(s):

     Tiago Fernandes Carrijo

References:

     Legendre, P, & Legendre, L. (1998) Numerical Ecology. 2nd English Edition. Elsevier.
          
     
See Also:

     help da função vegdist (pacote vegan): http://127.0.0.1:19837/library/vegan/html/vegdist.html

Examples:

a=t(data.frame(uni1=(c(rep(1,times=10),rep(0,times=10))),uni2=(c(0,rep(1,times=8),0,rep(0,times=10))),uni3=(c(rep(0,times=5),rep(1,times=5),rep(0,times=10))),uni4=(c(rep(0,times=5),rep(1,times=5),rep(0,times=10))),uni5=(c(rep(0,times=10),rep(1,times=10))),uni6=(c(rep(0,times=12),rep(1,times=8))),uni7=(c(rep(1,times=3),rep(0,times=5),rep(1,times=10),rep(0,times=2))),uni8=(c(rep(1,times=2),rep(0,times=6),rep(1,times=9),rep(0,times=3))),uni9=(c(rep(1,times=10),rep(0,times=10))),uni10=(c(0,rep(1,times=8),0,rep(0,times=10))),uni11=(c(rep(0,times=5),rep(1,times=5),rep(0,times=10))),uni12=(c(rep(0,times=5),rep(1,times=5),rep(0,times=10))),uni13=(c(rep(0,times=10),rep(1,times=10))),uni14=(c(rep(0,times=12),rep(1,times=8))),uni15=(c(rep(1,times=3),rep(0,times=5),rep(1,times=10),rep(0,times=2))),uni16=(c(rep(1,times=2),rep(0,times=6),rep(1,times=9),rep(0,times=3)))))
a=as.data.frame(a)
bside(a)

Código da Função

bside=function(a)
		{
### criando dados para os ciclos e chamando pacote vegan ###
pri=seq(from=1,to=dim(a)[1],by=2)
sec=seq(from=2,to=(dim(a)[1]),by=2)
nl=(dim(a)[1])
library(vegan)

### Ciclo 1 - calculando meus índices reais ###

resul.real=rep(NA,nl/2)
for(i in 1:(nl/2))  ## criando vetor com os índices reais
	{
	jacc.real=vegdist(a[pri[i]:sec[i],2:(dim(a)[2])],method="jaccard",by=2,diag=FALSE,upper=FALSE)
	resul.real[i]=jacc.real
	}

stat.real=mean(resul.real) ## minha estatística será a média dos índices, nesse caso quero saber se a média dos meus valores reias são menores (no caso do índice de Jaccard) que a média do meu modelo nulo (unicaldal sempre).
    
### Ciclo 2 - criação do modelo nulo ###

mundo.nulo=rep(NA,100)
for(j in 1:100)
	{
	a.null=sample(a[1:(nrow(a)),2:(ncol(a))])

			result.null=rep(NA,nl/2) ### Ciclo 3 dentro do ciclo 2
			for(z in 1:(nl/2))
				{
				jacc.null=vegdist(a.null[pri[z]:sec[z],2:(dim(a.null)[2])],method="jaccard",by=2,diag=FALSE,upper=FALSE)
				result.null[z]=jacc.null
				}
	
	stat.null=mean(result.null)
	mundo.nulo[j]=stat.null
	}
	
p=as.factor(mundo.nulo >= stat.real)
p=table(p)[2]/100
return(p)
	}
Arquivo da Função
05_curso_antigo/r2011/alunos/trabalho_final/tiago/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)