Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2014:alunos:trabalho_final:marina.brenha:start

Marina Rito Brenha

p3100365_-_copia.jpg

Mestranda em Oceanografia Biológica, Instituto Oceanográfico - USP. Trabalho com peixes de poças de maré, na baía do Araçá, em São Sebastião (SP). O título da minha dissertação é: “COMPOSIÇÃO E ABUNDÂNCIA DA ICTIOFAUNA DE POÇAS DE MARÉ DA BAÍA DO ARAÇÁ, SÃO SEBASTIÃO (SP) E SEUS PADRÕES ESPAÇO-TEMPORAIS”.

Meus Exercícios

Linque para acessar meus Exercícios exercícios Marina

Trabalho Final

Proposta A

Em ecologia de peixes é necessário coletar diversos dados para calcularmos, por exemplo, a abundância e biomassa dos indivíduos, índices de riqueza, diversidade e equitabilidade e verificar as diferenças entre regiões com diferentes substratos para algumas variáveis ambientais da água do mar como: oxigênio dissolvido, temperatura da água, profundidade e salinidade. Assim sendo, o objeto de entrada seria uma tabela que contenha os seguintes dados: número da amostra, tipo de substrato/local (no meu caso, rochoso ou arenoso), nome da espécie, número de indivíduos por espécie, peso total (em gramas) dos indivíduos da mesma espécie, área do local onde os peixes foram coletados, valor de oxigênio dissolvido, temperatura, profundidade e salinidade de cada local onde a espécie foi coletada. O objeto de saída seria uma tabela com o tipo de substrato/local, cada espécie coletada, abundância e biomassa para cada espécie, os valores de cada índice citado acima e os resultados da tabela de ANOVA (caso os dados cumpram as premissas para esse teste de hipóteses) para cada uma das variáveis ambientais.

Proposta B

Em ecologia, existem muitos índices de diversidade, que podem apresentar resultados iguais, mas com significado diferente. No livro de Magurran (2004), ela apresenta 17 índices de diversidade diferentes. Podemos calcular esses índices para nossos dados de abundância, correlacioná-los e decidir qual índice utilizar levando em consideração o grau de correlação entre eles e a base teórica de cada teste.

Comentários

Comentários

Marina, achei a sua proposta A uma forma bacana de explorar os seus dados. Minha sugestão é que você tente fazer a sua função da forma mais genérica possível para que outras pessoas com outros tipos de dados possam usar. Que tal colocar um argumento na função onde você especifica quais colunas da tabela usar para a ANOVA (variável resposta e fatores)? Tente também testar as premissas da ANOVA dentro da função antes de fazer o teste (faça testes lógicos com if usando os resultados dos testes diagnósticos), não sei se será algo muito complicado. Defina o objeto de saída da função! Será uma lista?

A sua proposta B me pareceu um pouco vaga. Uma ideia, se sobrar tempo, é incluir um argumento na sua outra função, em que o usuário escolhe algum desses índices de diversidade para ser calculado.

Lucas Medeiros

Proposta A - Concluída

Em ecologia, muitas vezes é necessário coletar diversos dados para calcularmos, por exemplo, a abundância, densidade e biomassa dos indivíduos, índices de riqueza e diversidade e, verificar as diferenças entre regiões com diferentes substratos para algumas variáveis ambientais como: oxigênio dissolvido, temperatura da água, temperatura do ar, profundidade, salinidade, etc. Assim sendo, o objeto de entrada da função é uma tabela que contenha os seguintes dados: tipo de local/substrato de coleta, ponto de coleta, nome da espécie, número de indivíduos por espécie, peso total dos indivíduos da mesma espécie, área do local onde os indivíduos foram coletados, valor do primeiro parâmetro ambiental, do segundo e assim sucessivamente para cada ponto onde a espécie foi coletada. O objeto de saída é uma lista com os valores de abundância, densidade e biomassa, resultados dos índices de diversidade e riqueza de espécies, para cada tipo de local/substrato. Além disso, o resultado da tabela de ANOVA para um parâmetro ambiental, caso os dados cumpram as premissas para esse teste de hipóteses, também é apresentado para verificar se há diferenças significativas entre os diferentes tipos de locais/substratos amostrados.

Página de Ajuda/Help da Função

dif.local                                              package: nenhum                                      R Documentation         

Lista com resultados de valor ecológico para diferentes tipos de locais. 

Description:
Lista que apresenta os resultados, para cada tipo de local de coleta, dos índices de diversidade de Shannon ou Simpson e de riqueza de Margalef, a partir de dados de abundância, densidade e biomassa, calculados pela própria função e resultados de ANOVA para um parâmetro ambiental determinado pelo usuário.

Usage:
dif.local <- function(ambiental, indice==”shannon”, anova.col=7)

Arguments:
ambiental: data.frame com as colunas na seguinte ordem, independente ao nome que se dê a elas:
1ª Coluna - Local (identificação do local de coleta);
2ª Coluna – Ponto (Em cada tipo de local existem diferentes pontos de coleta – números inteiros);
3ª Coluna – Espécie (nome de cada espécie encontrada);
4ª Coluna – n (número de indivíduos por espécie, naquele determinado ponto);
5ª Coluna – Pt (peso total dos indivíduos de cada espécie determinado ponto);
6ª Coluna – Área (área de cada ponto de coleta);
7ª Coluna – Parâmetro 1 (parâmetro ambiental a ser analisado);
...
n Coluna – Parâmetro n (quantos parâmetros o usuário tiver).
indice: índice de diversidade “shannon” ou “simpson”.
anova.col: número da coluna do data.frame a aplicar o teste de ANOVA. 

Details:
O nome do objeto de entrada deve ser “ambiental”.
Os índices de diversidade serão calculados pelo pacote “vegan”.
O índice de riqueza é calculado pela seguinte forma: número de espécies -1/número total de indivíduos. Este índice é calculado para cada tipo de local que o usuário tiver.
A função só irá rodar um teste de ANOVA de cada vez para os parâmetros ambientais, ou seja, caso o usuário queira verificar se existe diferença significativa de um outro parâmetro ambiental entre os diferentes tipos de locais, é só alterar o número da coluna em que o outro parâmetro está.

Value:
Todos os resultados gerados são calculados para cada tipo de local. O objeto de saída apresenta tanto data.frames com resultados de abundância, densidade e biomassa e com os índices de diversidade e riqueza quanto a tabela de ANOVA para o parâmetro determinado.

Warning:
Mensagens de aviso serão geradas caso os dados não cumpram as premissas do teste de ANOVA (p<0.05), porém o teste será feito independente do resultado das premissas.

Note:
Esta função requer instalação do pacote “vegan”.

Author(s):
Marina Rito Brenha
marina.brenha@gmail.com

References:
MAGURRAN, A. E. 2004. Measuring biological diversity. Blackwell Science Ltd.: Oxford. 256p.
LEWIS, D. G. 1995. Análise de Variância. Harbra: São Paulo. 59p.

See Also:
Dúvidas sobre os índices de diversidade e índice de riqueza, veja o help da função “diversity” do pacote “vegan”. 

Examples:
Use como exemplo a planilha de dados “ambientaldiflocal.txt”.
ambiental <- read.table("ambientaldiflocal.txt", header=T, sep="\t", dec=".", as.is=T) ## guarda o arquivo no objeto de entrada “ambiental”

Código da Função

## Função que calcula indice de diversidade (shannon ou simpson), 
## de riqueza de Margalef, ANOVA para um parâmetro ambiental de cada vez,
## a partir de dados de abundância, densidade e biomassa, também calculados na função.
## O objeto de entrada deve ser um data.frame com nome de "ambiental". 
## As colunas designadas para parâmetros ambientais começam a partir da 7,
## sendo esta o default (anova.col=7). O usuário pode trocar a coluna para 
## aplicar uma ANOVA para outro parâmetro ambiental.

dif.local <- function(ambiental, indice="shannon", anova.col=7) ## cria a função dif.local
{
require(vegan) ## Carrega o pacote "vegan", partindo do pressuposto que o usuário já o tenha instalado
remove.na <- na.omit(ambiental) ## remove todos NAs do objeto de entrada
n.spp.total <- length(ambiental[,1]) ## conta o número total de linhas da tabela pela primeira coluna

abund <- rep (NA, n.spp.total) ## cria um vetor de resposta de igual comprimento à tabela "ambiental" para abundância 
dens <- rep (NA, n.spp.total) ## cria um vetor de resposta de igual comprimento à tabela "ambiental" para densidade
biom <- rep (NA, n.spp.total) ## cria um vetor de resposta igual comprimento à tabela "ambiental" para biomassa

## Cada loop faz os cálculos para abundância, densidade e biomassa para cada tipo de local, o qual é indexado por i.

for (i in 1:n.spp.total)  ## gera loop em que i vai de 1 ate o numero total de linhas 
  {
  tipo.spp <- ambiental[i,1] ## cria um vetor em que cada linha é referente ao tipo da especie i
  abund[i] <- ambiental[i,4]*(100/sum(ambiental[which(ambiental[,1]==tipo.spp),4])) ## calcula abundância para cada linha em relação a cada tipo de local
  dens[i] <- ambiental[i,4]/ambiental[i,6] ## calcula densidade para cada linha em relação a cada tipo de local
  biom[i] <- ambiental[i,5]/ambiental[i,6] ## calcula biomassa para cada linha em relação a cada tipo de local
  }
resultados <- data.frame(ambiental[ ,1], abund, dens, biom) ## cria um data.frame com a primeira coluna da tabela "ambiental" e com os vetores abundância, densidade e biomassa, agora já preenchidos

if(indice=="shannon") ## Se o usuário quiser calcular o índice de diversidade de shannon
  {
  shannon.dens <- rep (NA, n.spp.total) ## cria um vetor de resposta para o indice de shannon de igual comprimento à tabela "ambiental" pelos dados de densidade 
  shannon.biom <- rep (NA, n.spp.total) ## cria um vetor de resposta para o indice de shannon de igual comprimento à tabela "ambiental" pelos dados de biomassa 
  
  for(i in 1:n.spp.total) ## gera loop em que i vai de 1 ate o numero total de linhas
    {
    tipo.spp <- ambiental[i,1] ## cria um vetor em que cada linha é referente ao tipo da especie i
    shannon.dens[i] <- diversity((resultados[which(resultados[,1]==tipo.spp),3]), index="shannon") ## calcula o índice de shannon para os dados de densidade, para cada tipo de local
    shannon.biom[i] <- diversity((resultados[which(resultados[,1]==tipo.spp),4]), index="shannon") ## calcula o índice de shannon para os dados de biomassa, para cada tipo de local
    }
    indice.shannon <- data.frame(ambiental[,1], shannon.dens, shannon.biom) ## cria um data.frame com a primeira coluna da tabela "ambiental" e com os vetores que contém o resultado do índice para densidade e biomassa
  }

else ## caso este índice não seja utilizado pelo usuário
{
indice.shannon <- data.frame(NA, n.spp.total) ## cria um data.frame de resposta só com NAs 
}

if(indice=="simpson") ## Se o usuário quiser calcular o índice de diversidade de simpson
  {
  simpson.dens <- rep (NA, n.spp.total) ## cria um vetor de resposta para o indice de simpson de igual comprimento à tabela "ambiental" pelos dados de densidade
  simpson.biom <- rep (NA, n.spp.total) ## cria um vetor de resposta para o indice de simpson de igual comprimento à tabela "ambiental" pelos dados de biomassa
  
  for(i in 1:n.spp.total) ## gera loop em que i vai de 1 ate o numero total de linhas
    {
    tipo.spp <- ambiental[i,1] ## cria um vetor em que cada linha é referente ao tipo da especie i
    simpson.dens[i] <- diversity((resultados[which(resultados[,1]==tipo.spp),3]), index="simpson") ## calcula o índice de simpson para os dados de densidade, para cada tipo de local
    simpson.biom[i] <- diversity((resultados[which(resultados[,1]==tipo.spp),4]), index="simpson") ## calcula o índice de simpson para os dados de biomassa, para cada tipo de local
    }
    indice.simpson <- data.frame(ambiental[,1], simpson.dens, simpson.biom) ## cria um data.frame com a primeira coluna da tabela "ambiental" e com os vetores que contém o resultado do índice para densidade e biomassa
  }  

else ## caso este índice não seja utilizado pelo usuário
{
indice.simpson <- data.frame(NA, n.spp.total) ## cria um data.frame de resposta só com NAs
}

### Cálculo do Índice de Riqueza de Margalef

margalef <- rep(NA,n.spp.total) ## cria um vetor de resposta para o indice de riqueza de Margalef de igual comprimento à tabela "ambiental" pelos dados do "n" de cada espécie

for(i in 1:n.spp.total) ## gera loop em que i vai de 1 ate o numero total de linhas
  {
  tipo.spp <- ambiental[i,1] ## cria um vetor em que cada linha é referente ao tipo da especie i
  margalef[i] <- (length(unique(ambiental[which(ambiental[,1]==tipo.spp),3]))-1)/(log(sum(ambiental[which(ambiental[,1]==tipo.spp),4]))) ## calcula o índice de riqueza de Margalef para os dados do "n" de cada tipo de espécie,
#### para cada tipo de local
  }
indice.marga <- data.frame(ambiental[,1], margalef) ## cria um data.frame com a primeira coluna da tabela "ambiental" e com o vetor que contém o resultado do índice    

### Testando as premissas da ANOVA para os parâmetros

teste.shapiro <- by(ambiental[,anova.col], ambiental[,1], shapiro.test) ## calcula a normalidade dos dados de cada tipo de local da coluna referente ao parâmetro de interesse
teste.bartlett <- bartlett.test(ambiental[,anova.col], ambiental[,1]) ## calcula a homogeneidade dos dados de cada tipo de local da coluna referente ao parâmetro de interesse

if(teste.shapiro[[2]]<0.05) ## teste lógico para o valor de p maior que 0.05
  {
  cat("AS PREMISSAS DA ANOVA FORAM VIOLADAS") ## se for maior, esta mensagem de aviso será gerada, mas a ANOVA será aplicada mesmo assim
  }

if(teste.bartlett[3]<0.05) ## teste lógico para o valor de p maior que 0.05
  {
  cat("AS PREMISSAS DA ANOVA FORAM VIOLADAS") ## se for maior, esta mensagem de aviso será gerada, mas a ANOVA será aplicada mesmo assim
  }

### Teste de ANOVA

aov.par <- summary(aov(ambiental[,anova.col]~ambiental[,1])) ## calcula o teste de ANOVA para o parâmetro determinado

resulta <- list(resultados, indice.shannon, indice.simpson, indice.marga, aov.par) ## cria uma lista para guardar todos os resultados gerados com a função
return(resulta) ## retorna todos os resultados gerados com a função
}

Arquivos para download

Arquivo com o código da função dif.local

funcaofinaldiflocal.r

Arquivo com o help da função dif.local

help_funcao_dif.local.txt

Arquivo de exemplo para uso da função dif.local

ambientaldiflocal.txt

05_curso_antigo/r2014/alunos/trabalho_final/marina.brenha/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)