==== Fernanda C. Gil Cardoso ==== {{:bie5782:01_curso_atual:alunos:trabalho_final:fercardoso:logo_lev.png?100|}} Doutorado em Ecologia e Conservação UFPR, Curitiba, PR Área de pesquisa: Ecologia Vegetal (Fenologia e Restauração Ecológica) Contato: fercardoso@hotmail.com ==== Exercícios ==== [[.:exec]] ==== Proposta de Trabalho Final ==== ==== Plano A ==== Objetivo O objetivo deste trabalho é construir uma função para facilitar a análise de dados de fenologia de espécies vegetais. Após a coleta de dados fenológicos, origina-se uma planilha de presença e ausência das fenofases (brotação, queda foliar, floração e frutificação) por mês, ou pela freqüência que cada pesquisador coletou os dados, por exemplo, a cada dois meses, duas vezes por mês, etc. A primeira etapa a ser realizada, com esses dados, então, é calcular a freqüência de indivíduos da espécie em cada fenofase e construir gráficos anuais dessas freqüências. Esse procedimento é realizado tanto para explorar os dados visualizando nos gráficos o comportamento fenológico da espécie como para construir gráficos para serem utilizados em uma publicação. Métodos A partir de um data frame contendo os dados de presença e ausência de quatro fenofases, os seguintes passos serão realizados: - Contagem de indivíduos com a presença de cada fenofase por mês. Por exemplo, em janeiro oito indivíduos da espécie x estavam frutificando, em fevereiro 11, em março 5, e assim por diante. - Como é provável que haja diferente número de indivíduos por espécie, os dados de contagem serão transformados em porcentagem, multiplicando-se o valor da contagem por 100 para depois dividi-lo pelo numero de indivíduos da espécie. - Após esse procedimento, gráficos serão construídos por espécie. No eixo x estarão os meses de estudo, no eixo y, estarão as freqüências (em %) de fenofases por mês. Os gráficos terão 4 linhas, cada uma representando uma fenofase (brotação, queda foliar, floração e frutificação). === Comentários PI === Muito legal. Será um gráfico por espécie? Como serão exbidos? Todos em uma página, todos no mesmo gráfico? Se sobrar tempo, considere incluir cálculo de intervalode confiançã com boostrap, ou algum teste de comparação com permutação. ==== Plano B ==== Objetivo Pesquisas com dendrocronologia de árvores podem ser realizadas com a utilização de cintas dendrométricas de aço, graduadas e instaladas fixamente em árvores para acompanhamento de variação do diâmetro do tronco. O objetivo será construir uma função para calcular incremento em diâmetro (mm) e o crescimento absoluto (por período, em mm) de espécies arbóreas e construir dois gráficos, um para cada tipo de crescimento. Métodos A partir de uma planilha com os valores (já em mm) por leitura da cinta dendrométrica de cada árvore (pode ser quinzenal, mensal, bimensal, etc.), será calculado o crescimento acumulado (soma de todas as medidas) e o crescimento absoluto (diferença entre o ultimo valor medido e o anterior deste). Após isso, será feito um gráfico para crescimento absoluto e um para crescimento acumulado, contendo uma linha para cada espécie que representa a soma das medidas de todos os indivíduos desta espécie. No eixo x, teremos a variação temporal e no eixo y teremos os valores de incremento em milímetros. === Comentários PI === Também boa proposta, que pode ser enriquecida com cálculo de ICs com bootstrap ou inclusão de testes de permutação. ==== Página de Ajuda ==== Comentário: Acabei tendo que explicar tudo aqui na pagina de ajuda porque os dados tem que estar num formato bem específico para entrar na função. Não consegui fazer a função para um numero indefinido de espécies (i), mas depois acabei tendo essa idéia de usar if=1, if=2 e a deu certo! Mas ela pode ser usada para no máximo 4 espécies. Acho que ficou legal, porque pranchas com mais de quatro gráficos iriam ficar muito confusas mesmo. phenology.graphs package:unknown R Documentation Produce Phenology Frequency Graphs Description: phenology.graphs produz gráficos de frequencia de ocorrencia, por espécie (máximo de 4 espécies), para um conjunto de dados contendo presença/ausência de 4 fenofases (brotação, queda foliar, floração e frutificação) Usage: phenology.graphs(x,n) Arguments: x data.frame onde cada linha representa uma observação das fenofases de um indivíduo; a primeira coluna deve conter a data em que a observação fenológica foi realizada. A data deve conter ano, mês e dia, por exemplo: 2010-04-09 a segunda coluna deve conter o número do indivíduo; a terceira deve conter o nome da espécie; a quarta coluna deve conter um numero para cada espécie que deve ser sp1, sp2, sp3 ou sp4, sem vírgulas nem letras maiúsculas. Ex: Para a espécie Euterpe edulis, ao lado da coluna do nome da espécie, vc deve colocar sp1, em cada linha que E. edulis ocorrer; sp2 em cada linha que for outra espécie e assim por diante. a quarta coluna deve conter a fenofase "Brotação" a quinta coluna deve conter a fenofase "Queda foliar" a sexta coluna deve conter a fenofase "Floração" a sétima coluna deve conter a fenofase "Frutificação" n número de espécies (1 a 4) que você quer analisar Details: Para as fenofases nas colunas 4 a 7, deve ser usado (1) para presença da determinada fenofase no dia da observação e (0) para a ausência da mesma. Value: Será gerado na mesma figura, um gráfico para cada espécie, cada linha contendo uma fenofase. No eixo x, estarão os intervalos das observações e no eixo y estarão as frequencias de observações(% de indivíduos da espécie com a presença de cada fenofase). Warning: Essa função pode ser usada para no máximo 4 espécies. Se vc tiver mais que isso, deve dividir seus data.frames em grupos de 4 espécies. Author: Fernanda Cristina Gil Cardoso References: Chapman CA, Chapman LJ, Struhsaker TT, Zanne AE, Clark CJ, Poulson JR. 2005. A long-term evaluation of fruiting phenology: importance of climate change. Journal of Tropical Ecology 21: 31–45. Examples: fenologia=read.table(file="teste.txt",header=TRUE, as.is=TRUE) phenology.graphs(teste,1) phenology.graphs(teste,2) arquivo para exemplo:{{:bie5782:01_curso_atual:alunos:trabalho_final:fercardoso:teste.txt|}} ==== Código da Função ==== phenology.graphs<- function(fenologia,n) { fenologia$date=as.Date(fenologia$date,format="%d/%m/%Y") colnames(fenologia) <- c("date","number","name","specie","Flushing","Fall","Flower","Fruit") if(n==1) { ##contagem de quantos são os indivíduos de cada espécie sp1=subset(fenologia,fenologia$specie=="sp1") n1=unique(sp1$number) n.sp1=length(n1) brotacao.sp1 <- aggregate(sp1$Flushing*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(brotacao.sp1)=c("data","frequencia") queda.sp1 <- aggregate(sp1$Fall*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(queda.sp1)=c("data","frequencia") flor.sp1 <- aggregate(sp1$Flower*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(flor.sp1)=c("data","frequencia") fruto.sp1 <- aggregate(sp1$Fruit*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(fruto.sp1)=c("data","frequencia") #gráfico plot(brotacao.sp1$data,brotacao.sp1$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,115)) lines(brotacao.sp1$data,brotacao.sp1$frequencia,lwd=2) points(queda.sp1$data,queda.sp1$frequencia,pch=17) lines(queda.sp1$data,queda.sp1$frequencia,lwd=2,lty=2) points(flor.sp1$data,flor.sp1$frequencia,pch=19,col="red3") lines(flor.sp1$data,flor.sp1$frequencia,lwd=2,col="red3") points(fruto.sp1$data,fruto.sp1$frequencia, pch=15,col="gray50") lines(fruto.sp1$data,fruto.sp1$frequencia,lwd=2,col="gray50") text(13796,115,"a",cex=1.5) leg=c("Flushing", "Leaf Fall", "Flowering", "Fruiting") par(legend("topright", leg, pch = c(19, 17, 19,15), lty = c(1, 2, 1, 1), col=c("black", "black", "red3","gray50"), bty="n", cex=0.8)) } if(n==2) { ##contagem de quantos são os indivíduos de cada espécie sp1=subset(fenologia,fenologia$specie=="sp1") n1=unique(sp1$number) n.sp1=length(n1) sp2=subset(fenologia,fenologia$specie=="sp2") n2=unique(sp2$number) n.sp2=length(n2) brotacao.sp1 <- aggregate(sp1$Flushing*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(brotacao.sp1)=c("data","frequencia") brotacao.sp2 <- aggregate(sp2$Flushing*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(brotacao.sp2)=c("data","frequencia") queda.sp1 <- aggregate(sp1$Fall*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(queda.sp1)=c("data","frequencia") queda.sp2 <- aggregate(sp2$Fall*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(queda.sp2)=c("data","frequencia") flor.sp1 <- aggregate(sp1$Flower*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(flor.sp1)=c("data","frequencia") flor.sp2 <- aggregate(sp2$Flower*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(flor.sp2)=c("data","frequencia") fruto.sp1 <- aggregate(sp1$Fruit*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(fruto.sp1)=c("data","frequencia") fruto.sp2 <- aggregate(sp2$Fruit*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(fruto.sp2)=c("data","frequencia") #gráfico par(mfrow=c(1,2)) plot(brotacao.sp1$data,brotacao.sp1$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,115)) lines(brotacao.sp1$data,brotacao.sp1$frequencia,lwd=2) points(queda.sp1$data,queda.sp1$frequencia,pch=17) lines(queda.sp1$data,queda.sp1$frequencia,lwd=2,lty=2) points(flor.sp1$data,flor.sp1$frequencia,pch=19,col="red3") lines(flor.sp1$data,flor.sp1$frequencia,lwd=2,col="red3") points(fruto.sp1$data,fruto.sp1$frequencia, pch=15,col="gray50") lines(fruto.sp1$data,fruto.sp1$frequencia,lwd=2,col="gray50") text(13796,115,"a",cex=1.5) plot(brotacao.sp2$data,brotacao.sp2$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,115)) lines(brotacao.sp2$data,brotacao.sp2$frequencia,lwd=2) points(queda.sp2$data,queda.sp2$frequencia,pch=17) lines(queda.sp2$data,queda.sp2$frequencia,lwd=2,lty=2) points(flor.sp2$data,flor.sp2$frequencia,pch=19,col="red3") lines(flor.sp2$data,flor.sp2$frequencia,lwd=2,col="red3") points(fruto.sp2$data,fruto.sp2$frequencia, pch=15,col="gray50") lines(fruto.sp2$data,fruto.sp2$frequencia,lwd=2,col="gray50") text(13796,115,"b",cex=1.5) leg=c("Flushing", "Leaf Fall", "Flowering", "Fruiting") par(legend("top", leg, pch = c(19, 17, 19,15), lty = c(1, 2, 1, 1), col=c("black", "black", "red3","gray50"), bty="n", cex=0.8)) } if(n==3) { ##contagem de quantos são os indivíduos de cada espécie sp1=subset(fenologia,fenologia$specie=="sp1") n1=unique(sp1$number) n.sp1=length(n1) sp2=subset(fenologia,fenologia$specie=="sp2") n2=unique(sp2$number) n.sp2=length(n2) sp3=subset(fenologia,fenologia$specie=="sp3") n3=unique(sp3$number) n.sp3=length(n3) brotacao.sp1 <- aggregate(sp1$Flushing*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(brotacao.sp1)=c("data","frequencia") brotacao.sp2 <- aggregate(sp2$Flushing*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(brotacao.sp2)=c("data","frequencia") brotacao.sp3 <- aggregate(sp3$Flushing*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(brotacao.sp3)=c("data","frequencia") queda.sp1 <- aggregate(sp1$Fall*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(queda.sp1)=c("data","frequencia") queda.sp2 <- aggregate(sp2$Fall*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(queda.sp2)=c("data","frequencia") queda.sp3 <- aggregate(sp3$Fall*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(queda.sp3)=c("data","frequencia") flor.sp1 <- aggregate(sp1$Flower*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(flor.sp1)=c("data","frequencia") flor.sp2 <- aggregate(sp2$Flower*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(flor.sp2)=c("data","frequencia") flor.sp3 <- aggregate(sp3$Flower*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(flor.sp3)=c("data","frequencia") fruto.sp1 <- aggregate(sp1$Fruit*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(fruto.sp1)=c("data","frequencia") fruto.sp2 <- aggregate(sp2$Fruit*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(fruto.sp2)=c("data","frequencia") fruto.sp3 <- aggregate(sp3$Fruit*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(fruto.sp3)=c("data","frequencia") #gráfico par(mfrow=c(3,1)) plot(brotacao.sp1$data,brotacao.sp1$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,115)) lines(brotacao.sp1$data,brotacao.sp1$frequencia,lwd=2) points(queda.sp1$data,queda.sp1$frequencia,pch=17) lines(queda.sp1$data,queda.sp1$frequencia,lwd=2,lty=2) points(flor.sp1$data,flor.sp1$frequencia,pch=19,col="red3") lines(flor.sp1$data,flor.sp1$frequencia,lwd=2,col="red3") points(fruto.sp1$data,fruto.sp1$frequencia, pch=15,col="gray50") lines(fruto.sp1$data,fruto.sp1$frequencia,lwd=2,col="gray50") text(13796,115,"a",cex=1.5) leg=c("Flushing", "Leaf Fall", "Flowering", "Fruiting") par(legend("topright", leg, pch = c(19, 17, 19,15), lty = c(1, 2, 1, 1), col=c("black", "black", "red3","gray50"), bty="n", cex=0.8)) plot(brotacao.sp2$data,brotacao.sp2$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,100)) lines(brotacao.sp2$data,brotacao.sp2$frequencia,lwd=2) points(queda.sp2$data,queda.sp2$frequencia,pch=17) lines(queda.sp2$data,queda.sp2$frequencia,lwd=2,lty=2) points(flor.sp2$data,flor.sp2$frequencia,pch=19,col="red3") lines(flor.sp2$data,flor.sp2$frequencia,lwd=2,col="red3") points(fruto.sp2$data,fruto.sp2$frequencia, pch=15,col="gray50") lines(fruto.sp2$data,fruto.sp2$frequencia,lwd=2,col="gray50") text(13796,100,"b",cex=1.5) plot(brotacao.sp3$data,brotacao.sp3$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,100)) lines(brotacao.sp3$data,brotacao.sp3$frequencia,lwd=2) points(queda.sp3$data,queda.sp3$frequencia,pch=17) lines(queda.sp3$data,queda.sp3$frequencia,lwd=2,lty=2) points(flor.sp3$data,flor.sp3$frequencia,pch=19,col="red3") lines(flor.sp3$data,flor.sp3$frequencia,lwd=2,col="red3") points(fruto.sp3$data,fruto.sp3$frequencia, pch=15,col="gray50") lines(fruto.sp3$data,fruto.sp3$frequencia,lwd=2,col="gray50") text(13796,100,"c",cex=1.5) } if(n==4) { ##contagem de quantos são os indivíduos de cada espécie sp1=subset(fenologia,fenologia$specie=="sp1") n1=unique(sp1$number) n.sp1=length(n1) sp2=subset(fenologia,fenologia$specie=="sp2") n2=unique(sp2$number) n.sp2=length(n2) sp3=subset(fenologia,fenologia$specie=="sp3") n3=unique(sp3$number) n.sp3=length(n3) sp4=subset(fenologia,fenologia$specie=="sp4") n4=unique(sp4$number) n.sp4=length(n4) brotacao.sp1 <- aggregate(sp1$Flushing*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(brotacao.sp1)=c("data","frequencia") brotacao.sp2 <- aggregate(sp2$Flushing*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(brotacao.sp2)=c("data","frequencia") brotacao.sp3 <- aggregate(sp3$Flushing*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(brotacao.sp3)=c("data","frequencia") brotacao.sp4 <- aggregate(sp4$Flushing*100/n.sp4, by=list(data=sp4$date),FUN=sum) colnames(brotacao.sp4)=c("data","frequencia") queda.sp1 <- aggregate(sp1$Fall*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(queda.sp1)=c("data","frequencia") queda.sp2 <- aggregate(sp2$Fall*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(queda.sp2)=c("data","frequencia") queda.sp3 <- aggregate(sp3$Fall*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(queda.sp3)=c("data","frequencia") queda.sp4 <- aggregate(sp4$Fall*100/n.sp4, by=list(data=sp4$date),FUN=sum) colnames(queda.sp4)=c("data","frequencia") flor.sp1 <- aggregate(sp1$Flower*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(flor.sp1)=c("data","frequencia") flor.sp2 <- aggregate(sp2$Flower*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(flor.sp2)=c("data","frequencia") flor.sp3 <- aggregate(sp3$Flower*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(flor.sp3)=c("data","frequencia") flor.sp4 <- aggregate(sp4$Flower*100/n.sp4, by=list(data=sp4$date),FUN=sum) colnames(flor.sp4)=c("data","frequencia") fruto.sp1 <- aggregate(sp1$Fruit*100/n.sp1, by=list(data=sp1$date),FUN=sum) colnames(fruto.sp1)=c("data","frequencia") fruto.sp2 <- aggregate(sp2$Fruit*100/n.sp2, by=list(data=sp2$date),FUN=sum) colnames(fruto.sp2)=c("data","frequencia") fruto.sp3 <- aggregate(sp3$Fruit*100/n.sp3, by=list(data=sp3$date),FUN=sum) colnames(fruto.sp3)=c("data","frequencia") fruto.sp4 <- aggregate(sp4$Fruit*100/n.sp4, by=list(data=sp4$date),FUN=sum) colnames(fruto.sp4)=c("data","frequencia") #gráfico par(mfrow=c(2,2)) plot(brotacao.sp1$data,brotacao.sp1$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,115)) lines(brotacao.sp1$data,brotacao.sp1$frequencia,lwd=2) points(queda.sp1$data,queda.sp1$frequencia,pch=17) lines(queda.sp1$data,queda.sp1$frequencia,lwd=2,lty=2) points(flor.sp1$data,flor.sp1$frequencia,pch=19,col="red3") lines(flor.sp1$data,flor.sp1$frequencia,lwd=2,col="red3") points(fruto.sp1$data,fruto.sp1$frequencia, pch=15,col="gray50") lines(fruto.sp1$data,fruto.sp1$frequencia,lwd=2,col="gray50") text(13796,115,"a",cex=1.5) leg=c("Flushing", "Leaf Fall", "Flowering", "Fruiting") par(legend("topright", leg, pch = c(19, 17, 19,15), lty = c(1, 2, 1, 1), col=c("black", "black", "red3","gray50"), bty="n", cex=0.8)) plot(brotacao.sp2$data,brotacao.sp2$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,115)) lines(brotacao.sp2$data,brotacao.sp2$frequencia,lwd=2) points(queda.sp2$data,queda.sp2$frequencia,pch=17) lines(queda.sp2$data,queda.sp2$frequencia,lwd=2,lty=2) points(flor.sp2$data,flor.sp2$frequencia,pch=19,col="red3") lines(flor.sp2$data,flor.sp2$frequencia,lwd=2,col="red3") points(fruto.sp2$data,fruto.sp2$frequencia, pch=15,col="gray50") text(13796,115,"b",cex=1.5) lines(fruto.sp2$data,fruto.sp2$frequencia,lwd=2,col="gray50") plot(brotacao.sp3$data,brotacao.sp3$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,100)) lines(brotacao.sp3$data,brotacao.sp3$frequencia,lwd=2) points(queda.sp3$data,queda.sp3$frequencia,pch=17) lines(queda.sp3$data,queda.sp3$frequencia,lwd=2,lty=2) points(flor.sp3$data,flor.sp3$frequencia,pch=19,col="red3") lines(flor.sp3$data,flor.sp3$frequencia,lwd=2,col="red3") points(fruto.sp3$data,fruto.sp3$frequencia, pch=15,col="gray50") lines(fruto.sp3$data,fruto.sp3$frequencia,lwd=2,col="gray50") text(13796,100,"c",cex=1.5) plot(brotacao.sp4$data,brotacao.sp4$frequencia,pch=19,xlab="Month", ylab="Frequency(%)",bty="l",ylim=c(0,100)) lines(brotacao.sp4$data,brotacao.sp4$frequencia,lwd=2) points(queda.sp4$data,queda.sp4$frequencia,pch=17) lines(queda.sp4$data,queda.sp4$frequencia,lwd=2,lty=2) points(flor.sp4$data,flor.sp4$frequencia,pch=19,col="red3") lines(flor.sp4$data,flor.sp4$frequencia,lwd=2,col="red3") points(fruto.sp4$data,fruto.sp4$frequencia, pch=15,col="gray50") lines(fruto.sp4$data,fruto.sp4$frequencia,lwd=2,col="gray50") text(13796,100,"d",cex=1.5) } else { cat ('Atenção:Essa função só pode ser usada para no máximo 4 espécies. Se você tem mais que 4, divida seus dados em 2 ou mais data frames') } } ==== Arquivo da Função ==== {{:bie5782:01_curso_atual:alunos:trabalho_final:fercardoso:funcao_phenology_graphs.r|}}