Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:piantoni:start

Carla Piantoni

dsc00587.jpg

Doutoranda pelo Departamento de Fisiologia, Instituto de Biociências, USP

Projeto: Efeitos do aquecimento global sobre populações de Tropidurus torquatus (Squamata: Tropiduridae) no Brasil

Orientador: Carlos A. Navas

Meus Exercícios

Proposta de Trabalho Final

Um dos objetivos principais do meu projeto de doutorado é determinar as consequências das alterações climáticas ocorridas durante os últimos 25-30 anos em três populações de lagartos da espécie Tropidurus torquatus (Tropiduridae). De acordo com os dados climáticos obtidos até o momento junto a estações meteorológicas, as regiões selecionadas não apresentariam variações significativas da temperatura média mensal durante as últimas décadas (Figura 1). fig-1.jpg Este resultado foge aos padrões observados em outras regiões do Brasil onde o aumento das temperaturas médias foram significativos (Mendonça, 2007). Não obstante, o número de dias com temperatura média maior do que 27°C aumentou consideravelmente em algumas localidades das quais se têm dados meteorológicos (Figura 2). Um aumento do número de dias com temperaturas muito altas, ou seja, menos favoráveis, poderia provocar uma diminuição do número de horas de atividade anuais dos lagartos e, em consequência, uma diminuição no fitness das populações estudadas. fig-2.jpg Pretendo elaborar uma função que permita calcular a variação do número de dias nos quais as temperaturas (médias, máximas, mínimas) foram iguais, maiores ou menores a um determinado valor em um determinado período de tempo a partir de um data frame que contenha as varáveis diárias das últimas décadas.

Mendonça, F. 2007. Effects of global warming on human health: An approach from “re-emergent” deceases in Brazil. Pp. 217–238 em P. Leite de Silva Dias, W. Costa Ribeiro, & L. Hidalgo Nunes ed. A contribution to understanding the regional impacts of global changes in South America. Instituto de Estudos Avançados da Universidade de São Paulo, São Paulo.

Daniel (Musgo): Você poderia incluir gráfico(s) explicativo(s) como output da sua função, além do vetor contendo o resultado se foi “igual, maior ou menor” para cada temperatura. Seria interessante construir, a partir dos resultados da comparação da temperatura, uma previsão sobre o comportamento dos animais. Desta forma, com o resultado da sua função, seria possível verificar a alteração da temperatura e o reflexo no comportamento dos animais (talvez dois plots em um mesmo gráfico, um da mudança na temperatura e o outro da resposta comportamental). O que acha?

Carla: Acho boa ideia, obrigada. As mudanças no comportamento dos animais poderiam ser representada com uma curva de desempenho que pode ser prevista com base em experimentos realizados a diferentes temperaturas. Ou uma curva que mostre a diminuição das horas de atividade quando as temperaturas superam um patamar.

Comentários

Acho legal o comentário do Musgo, mas a principio a idéia original é mais geral. Para fazer o que o Musgo sugere isso seria aplicável apenas para a sua espécie, ou daquelas que tenha informação prévia que estará contida na função. Como alternativa poderia incluir um arguemnto que o usuário poderia incluir o desempenho do bicho (qq espécieP). Lembre-se que curvas são dificeis de armazenar como dados, poderia ser um data frame com asas variáveis temperatura e a atividade média do bicho (não sei como são os dados brutos coletados desse experimentos!). Na sua função depois poderia usar esses dados para compor a curva de atividade… De qq forma como sugestão: concentre na primeira parte e avance se sentir que há tempo para isso,. — Alexandre Adalardo de Oliveira 2012/04/03 21:06

Trabalho Final

Página de Ajuda

diasquentesfun		          package:unknown		        R Documentation
  	
  
Função para os Dias Quentes
  
Descrição

Diasquentesfun pode ser utilizada para calcular o número de dias com temperaturas o 
precipitação maiores ou iguais a um valor pretendido por mês ou ano. Além de retornar uma 
tabela contendo os resultados em formato .csv a função cria um gráfico xy da variação do 
número de dias em função dos anos.

Uso

diasquentesfun <- function(x, var, varclim = "tmax", unidtempo = "ano")

Argumentos

x	    data.frame. con as colunas organizadas na seguinte ordem e nomenclatura 
            sugerida: ano, mês, dia, prec (precipicação em mm), tmax (temperatura máxima 
            diária em °C), tmed(temperatura media diária em °C), tmin (temperatura mínima 
            diária em °C). A coluna "dia" deve apresentar somente o número 1 em todas as 
            células. 
   
var	    numérico. Valor mínimo de precipitacão ou temperatura com o qual se calculará 
            o número de dias.
   
varclim     caracter. A unidade usada pode ser "tmax","tmed", "tmin", e "prec", o resultado 
            de "tmax", "tmed", e "tmin" é sempre em graus Celsius, e de "prec" em milimetros.

unidtempo   caracter. A unidade usada pode ser "ano", e "mes".  


Detalhes

Transforma os dados brutos obtidos através de uma estação meteorológica em dados para 
análise da variação climática  ao longo do tempo.  
A tabela contendo os resultados em formato .csv será guardada no diretorio com o nome 
"diasquentesfun.csv".

ATENÇÃO: O arquivo será substituído por outro novo com o mesmo nome sempre que a função for 
usada.

Valores

Quando se usa "ano" como argumento, a função retorna um data frame com as colunas 
correspondentes aos anos e a variável climática fornecida como argumento da função ("tmax",
"tmed", "tmin", ou "prec"). Quando se usa "mes" como argumento, retorna um data frame com as 
colunas correspondentes aos anos, a  variável climática fornecida como argumento da função 
("tmax","tmed", "tmin", ou "prec") e o meses.

Autora

   Carla Piantoni
   Instituto de Biosciências, Universidade de São Paulo
   Departamento de Fisiologia
   carla.piantoni@gmail.com; piantoni@usp.br

Referências

Crawley, Michael J. 2007. The R Book. Wiley-Blackwell. West Sussex, UK.

Exemplo

## Construção do data frame   
ano <- c(rep(2009,365), rep(2010,365), rep(2011,365))
mes <- rep(c(rep(1,31), rep(2,28), rep(3,31), rep(4,30), rep(5,31), rep(6,30), rep(7,31), 
rep(8,31), rep(9,30), rep(10,31), rep(11,30), rep(12,31)), 3)
dia <- rep(1, 1095)
prec <- c(rep(c(13.7,0,5.2,0,0), 219))
ano09 <- rep(c(31.8434,32.2444,32.4343,30.4641,32.4212), 73)
ano10 <- c(ano09+1.5)
ano11 <- c(ano10+2)
tmax <- c(ano09, ano10, ano11)
tmed <- c(tmax-7)
tmin <- c(tmax-11)
dados <- data.frame(cbind(ano, mes, dia, prec, tmax, tmed, tmin))

## Número de dias por ano que apresentaram temperaturas máximas maiores ou iguais a 33 °C:  
diasquentesfun(dados, 33, varclim="tmax", unidtempo="ano")

## Número de dias por mes que apresentaram temperaturas mínimas maiores ou iguais a 22 °C  
diasquentesfun(dados, 33, varclim="tmax", unidtempo="ano")

Página de Ajuda diasquentesfun.txt

Código da Função

diasquentesfun<-function(x,var,varclim="tmax",unidtempo="ano")
{
if(unidtempo=="ano")
    {
    if(varclim=="tmax")
      {
      diasquentes <- aggregate(x[,3]+x[,5]>=var~x[,1], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "TDTmax")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano)), ]
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "TDTmax")
      }
    if(varclim=="tmed")
      {
      diasquentes <- aggregate(x[,3]+x[,6]>=var~x[,1], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "TDTmed")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano)), ]
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "TDTmed")
      }
    if(varclim=="tmin")
      {
      diasquentes <- aggregate(x[,3]+x[,7]>=var~x[,1], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "TDTmin")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano)), ]
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "TDTmin")
      }
    if(varclim=="prec")
      {
      diasquentes <- aggregate(x[,3]+x[,4]>=var~x[,1], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "Prec")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano)), ]
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "Prec")
      }
  }
  if(unidtempo=="mes") 
    {
    if(varclim=="tmax")
      {
      diasquentes <- aggregate(x[,3]+x[,5]>=var~x[,1]+x[,2], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "Mes", "TDTmax")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano, Mes)), ]
      diasquentes <- data.frame(diasquentes$Ano, diasquentes$TDTmax, diasquentes$Mes)
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "TDTmax", "Mes")
      }
    if(varclim=="tmed")
      {
      diasquentes <- aggregate(x[,3]+x[,6]>=var~x[,1]+x[,2], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "Mes", "TDTmed")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano, Mes)), ]
      diasquentes <- data.frame(diasquentes$Ano, diasquentes$TDTmed, diasquentes$Mes)
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "TDTmed", "Mes")
      }
    if(varclim=="tmin")
      {
      diasquentes <- aggregate(x[,3]+x[,7]>=var~x[,1]+x[,2], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "Mes", "TDTmin")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano, Mes)), ]
      diasquentes <- data.frame(diasquentes$Ano, diasquentes$TDTmin, diasquentes$Mes)
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "TDTmin", "Mes")
      }
    if(varclim=="prec")
      {
      diasquentes <- aggregate(x[,3]+x[,4]>=var~x[,1]+x[,2], data=x,sum, na.rm=TRUE)
      diasquentes <- as.data.frame(diasquentes)  
      names(diasquentes) <- c("Ano", "Mes", "Prec")
      diasquentes[, 1] <- as.factor(diasquentes[, 1])
      diasquentes[, 2] <- as.factor(diasquentes[, 2])
      diasquentes <- diasquentes[with(diasquentes, order(Ano, Mes)), ]
      diasquentes <- data.frame(diasquentes$Ano, diasquentes$Prec, diasquentes$Mes)
      write.table(diasquentes,file="diasquentesfun.csv",sep=",", row.names=FALSE)
      diasquentes <- read.csv("diasquentesfun.csv", header=TRUE, dec=".")
      names(diasquentes) <- c("Ano", "Prec", "Mes")
      }
    }
    var <- read.table("diasquentesfun.csv", header=TRUE, dec=".")
    x11()
    plot(var[,1], var[,2], bty="l", tck=0.01, xlab=paste("Anos)"), 
    ylab=paste("Número Total de Dias"), cex.axis= 0.8, pch=19)
    lines(lowess(var[,1],var[,2]))
    return(diasquentes)  
  }

Função diasquentesfun.txt, Função diasquentesfun.R

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