{{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:melo1.jpg?200|}} ====== Marcos Melo ====== Mestrando no Programa de Pós Graduação em Conservação da Fauna, UFSCAR/FPZSP. Eu tenho interesse em ecologia de aves em habitats antropizados. Estou desenvolvendo minha dissertação, intitulada "//Alterações na composição de uma comunidade de aves em uma área de Mata Atlântica reflorestada no sudeste brasileiro//", sob a orientação do Prof. Dr. Augusto J. Piratelli. [[http://lattes.cnpq.br/2184880129329313|Curriculum Lattes]] ---- **Exercícios** {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exercicios1.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exerc4anexplo.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exerc5.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exerc7_2.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exercs7b.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exerc8_1.r|}}{{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exerc9_2.r|}} ---- **Propostas** //Proposta A// Pesquisas sobre como as espécies respondem com alterações na abundancia com base em dados quali-quantitativos de variáveis ambientais e complexidade estrutural dos habitats tem ganhado cada vez mais importância na área da biologia da conservação. A função aqui proposta terá como objetivo investigar quais categorias de habitats e complexidade estrutural pode influenciar a abundancia de determinados grupos de espécies. O usuário fornecerá um dataframe contendo a abundancia de cada espécie/habitat ou fisionomia (n=2), as variáveis ambientais (ex.: altura das arvores, DAP, %de cobertura do solo com serapilheira, % de gramíneas etc…, todas em colunas), e categoria trófica. i) a função nos retornará analises exploratórias iniciais e uma lista com resultados comparativos das espécies por categoria de habitat; ii) verificará se existe diferenças nas abundancias das espécies quando comparado com cada habitat; iii) com base nas abundancias/espécie, a função investigará as possíveis caraterísticas ambientais que podem estar influenciando o incremento das populações de modo mais efetivo. Olá Marcos, Do jeito que você explicou sua proposta A, isto é um script para análise de um conjunto de dados com uma estrutura muito específica e não uma função. São muitas tarefas a serem executadas para responder questões bastante específicas e parece inviável. Tente pensar em como tornar mais a proposta mais geral e não específica para analisar o seu conjunto de dados. Talvez um caminho seja tentar algo mais simples. Por exemplo, pense para uma população, como você exploraria as diferenças de abundância entre hábitats e dentro dos diferentes hábitats. Se sua função for capaz de explorar variações intra e inter habitat para uma e/ou mais populações já pode ser algo legal. Imagine que você tem uma matriz, com espécies nas colunas e locais nas linhas e a sua função se receber um data frame com uma linha faz a análise exploratória para uma espécie, se tiver mais colunas, faz para várias espécies. A análise exploratória pode ser apenas visual (gráfica) ou a função também pode retornar estatísticas descritivas por habitat e entre habitats. Incluindo a opção automatizada da função lidar com uma ou mais espécies já é um bom desafio para implementar a proposta em termos de uma função. Tente pensar nesta, ou alguma outra proposta mais simples e mais geral do que a sua. Espero sua réplica. Ainda precisamos fechar sua proposta A! ----//[[saramortara@gmail.com|Sara Mortara]]// ---- //**Proposta A reformulada**// Ola Sara, grato pelos comentários. Concordo plenamente com você. Segue abaixo a proposta reformulada: //Justificativa// Pesquisas sobre como as populações respondem com alterações na abundancia com base em diferentes habitats são de grande relevância para se propor ações conservacionistas às espécies. **Proposta reformulada A** A função terá como objetivo investigar as diferenças nas abundancias das populações de determinado taxa em função dos diferentes habitats ocupados por ela. As diferenças estimadas serão intra (populações em um mesmo habitat) e inter (populações em habitats distintos) habitats. Diferenças intra habitats serão estimadas com base na variância das populações em um mesmo habitat ou categoria ambiental. Diferenças inter habitats serão estimadas por meio da média. O usuário fornecerá um dataframe contendo a abundancia da(s) população(ões) em colunas e habitats nas linhas. A função retornará análise exploratória dos dados e analises descritivas intra e inter habitat. Caso o dataframe apresente mais de uma coluna(população), será realizada a automação das análises para o n de colunas(populações) informadas. Legal Marcos. Pode continuar com esta proposta. Tente implementar de maneira a funcionar com quaisquer tamanho de data frame ou matriz. No caso de ter apenas valores numéricos nas linhas o objeto de entrada pode ser uma matriz. Lembre que matriz é um objeto com apenas um tipo de dado. Em um data frame você pode ter por exemplo coluna com caracteres e e coluna números num mesmo objeto. Para o caso da sua função pode ser uma matriz ou data frame (mas não há necessidade para usar o segundo). Lembre que se você usar indexação com $ só funciona para data frame enquanto que [] funciona com ambos. Escolha um deles e siga em frente. Deixe tudo especificado no help da função. E deixe sua função o mais automatizado possível. Sua proposta é simples, tente implementar de maneira elegante. Pense colocar mensagens de erro informativas para o usuário, capriche na saída gráfica (lembrando que você pode ter uma ou mais populações), deixe à escolha do usuário plotar o gráfico ou não... Enfim, use sua criatividade e capriche na implementação! ----//[[saramortara@gmail.com|Sara Mortara]]// //Proposta B// Os animais são ótimos dispersores de sementes e, portanto, podem influenciar na no sucesso de estabelecimento das espécies vegetais consumidas por eles. A função investigará se determinados traços ecológicos das espécies dispersoras podem contribuir de modo mais efetivo para a dispersão e colonização de propágulos. Para isso, o usuário terá que fornecer um “dataframe” contendo dados (nas colunas) de abundancia das espécies dispersoras envolvidas, massa corpórea, distância (m) observada de movimentos das espécies entre a planta consumida e poleiros de pouso e quantidade de frutos consumidos por evento. A função retornará análises exploratórias dos dados (gráficos), uma lista contendo índices de potencial de dispersão de frutos da planta X para cada espécie animal dispersor (com base nos atributos ecológicos/espécie). De novo, a descrição da sua proposta é um script para analisar seu conjunto de dados específicos e não uma função propriamente dita. Não confunda a função com a análise para responder a sua pergunta. Faça o exercício de escolher apenas uma das questões que você coloca e elaborar uma proposta de função. Pense em input gerais, uma tarefa simples a ser executada e qual output a função retornaria. Você está se focando demais em inputs e outputs específicos e precisa pensar melhor na implementação da tarefa dentro da função. De novo, aguardo a apresentação de uma nova proposta. ----//[[saramortara@gmail.com|Sara Mortara]]// **Código da Função** habitat = function (df){ niveis <- levels(df[,1]); #cria objeto com o numero de niveis(fatores) da coluna 1 do data frame (df). cols <- ncol(df); ##cria objeto com numero de colunas do df. pdf("relatorio.pdf") # Se df possuir mais de uma espécie if (cols > 2){ #Intra habitat for(n in niveis){ df_n <- df[df[,1]==n,]; #cria objeto com a ultima linha do df. #Imprimir no PDF s <- summary(df_n) #cria objeto com output do summary de df_n. # Aplicando teste-t if (nrow(df_n) > 1){ #se n de linhas de df_n for maior que 1. t <- matrix(data=NA,ncol=ncol(df_n)-1,nrow=ncol(df_n)-1); #cria matriz com n colunas e linhas de df -1. for(i in 1:(ncol(df_n)-1)){ # abre loop para aplicar test t par a par. if ((i+1) < (ncol(df_n)-1) ){ for(j in (i+1):(ncol(df_n)-1)){ t[i,j] <- t.test(df_n[,i+1], df_n[,j+1])$p.value; #adiciona valor de p na matriz. t[j,i] <- t[i,j]; } t[i,i] <- 0; } } } # } for(i in 2:ncol(df)){ tesp <- matrix(data=NA, nrow=length(niveis), ncol=length(niveis)); #cria matriz com n colunas e linhas idem ao n de niveis do df. -1. for(j in 1:length(niveis) ){ for(k in 1:length(niveis) ){ if (j != k && length(df[df[,1]==niveis[j],i]) > 1 && length(df[df[,1]==niveis[k],i]) > 1 ) { tesp[j,k] <- t.test(df[df[,1]==niveis[j],i], df[df[,1]==niveis[k],i])$p.value; tesp[k,j] <- tesp[j,k] } else{ tesp[j,j] = 0; } } } } mat <- aggregate(df[,-1], by=list(df[,1]), FUN=sum); ##cria um df com soma das abundancias das espécies, excetuando a coluna 1(categorica). l <- NULL l$x <- 'topleft'; # dire l$inset <- 0.95 # #par(mar=(c(6, 5, 4, 6))) #faz a configuração graficas para o boxplot a seguir. barplot(as.matrix(mat[,-1]), bty="l", main="Abundância das espécies por habitat", xlab="Espécies",ylab="Frequência", cex.names = 1, names.arg = names(mat)[-1], axis.lty = c(1,ncol(df)), legend.text = levels(mat[,1]), xpd=T,adj=0.5, args.legend =l) #desenha um barplot comparativo entre as abundancias por habitat. } else { #Intra habitat par(mfrow=c(length(niveis)+1,1)) for(n in niveis){ df_n <- df[df[,1]==n,]; barplot(df_n[,2], axis.lty = c(1:nrow(df_n)), names.arg = c(1:nrow(df_n))); } #Inter habitat par(mar=(c(6, 5, 4, 6))) #faz a configuração graficas para o boxplot a seguir. boxplot(df[,2] ~ df[,1],main="Comparativo entre a abundância interhabitat", xlab="Habitats",ylab="Frequência",cex.names = 1) #desenha um boxplot comparativo entre as abundancias interhabitat. tesp <- matrix(data = NA, nrow = length(niveis), ncol = length(niveis)) #cria objeto vazio para guardar resultados for(j in 1:length(niveis)){ #abre loop em niveis categoricos do df. for(k in 1:length(niveis)){ #abre outro loop em niveis categoricos do df. if (j != k && length(df[df[,1]==niveis[j],2]) > 1 && length(df[df[,1]==niveis[k],2]) > 1){ #se j é diferente de k tesp[j,k] <- t.test(df[df[,1]==niveis[j],2], df[df[,1]==niveis[k],2])$p.value; #aplica test-t tesp[k,j] <- tesp[j,k] #rearranja o output do test-t } else{ tesp[j,j] = 0; } } } } dev.off() #fecha parametros graficos, salvando-os em arquivo pdf. } #fecha função. **Help da Função** habitat package:unknown R documentação Description: A função realiza análise exploratória com base na abundância das espécies em função do habitat ou categoria ambiental das espécies. A função explora de maneira comparativa as abundâncias das espécies situadas intra e inter habitat, através de um “data.frame” onde se tem as amostras nas linhas e as espécies nas colunas. Usage: habitat(df, ncol,nrow) Input: df: data.frame com os dados de abundância das espécies contidos em um “arquivo.csv”. Primeira coluna: Deverá conter as categorias ambientais ou habitats nas quais as espécies foram registradas. Segunda coluna em diante: Deverá(ão) conter as espécies. Linhas: Amostras constando dados de abundancia absoluta das espécies. **Output**: Graphics Retorna gráfico(s) do tipo boxplot e barplot comparativos das abundancias inter e intra-habiatat. Test-t Retorna matriz com resultados do test-t aplicado nos dados originais fornecidos no data.frame. File Salva arquivo com saída gráfica e resumo dos resultados em “relatorio.pdf” no diretório de trabalho. Note: Valores de NAs não serão permitidos. Author: Marcos Antônio Melo mam_melo@yahoo.com.br Examples: ## data.frame com abundancia das espécies df<-read.table("exampi.csv",header=T,as.is=F,sep=";") **arquivo da função** {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:habitat.r|}} **exemplo de dados** {{:bie5782:01_curso_atual:alunos:trabalho_final:mam_melo:exampi.csv|}}