Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2014:alunos:trabalho_final:helena.nathalia:start

Nathália Helena Azevedo

nhap_wikir.jpg




Mestranda no Departamento de Ecologia do IB-USP, no Laboratório de Ecologia de Florestas Tropicais





Meus exercícios

Propostas de Trabalho Final

Proposta A

A descrição de comunidades constitui etapa importante nos estudos de ecologia, representando o primeiro passo para a compreensão dos processos subjacentes aos padrões observados e permitindo, potencialmente, um melhor entendimento dos mecanismos estruturadores da comunidade em estudo. A caracterização de comunidades vegetais geralmente resulta em planilhas extensas e que contém vários tipos de medidas dos indivíduos (altura, dap, tamanho de copa, entre outras) bem como informações temporais e do ambiente em que foram amostrados.

Nesse contexto, minha proposta é construir uma função que simplifique a etapa de descrição básica da comunidade, automatizando algumas comparações corriqueiras. A entrada seria uma tabela de dados contendo: (i) a identificação da espécie, (ii) as medidas de tamanho dos indivíduos, (iii) as parcelas (ou ambientes) em que eles foram encontrados e (iv) o número do censo (informação temporal).

A função geraria uma descrição básica da comunidade em cada intervalo de tempo. Contendo: (a) o número total de espécies, (b) o número total de indivíduos, (c ) índices de diversidade e (d) uma comparação de a-d para diferentes tipos de ambiente e\ou tempo). A função também calcularia um índice alométrico (a ser escolhido ainda e com base na literatura) por indivíduo e faria diferentes comparações entre as demais informações da tabela de dados brutos. Seria útil também separar os indivíduos por classes (baseado nos valores do índice alométrico) de acordo com a localidade e em diferentes tempos.

Proposta B

Também no contexto de descrição inicial de comunidades vegetais, é comum transformarmos os dados espaciais (de ocorrência de indivíduos) em tabelas. Entretanto, em alguns casos, é preciso plotar esses dados em mapas para compará-los com outros (contendo variáveis ambientais por exemplo) ou para retomar informações perdidas.

Minha proposta é criar uma função que plote a localização dos indivíduos em diferentes mapas. A entrada seria uma tabela contendo (i) identificação da espécie (possivelmente um número, para que a imagem final não fique muito poluída), (ii) as coordenadas de localização da espécie e (iii) a informação temporal (número do censo). Junto com essa tabela também seria fornecida a imagem na qual as espécies devem ser plotadas.

A função retornaria o número de mapas equivalentes ao número de censos e em cada mapa as espécies estariam indicadas com um ponto e seu respectivo número. (Se eu conseguir chegar até aqui 8-O, também acho interessante gerar um mapa adicional de mortes e nascimentos ao longo dos censos).

A proposta A parece boa e factível. Você poderia seguir com ela sem problemas.
A proposta B também é interessante, mas vou pedir para alguém que entenda de trabalhar com mapas no R comentar em mais detalhe. Não tenho experiência no assunto para avaliar a proposta. —- Débora

Mais Comentários

Comentários As duas propostas estão ótimas, muito bem explicadas e interessantes. Só acho que na A vc. se entusiasmou demais no final. Como assim incluir tb. alometria de indivíduos? Só a parte de comunidade já está de bom tamanho, juntar coisas demais em diferentes níveis organizacionais deixa a proposta muito mega… logo mais está construindo a função para “dominar o mundo”.
Na B faltou apenas definir que tipo de coordenadas a função requer. Sugiro que restrinja, a principio, para coordenadas cartesianas (x, y) planas, para não entrar na complicação de projeções das coordenadas geográficas, isso pode ser um argumento depois que faça a transformação entre coordenadas… (um outro momento!)

Fique a vontade para escolher qq uma das duas e bom trabalho.

Alexandre Adalardo de Oliveira 2014/04/25 18:35


Proposta executada: A

Página de Ajuda

cbc               package:bie5782_2014                R Documentation

cbc 

Description:

     Fornece um resumo com a caracterização básica de uma comunidade acompanhada ao longo de um tempo e considerando estados ambientais distintos.
     A função pede para o usuário digitar o tamanho da área monitorada (em ha).
     Para cada censo, a função calcula: o número total de indivíduos amostrados, o número total de espécies, a densidade absoluta de indivíduos e 
     os índices de diversidade de Shannon-Weiner (H’) e de equitabilidade de Pielou (J’).
     Também calcula: as densidades, frequências e dominâncias relativas e absolutas e o Índice de Valor de Importância das espécies para cada censo e ambiente.
  

Usage:

     cbc(dados)

Arguments:

 dados:data.frame contendo seis colunas;
	a primeira coluna contém os eventos do censo da coleta (censo) e deve ser preenchida com letras minúsculas;
	a segunda coluna contém o número da parcela em que foram coletados os dados (parcela);
	a terceira coluna contém o nome da espécie (especie);
	a quarta coluna contém o número de indivíduos da espécie por parcela (individuos);
	a quinta coluna contém a média dos valores de dap, em centímetros, por espécie amostrada (dap);
	a sexta coluna contém os diferentes estados ambientais do local de amostragem (ambiente) e deve ser preenchido com letras maiúsculas.
	
 area: corresponde ao tamanho da área do local de amostragem, deve ser colocado em hectares quando solicitada pela função.

  
Details:

     Usar zero para dados faltantes

Value: 

    Os parâmetros calculados de acordo com os diferentes estados ambientais e censos são: 

    Uma matrix de resumo, contendo:
    Indivíduos: Total de Indivíduos - Número total de indivíduos por estado ambiental e por censo 
    Espécies: Total de Espécies - Número total de espécies por estado ambiental e por censo 
    Dens_Ind: Densidade de Indivíduos - Número total de indivíduos por unidade de área amostrada
    Shannon: índice de diversidade de Shannon-Weiner (H’)
    Pielou: índice de equitabilidade de Pielou (J’)
    
    Um data.frame detalhado por ambiente e censo com informações por espécie, contendo:
    AMB: o ambiente em que a espécie foi encontrada
    CENSO: em que a espécie foi amostrada
    N.IND.:total de indivíduos   
    DA: Densidade Absoluta - Número de indivíduos por espécie por unidade de área amostrada
    DR: Densidade Relativa - Porcentagem da espécie em relação ao total de indivíduos amostrados
    FA: Frequência Absoluta - Porcentagem de parcelas (unidades amostrais) onde foi amostrada a espécie
    FR: Frequência Relativa - Porcentagem de ocorrência de uma espécie com relação ao total de ocorrências
    DA: Dominância Absoluta - Área basal total (em m2) que uma espécie ocupa na área amostrada 
    DR: Dominância Relativa - Porcentagem da área basal total ocupada por indivíduos de uma espécie
    IVI: Índice de valor de Importância - Expressa numericamente a importância de uma espécie para a comunidade amostrada    

     
Warning:

     A nomeação das colunas para a tabela de entrada dos dados deve respeitar a grafia citada e o nome do arquivo deve ser "dados"
     As categorias de ambiente e de censo devem ser preenchidas com letras na tabela de entrada dos dados, sendo o ambiente preenchido com letras maiúsculas e o censo com letras minúsculas.
     Deve-se usar “.” como separador de decimais na coluna “dap”.


Author(s):

     Azevedo, N.H.(helena.nathalia@gmail.com)


References:

     FELFILI, J.M. et al. Fitossociologia  no  Brasil:  métodos  e  estudos  de  caso. Viçosa: Editora UFV, 2011.
     
     DURIGAN, G. 2003. Métodos em análise de vegetação arbórea. In: Cullen, L. Rudran, R. Valladares-Paudua, C. (orgs.). 
              Métodos de Estudo em Biologia da Conservação e Manejo da Vida Silvestre. IPÊ/ Fundação Boticário/UFPR. Curitiba.
     
     SCOLFORO, J. R.; CARVALHO, L. M. T.(Ed.). Inventário Florestal de Minas Gerais: Floresta Estacional Decidual - 
              Florística, Estrutura, Similaridade, Distribuição Diamétrica e de Altura, Volumetria, Tendências de Crescimento e 
              Manejo Florestal. Lavras: UFLA, 2008. cap. 6, p.118-133.

Examples:

censos<-c("a","b","c") #Considerando apenas 3 censos
numero.parc<-c(1:5)
nomes.sp=c("sp1","sp2","sp3","sp4","sp5","sp6","sp7","sp8","sp9","sp10")
numero.ind<-c(1:15)
est.amb<-c("A","B")
require(utils) #chama pacote com a funcao expand.grid  que garante que nos meus dados não haverá inconsistencia na combinação parcelaXcensoXambiente por espécie
dados<-expand.grid(numero.parc,nomes.sp,est.amb,censos) #agrupa parcela, especie e censo sem inconsistencias, evitano por exemplo que uma parcela apareca +de uma vez num censo
colnames(dados)<-c("parcela","especie","ambiente","censo") #nomeia as colunas
dados$individuos<-round(runif(length(dados[,1]),0,8)) #cria df
dados$dap<-runif(length(dados[,1]),1,15) #criando coluna do dap para o numero de linhas que a combinação na criacao do df permitiu

cbc(dados)

Código da Função

###########################################
#=========================================#
#   CARACTERIZACAO BASICA DA COMUNIDADE   #
#                  cbc                    #
#=========================================#
###########################################

cbc<-function(dados) #criação da função
 
{ 

  readinteger<-function() #função interativa
  { 
    area.cal<-readline(prompt="Digite o valor da área em hectares: ")
    return(as.integer(area.cal))->area #criação do objeto com a resposta do usuário
  }
  print(readinteger())->area #exibe o valor da área digitada e salva em um objeto

  #criação de uma função para contar os valores diferentes de zero em uma coluna    
  contagem<-function(x) 
    {
      return(length(which(x!=0)))
    }

#dados$especie,dados$ambiente,dados$censo-> sequencia de ordenação que quero manter para que o vetor de somatório faça a ciclagem correta sem perda de dados

#adição de uma coluna chamada daptotal ao df de entrada e que calcula a soma dos daps de uma espécie
dados$daptotal<-dados$dap*dados$individuos 

#criação da saída resultado e da coluna de soma dos indivíduos, coluna x 
resultado<-aggregate(dados$individuos,by=list(dados$ambiente,dados$censo,dados$especie),FUN=sum) 

#criação da coluna de dap total de cada espécie, por ambiente e censo e inserção no df de saída
resultado$daptotal<-aggregate(dados$daptotal,by=list(dados$ambiente,dados$censo,dados$especie),FUN=sum)$x 

#criação da coluna com os novos valores de dap da espécie e inserção no df de saída
resultado$dap<-resultado$daptotal/resultado$x 

#=============#
##DENSIDADES##
#============#
#criação da coluna de densidade absoluta de indivíduos na área fornecida pelo usuário e inserção no df de saída
resultado$da<-resultado$x/area 

#criação do objeto nindiv, que é o número de indivíduos por censo e ambiente
nindiv<-aggregate(resultado$x,by=list(resultado$Group.1,resultado$Group.2),FUN=sum)$x 

#criação da coluna de densidade relativa por espécie espécie 
resultado$dr<-100*(resultado$x/nindiv) 

#Calculo da densidade total
sum(dados$individuos)/area->dens.total

#==============#
##FREQUÊNCIAS##
#=============#
#criação da coluna de frequência absoluta por espécie e inserção no df de saída, considera as parcelas que a especie aparece e divide pela soma das parcelas, usando a função contagem
resultado$fa<-aggregate(dados$individuos,by=list(dados$ambiente,dados$censo,dados$especie),FUN=contagem)$x/length(unique(dados$parcela)) #inserção no df de saída do calculo da frequência absoluta, considerando o numero de parcelas que a espécie aparece dividido pelo total de parcelas, com a função unique e lenght 

#calculo da frequência relativa e inserção no df de saída
resultado$fr<-100*(resultado$fa/sum(resultado$fa)) 

#==============#
##DOMINÂNCIAS##
#=============#
#calculo da área basal e conversão dela de cm2 para m2 e inserção no df de saída
resultado$abasal<-((resultado$dap/2)^2)*pi/10000 

#calculo da dominância absoluta e inserção no df de saida
resultado$doa<-resultado$abasal/area 

#criação da coluna abasal.camb que é a área basal total da espécie por censo e ambiente
abasal.camb<-aggregate(resultado$abasal,by=list(resultado$Group.1,resultado$Group.2),FUN=sum)$x 

#calculo da dominância relativa
resultado$dor<-100*(resultado$abasal/abasal.camb) 

#=================================#
##ÍNDICE DE VALOR DE IMPORTÂNCIA##
#================================#
#calculo do índice de valor de importância das espécies
resultado$ivi<-resultado$dor+resultado$dr+resultado$fr 

#========================================#
##ÍNDICE DE DIVERSIDADE DE SHANNON-WINER##
#========================================#
aggregate(dados$individuos, FUN=sum, by=list(dados$especie))->abund.spp #total de indivíduos por espécie
sum(dados$individuos)->total.ind #total de indivíduos
abund.spp$x/total.ind->shan1 #calculo da abundancia das espécies 
-sum(log(shan1)*shan1)->H #indice de shannon

#====================================#
##ÍNDICE DE EQUITABILIDADE DE PIELOU##
#====================================#
#total de espécies
length(unique(dados$especie))->total.sp 
log(total.sp)->Hmax
H/Hmax->J

#==================#
##SAÍDA DOS DADOS##
#=================#
#nomeia as colunas do df de saída
colnames(resultado)<-c("AMB","CENSO","SP","N.IND.", "DAP.TOTAL", "NEW.DAP", "DA", "DR","FA","FR","ABasal","DomA","DomR","IVI") 
resultado[,-c(5,6,11)]

#matrix com saida de resultados resumo
list(total.ind,total.sp,dens.total,H,J)->resultado.resumo #agrupa os resultados do resumo
resultado.resumo<-matrix(resultado.resumo,nrow=1, ncol=5) #cria uma matriz
colnames(resultado.resumo)<-c("Indivíduos","Espécies","DensInd","Shannon","Pielou") #nomeia as colunas da matriz
rownames(resultado.resumo)<-(" ") #nomeia as linhas da matriz

#resultados da função
return(list(resultado.resumo, resultado)) 

} 

cbc(dados)

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