Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2014:alunos:trabalho_final:sartordaniel:start

Daniel Sartor

foto_ssi2.jpg

Mestrando em Ecologia, Instituto de Biociências, USP.

O título de minha dissertação é: “Dinâmica no recrutamento de peixes recifais no Banco dos Abrolhos, BA: Influência de características do hábitat e variáveis ambientais”, orientado pelo Prof. Dr. Sérgio Rosso (USP) e coorientado pelo Prof. Dr. Ronaldo Bastos Francini Filho (UFPB)

execexercicio1.r

exercicios_aula_4_daniel_sartor.r

exercicios_5.r

exercicio7_2.r

exercicio_7b.r

exercicio8_2.r

TRABALHO FINAL:

PROPOSTA:

PLANO A:

Meu plano A está envolve a análise exploratória e representação gráfica de alguns dados. A idéia é fazer uma função que, a partir de um data.frame de contagem de diferentes espécies em diversos locais, calcule e plote, dentro de um mesmo gráfico, a abundância relativa e frequência de observações das espécies. Esses características são normalmente utilizadas na seleção de espécies para um trabalho, visando eliminar aquelas extremamente raras e difíceis de serem tratadas estatísticamente.

Pensei também em criar argumentos para que o usuário pudesse escolher determinada espécie e plotar sua abundância e frequência de observação por local de amostragem. Acredito que a função seria útil pois esse tipo de data.frame é comumente derivado de diversos projetos, trabalhos de consultorias e monitoramentos em unidades de conservação, e essa análise poderia ser uma importante ferramenta no auxílio do delineamento de projetos futuros.

PLANO B

Minha segunda idéia envolve avaliar se é mais vantajoso financeiramente ir de táxi por uma rota mais longa com trânsito livre ou por outra mais curta mas com trânsito mais pesado. Para isso o usuário deveria fornecer um data.frame com a distância e tempo estimado de percurso sem trânsito para cada um das rotas. Então a função teria argumentos para informar se o táxio está rodando em Bandeira 1 ou 2 e também se o trânsito está livre, lento ou parado. A partir disso seria possível saber a distância percorrida e o tempo, estimado, que o táxi ficaria parado e então é possível calcular o preço médio da corrida. Para entender melhor como funciona um taxímetro: (http://mundoestranho.abril.com.br/materia/como-funciona-o-taximetro).

Daniel, sua proposta A está ok. Eu vi seu gráfico preliminar na aula, lembro da idéia. Não ficou muito claro o que é a frequência de observações (número de locais em que a espécie foi observada?) e qual a vantagem de analisar isso junto com a abundância. A opção de fazer o gráfico para uma espécie é interessante, se der tempo de juntar tudo isso na função vai ser legal.

A proposta B é divertida e um pouco mais simples. A entrada de dados precisa estar bem definida no help (talvez pudesse entrar com os dados direto nos argumentos, sem ter que passar pelo data frame).

—- Sheina

Código da Função censo.aed (Proposta A)

censo.aed<-function(data.frame,col.sp,ylim)#criação da função censo.aed
{
  if (missing(ylim))#Se o usuário nao especificar os limites de y
  {ylim<-c(0,100)#será considerado que o limite é entre 0 e 100
  }
  if(sum(is.na(data.frame[,1])>0)) #Caso existam NAs na primeira coluna (locais) do data.frame especificado pelo usuário
  { stop("A coluna 1 do data.frame especificado contém NAs")#será mostrada uma mensagem de ERRO para o usuário e a função não será executada
    }
if (missing(col.sp))#Se o usuário nao especificar o argumento "col.sp" será feito o procedimento a seguir
{
  if(sum(apply(data.frame[,-1], 2, is.numeric))==0)#Caso o data.frame especificado contehha valores não numéricos fora da primeira coluna
  {  stop("O data.frame específicado contém valores não numéricos fora da primeira coluna")#será mostrada uma mensagem de erro e a função não irá executar
  }  
  if(sum(is.na(data.frame[,])>0))#Caso existam NAs no data.frame especificado pelo usuário
  { 
    warning("Os NAs presentes no data.frame foram substituídos por zero")#gerar uma mensagem de aviso
    data.frame[,][is.na(data.frame[,])]<-0 #Substituir os valores de NA por 0
  }
  
Abund.geral.especies<-colSums(data.frame[,-1])/sum(colSums(data.frame[,-1]))#calculo da abundancia relativa de cada espécie; Guardei os dados em um objeto
frequencia<- colSums(data.frame[,-1] > 0)/nrow(data.frame)#calculo da frequência de observação para cada espécie; Guardei os dados em um objeto
lista.sp <- names(data.frame[,-1]) #fiz uma lista com os nomes das espécies para usar de "label" no eixo X do gráfico
plot((Abund.geral.especies*100), ylim=ylim, bty="l",ylab= "%",lwd=5,type="h",main="GERAL",xlab="", col="grey", cex=7.0,xaxt="n" ) #plotar a abundância relativa das espécies em porcentagem
mtext(side = 1, text = "Espécie", line = 3) #adicionar um texto abaixo do eixo x
par(cex=0.7)#muda o tamanhao daquilo que será colocado na janela gráfica para 0.7
par(new=TRUE)#permitir que sejam adicionadas outras informações sobre o plot
plot((frequencia*100) ,ylim=ylim,axes=FALSE, ann=FALSE,col="black",pch=16,cex=0.8)#plotar a frequencia de observação de cada espécie em porcentagem
axis(1, at=c(1:(ncol(data.frame)-1)),labels=lista.sp, las=2,cex=0.5)#inserir um eixo x com o nome das espécies como labels
}
else{ #caso o usuário especifique o argumento "col.sp"
  if(is.numeric(data.frame[,col.sp])==F)#caso a coluna especificada por "col.sp" contenha valores não numéricos
   { stop("A coluna específicada em col.sp contém valores não numéricos")#será mostrada uma mensagem de erro e a função não irá executar
  }
     if (sum(is.na(data.frame[,col.sp]))>0)#caso a coluna especificada por "col.sp" contenha NAs
      {warning("Os NAs presentes na coluna especificada em col.sp foram substituídos por zero")#gerar uma mensagem de aviso
      data.frame[,col.sp][is.na(data.frame[,col.sp])]<-0#Substituir os valores de NA por 0
      }
data.frame$soma.linha<- apply(data.frame[,2:ncol(data.frame)],1,sum)#inseri um coluna no data.frame com a soma de todos os numeros da linha, assim tenho a soma de quantos animais foram avistados por censo, dado importante para calculos posteriores 
Nomes.sp<-colnames(data.frame) #guardei o nome das colunas do data.frame em um vetor para me auxiliar no resto da função
names(data.frame)[1]<-paste("Local")#mudei o nome da primeira coluna do data.frame para "Local"
names(data.frame)[col.sp]<-paste("sp")#mudei o nome da coluna do data.frame especificada por "col.sp" para "sp"
data.frame$Local<-as.factor(data.frame$Local)#mudei os tipo dos dados da primeira coluna do data.frame para fator
Abundancia<-tapply(data.frame$sp, data.frame$Local, FUN=sum)/tapply(data.frame$soma.linha, data.frame$Local, FUN=sum)#calculo da abundancia relativa por local; Guardei os dados em um objeto
Frequencia<-tapply(data.frame$sp  >0 , data.frame$Local, FUN=sum)/tapply(data.frame$sp	>=0 , data.frame$Local, FUN=sum)#calculo de frequencia de observação por local; Guardei os dados em um objeto
plot((Abundancia*100), bty="l",ylab= "%",ylim=ylim, lwd=5,type="h",main=Nomes.sp[col.sp],xlab=Nomes.sp[1], col="grey", cex=7.0,xaxt="n" )#plotei a abundancia relativa das espécies em porcentagem por local de amostragem
mtext(side = 1, text = "Local", line = 5) #inseri um texto abaixo do eixo x
par(cex=0.7)#muda o tamanhao daquilo que será colocado na janela gráfica para 0.7
axis(1,at=c(1:nlevels(data.frame$Local)),xlim=c(1,nlevels(data.frame$Local)),labels=unique(data.frame$Local),las=2,cex=0.9)#inserir um eixo x com o nome dos locais como labels
par(cex=1.0)#restaura o tamanhao daquilo que será colocado na janela gráfica
par(new=TRUE)#permitir que sejam adicionadas outras informações sobre o plot
plot((Frequencia*100),axes=FALSE, ann=FALSE, ylim=ylim, col="black",pch=16,cex=0.8)#plotar a frequencia de observação em porcentagem por localde amostragem
}
#legenda do grafico
par(cex=1)#restaura o tamanhao daquilo que será colocado na janela gráfica
par(new=T)#permito que algo seja plotado sem apagar o plot antigo
plot(0,0,xlim=c(0,10), ylim=c(0,10), xaxt="n",xlab="",ylab="", yaxt="n", bty="n", type="n") #defino um novo plot sem nada dentro para que eu possa usar essas coordenadas depois
points (x=-1.5,y=12, pch=16, xpd=T)#ploto um ponto no canto superior esquerdo da janela gráfica
segments(x0=-1.5, y0=11.34, x1=-1.5, y1=11.6, lwd=5, col="grey", xpd=T)#ploto uma barra cinza no canto superior esquerdo da janela gráfica 
text(c(-1.5,-1.5),c(11.4,12),cex=0.6,pos=4,labels=c("Abundância relativa", "Frequência de observação"),xpd=T)#adiciono textos em frente ao ponto e barra plotados anteriormente para finalizar a legenda do gráfico
}

Help da Função censo.aed

censo.aed            package:bie5782_2014                R Documentation



Description:

     Função para fazer uma análise exploratória de dados de censos. Essa função gera a representação gráfica da abundância relativa e frequência de observação, em porcentagem, de todas as espécies amostradas no censos.
     A função também pode gerar a representação gráfica da abundância relativa e frequência de observação, em porcentagem, de apenas uma espécie por local de amostragem.
    

Usage:

     censo.aed(data.frame, col.sp, ylim)


Arguments:

 data.frame: data.frame de uma planilha de censos onde cada linha representa um censo diferente;
	     a primeira coluna contém o local onde o censo foi realizado;
	     a partir da segunda coluna cada coluna representa uma espécie e as linhas abaixo possuem o número de indivíduos avistados em cada censo;

 col.sp:     corresponde ao número da coluna que representa a espécie a ser analisada;
             quando especificado será feita a análise de determinada espécie por local de amostragem;
             caso esse argumento não seja especificado será feita uma análise de todas as espécies no geral.
  
 ylim:       corresponde aos limites do eixo y do gráfico que será gerado;
	     caso não especificado será usado o limite de 0 a 100.

 
Details:

    A abundância relativa corresponde número de indivíduos de uma determinada espécie, calculado em relação ao número total de indivíduos de todas as espécies.
 
    A frequência de observação, em porcentagem, corresponde a porcentagem dos censos em que a espécie foi avistada.

     
Warning:
    
    Os NAs presentes no data.frame foram substituídos por zero.
    Os NAs presentes na coluna especificada em col.sp foram substituídos por zero

Author:

     Sartor, D.(sartordaniel@usp.br)


References:


Examples:

###Criando um data.frame com a simulação de censos###
Locais<-rep(c("Itu","Salto","Santos"), each=5)
teste<-as.data.frame(Locais)
teste$Sp1<-sample(0:10, 15, replace=T)
teste$Sp2<-sample(0:5, 15, replace=T)
teste$Sp3<-sample(0:12, 15, replace=T)
teste$Sp4<-sample(0:8, 15, replace=T)
teste$Sp5<-sample(0:4, 15, replace=T)
teste$Sp6<-sample(0:15, 15, replace=T)
teste$Sp7<-sample(0:13, 15, replace=T)
teste$Sp8<-sample(0:6, 15, replace=T)
teste$Sp9<-sample(0:10, 15, replace=T)
teste$Sp10<-sample(0:11, 15, replace=T)

censo.aed(teste)#análise de todas as espécies no geral

censo.aed(teste,col.sp=3)#análise da espécie representada pela coluna 3 feita por local de amostragem

censo.aed(teste,col.sp=6,ylim=c(0,75))#análise da espécie representada pela coluna 6 feita por local de amostragem. Limites do eixo y especificados.

Arquivo para teste da função arquivo_teste_funcao.csv

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