Índice
- O Curso R
-
- Tutoriais
-
- Apostila
-
- 6. Testes de Hipótese (em preparação!)
- Exercícios
-
- Material de Apoio
-
- Área dos Alunos
-
- Cursos Anteriores
-
IBUSP
Outras Insitutições
Linques
Visitantes
Outras Insitutições
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.
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 , 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
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
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)
########################################### #=========================================# # 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)