Í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
Sou biólogo pela Universidade Federal do Espírito Santo (UFES), Tecnólogo em Saneamento Ambiental pelo Instituto Federal do Espírito Santo (IFES) e Mestre em Biologia Vegetal/UFES (PPGBV). Atualmente sou doutorando em Biodiversidade Vegetal e Meio Ambiente - Instituto de Botânica/SMA/SP (IBot/SMA/SP).
O título da minha tese é “Biodiversidade e distribuição das diatomáceas e seu uso na bioindicação da qualidade de represas da Bacia do rio Piracicaba e do Sistema Cantareira”, orientada pela Drª Denise de Campos Bicudo. A diversidade de análises numéricas realizadas no meu trabalho faz com que seja necessário o uso de mais de um programa estatístico. Portanto, utilizando o programa R todas análises necessárias (e outras além) poderão ser rodadas em um único programa.
(REVISADO SEGUNDO COMENTÁRIO): A proposta principal de trabalho final é criar uma função que calcule os ótimos ambientais de espécies e suas tolerâncias ambientais, utilizando o método da média ponderada (“weighted average” – WA). Os dados de entradas deverão ser duas matrizes com valores numéricos quantitativos: a primeira matriz formatada com as espécies nas colunas e observações/estações amostrais nas linhas e a segunda matriz com as variáveis ambientais nas colunas e as observações/estações amostrais nas linhas (o número de linhas das duas matrizes devem ser iguais). A função retornará, no console, duas matrizes (agrupadas em um array), uma contendo os ótimos ambientais calculados e outra contendo as tolerâncias ambientais calculadas. Além disso, haverá um retorno gráfico, no qual o usuário poderá selecionar o tipo ao inserir os argumentos da função. A primeira opção abrirá uma janela gráfica para cada variável, onde serão plotados gráficos de dispersão dessa variável com cada espécie, e com uma linha indicadora do ótimo ambiental (com finalidade de comparar os ótimos das espécies em uma mesma variável). A segunda opção abrirá uma janela gráfica para cada espécie, onde serão plotado gráficos de dispersão dessa espécie com cada uma das variáveis, e com uma linha indicadora do ótimo ambiental (com finalidade de avaliar quais são os ótimos ambientais de determinada espécie). Nesta segunda opção, também será gerada um gráfico de box-plot mostrando a distribuição da abundância (ou densidade) da espécie nas amostras.
A proposta B consiste na elaboração de uma função que calculará o Índice de Estado Trófico (IET – Lamparelli 2004), baseados nos valores de Fósforo Total, transparência pelo disco de Secchi e clorofila a. A função, além de retornar os valores de IET (para cada variável e a média), também retornará um gráfico com os valores dos IET’s calculados e em qual classificação (ultraoligotrófico, oligotrófico, mesotrófico, eutrófico, supereutrófico e hipereutrófico) eles se encontram. O usuário terá a possibilidade de informar se o seu ambiente é lêntico ou lótico, já que os cálculos são diferentes, e ainda se usará ou não a transparência do disco de Secchi no calculo, devido ao fato de muitas vezes essa variável ser descartada dos cálculos por sua origem abiótica.
A proposta A me parece mais interessante, embora sua descrição esteja um pouco confusa, especialmente na parte do output da função. Seria bom vc dar uma clareada no seu texto para ter certeza. —- Vitor Rios
Agora ficou mais claro o que sua função vai retornar. Sua entrada de dados ambientais vai ter os valores de máximo e mínimo ou só a média? dê uma olhada na página Trabalho Final, que lá tem um modelinho de como formatar sua proposta. Me parece que vc pode seguir com a função A mesmo, pois a B é apenas o calculo de um índice
otimo R Documentation Ótimo e tolerância ambiental Description: Calcula os ótimos e tolerâncias ambientais de diversas espécies para diversas variáveis ambientais, gerando gráficos comparativos dentre espécies para uma mesma variável ou gráficos informativos dos ótimos de uma única espécie para diversas variáveis ambientais. Usage: otimo(x,y,graf="environmental",yx="",bty="o",pch=16,col=1) Arguments: x matriz com dados das espécies (ver Detalhes) y matriz com dados das variáveis ambientais (ver Detalhes) graf "environmental" (padrão) para saída com gráficos comparativos dentre espécies para uma mesma espécie; "species" para saída com gráficos informativos dos ótimos de uma única espécie para diversas variáveis.(ver Detalhes) yx legenda do eixo Y (ver Detalhes) bty tipo de caixa do gráfico (ver par) pch tipo de ícone plotado (ver par) col cor dos ícones plotados (ver par) Details: A matriz x com dados de espécie deve ser uma matriz de abundância relativa ou de densidade. Dados de presência/ausência não devem ser utilizados na análise. Valores zeros são aceitos, independente do número. As matrizes x e y devem ter o mesmo número de linhas e nenhum valor de NA. Para a escolha da saída gráfica (graf) também podem ser utilizados "sp" (em substituição a "species") e "en" (em substituição a "environmental"). yx só é utilizado quando graf="species" ou graf="sp" é selecionado. Value: A função retorna no R-console os valores dos ótimos ambientais em uma matriz e de tolerância ambiental em outra, unidas em um objeto de classe array. Caso os objetos de entrada não forem da classe matriz, ou não possuirem o mesmo número de linhas, um alerta será apresentado no R-console. Caso existam valores NA em alguma matriz de entrada, um alerta será apresentado mostrando em qual matriz existe valores NA e o número total deles. Warning: Utilizar a função com matrizes com número elevados de espécies e/ou variáveis ambientais (> 10 colunas na matriz) não prejudicará o retorno do objeto de classe array contendo as matrizes com os valores dos ótimos e tolerâncias ambientais. Contudo prejudicará a visualização dos gráficos nas janelas gráficas. A função não salva o array criado. Author(s): Stéfano Zorzal-Almeida stefanozorzal@gmail.com References: TER BRAAK, C.J.F. & VAN DAM, H. Inferring pH from diatoms: a comparison of old and new calibration methods. 1989. Hydrobiologia 178:209-223. See Also: par Examples: x<-matrix(c(seq(from=15,to=150,by=15),seq(from=200,to=20,length.out=10),rep(c(23,31,27,24,26),2)),nrow=10,ncol=3,dimnames=list(c(1:10),c("sp1","sp2","sp3")))#matriz de dados das espécies y<-matrix(c(seq(from=200,to=2000,by=200),seq(from=500,to=50,length.out=10)),nrow=10,ncol=2,dimnames=list(c(1:10),c("var1","var2")))#matriz de dados das variáveis ambientais #Função com saída gráfica por variável otimo(x,y,graf="environmental",bty="l",col="green") #Função com saída gráfica por espécie otimo(x,y,graf="species",yx="Densidade (ind/mL)",bty="u",col="red")
otimo<-function(x,y,graf="environmental",yx="",bty="o",pch=16,col=1) #Cria um objeto que guardará a função que determina os ótimos e tolerâncias ambientais. Ainda são colocados os parâmetros da função: x=matriz de dados de espécies; y=matriz de dados das variáveis ambientais; graf=escolha da saída gráfica (a saída padrão mostra apresenta a janela gráfica comparando os ótimos das espécies para uma mesma variável ambiental);yx=determina o nome do eixo Y (unidade dos dados das espécies), no caso de saída gráfica com os ótimos da mesma espécie em uma única janela; bty, pch e col são argumentos para formatação dos gráficos; #Primeiramente, serão realizados testes com objetivo de verificar se as matrizes estão de acordo com a análise e a função. { if(is.matrix(x)==FALSE)#Condicionante que realiza um teste lógico se o objeto X (dados das espécies) é uma matriz. { stop("O objeto contendo as espécies não é uma matriz")#Retorna a mensagem de erro caso o objeto dos dados de espécies não seja uma matriz. } if(is.matrix(y)==FALSE)#condicionante que realiza um teste lógico se o objeto Y (dados das variáveis ambientais) é uma matriz. { stop("O objeto contendo as variáveis ambientais não é uma matriz")#Retorna a mensagem de erro caso o objeto dos dados de variáveis ambientais não seja uma matriz. } s.x.na<-sum(is.na(x))#calcula o número de NA's na matriz X, guardando o resultado em um objeto. s.y.na<-sum(is.na(y))#calcula o número de NA's na matriz Y, guardando o resultado em um objeto. if(nrow(x)!=nrow(y))#condicionante que realiza um teste lógico se o número de linhas das matrizes é igual. { stop("As matrizes possuem diferentes números de observações")#Retorna a mensagem de erro caso o número de linhas das matrizes seja diferente. } if (s.x.na>0|s.y.na>0)#Condicionante que realiza um teste lógico para verificar a existência de valores NA's nas matrizes. { stop(paste(c("Foram detectados ",s.x.na," valor(es) NA na planilha de espécies e ",s.y.na," valor(es) NA na planilha de variáveis ambientais. Os valores devem ser retirados antes de continuar a análise"),sep=" "))#Retorna a mensagem de erro caso existam valores de NA em alguma matriz, mostrando em qual matriz e a quantidade. } #Se as matrizes estão de acordo a análise segue. Em caso negativo, uma das mensagens de erro expostas anteriormente serão apresentadas ao usuário. #Serão então criados objetos para armazenamento dos dados gerados. u.mat<-matrix(data=NA,nrow=ncol(x),ncol=ncol(y),dimnames=list(colnames(x),colnames(y))) #cria uma matriz para entrada dos dados de ótimo das espécies (u). t.mat<-matrix(data=NA,nrow=ncol(x),ncol=ncol(y),dimnames=list(colnames(x),colnames(y))) #cria uma matrix para entrada dos dados de tolerância das espécies (t) #Para a análise dos ótimos e tolerâncias ambientais de várias espécies para várias variáveis é necessário a criação de um looping dentro de outro looping. for(i in 1:ncol(x)) #cria uma sequência de loopings que realizam o cálculo do ótimo ambiental. Este 'for' será rodado um número de vezes igual o número de colunas da matriz X. { for(j in 1:ncol(y))#cria uma sequência de loopings dentro da sequencia de loopings anteriore para o calculo do ótimo ambiental, permitindo assim acessar os dados das duas planilhas. { u.mat[i,j]<-weighted.mean(y[,j],x[,i])#Calcula efetivamente o ótimo ambiental através da média ponderada (WA), utilizando 'i' e 'j' dos 'for' para gerar loopings que calcularão o ótimo de cada espécies para cada variável e guardará o resultado no objeto criado 'u.mat'. } } for(i in 1:ncol(x)) #cria uma sequência de loopings que realizam o cálculo da tolerância ambiental. Este 'for' será rodado um número de vezes igual o número de colunas da matriz X. { for(j in 1:ncol(y))#cria uma sequência de loopings dentro da sequencia de loopings anteriore para o calculo da tolerância ambiental, permitindo assim acessar os dados das duas planilhas. { t.mat[i,j]<-((sum((x[,i]*((y[,j]-(weighted.mean(y[,j],x[,i])))^2))))/(sum(x[,i])))^0.5#Calcula efetivamente a tolerância ambiental através da média ponderada (WA), utilizando 'i' e 'j' dos 'for' para gerar loopings que calcularão a tolerância de cada espécies para cada variável e guardará o resultado no objeto criado 't.mat'. } } #após a criação das matrizes contendo os valores de ótimo e tolerância ambiental, elas deverão ser unidas em um outro objeto para que possa ser retornado como resultado da função. otimos<-array(c(u.mat,t.mat),dim=c(ncol(x),ncol(y),2),dimnames=list(colnames(x),colnames(y),c("Ótimo Ambiental","Tolerância Ambiental"))) #Cria um objeto de classe 'array' contendo as matrizes criadas e armazenadas nos objetos 'u.mat' (ótimos ambientais) e 't.mat' (tolerância ambiental) ####### Gráficos ####### #Objetos com o nome das colunas das matrizes foram criados para inserir nos gráficos. n.x<-colnames(x) #Cria um objeto com os nomes das colunas da matriz X. n.y<-colnames(y) #Cria um objeto com os nomes das colunas da matriz Y. if(graf=="en"|graf=="environmental")#Condicionante para a criação de gráficos contendo, em cada janela gráfica, gráficos do ótimo das espécies da matriz X e suas distribuições para uma única variável da matriz Y. Para cada variável, uma janela gráfica será aberta. { for(i in 1:ncol(y))#Looping, determinado pelo número de variáveis da matriz Y, que abrirá uma janela gráfica para cada variavel ambiental. { x11()#Abre uma nova janela grafica par(mfrow=c(round((ncol(x)+1)/2.1),2),bty=bty,mgp=c(2,0.7,0))#Função reguladora das janelas gráficas, dividindo a janela gráfica de acordo com o número de espécies da matriz X, o tipo de caixa dos gráficos, e distancia das legendas. for(j in 1:ncol(x))#Inicia o looping dos gráficos que serão gerados em uma janela gráfica, aberta pelo looping anterior. { par(mar=c(3,4,0.7,1))#determina do tamanho das margens dos gráficos plot(y[,i],x[,j],ylim=c(0,max(x)),ylab=n.x[j],xlab=n.y[i],pch=pch,col=col)#plota a distribuição da espécie j pela variável i. O tipo de icone plotado e a cor é definida pelo usuário no início da função, e serve para todos os demais gráficos. abline(v=u.mat[j,i],lty=2)#Plota uma linha tracejada vertical na marca do ótimo ambiental da espécie para determinada variável. u.text<-paste("u (optima) =",as.character(round(u.mat[j,i],2)),sep=" ")#cria um objeto contendo o valor numérico do ótimo ambiental. text(0.90*max(y[,i]),0.85*max(x),labels=u.text,cex=0.95)#plota o valor numérico criado no objeto 'u.text' no grafico. } } } if(graf=="sp"|graf=="species")#Condicionante para a criação de gráficos contendo, em cada janela gráfica, gráficos dos ótimos de uma espécie da matriz X e suas distribuições para as variáveis da matriz Y. Para cada espécie, uma janela gráfica será aberta. Ainda, um gráfico boxplot será adicionado, mostrando a distribuição da espécie dentro das amostras { for (j in 1:ncol(x))#Looping, determinado pelo número de espécies da matriz X, que abrirá uma janela gráfica para cada espécie. { x11()#Abre uma janela gráfica par(mfrow=c(round((ncol(y)+1)/2.1)+1,2),bty=bty,mgp=c(1.5,0.3,0),pch=pch,cex.axis=0.95,tcl=0.2,mar=c(2.5,3,1,1))#Função reguladora das janelas gráficas, dividindo a janela gráfica de acordo com o número de variáveis da matriz Y, levando em conta o boxplot, o tipo de caixa dos gráficos, distancia das legendas, formatação de simbolos, tamanho das letras dos eixos e 'tick mark' dos eixos, e tamanho das margens boxplot(x[,j],xlab=n.x[j],ylab=yx,ylim=c(0,max(x[,j])))#plota o boxplot com a distribuição das espécies. for (i in 1:ncol(y))#Inicia o looping dos gráficos que serão gerados em uma janela gráfica, aberta pelo looping anterior. Nota: o boxplot é gerado apenas uma vez por janela gráfica. { plot(y[,i],x[,j],col=col,ylab=yx,xlab=n.y[i],ylim=c(0,max(x[,j])))#plota os gráficos de distribuição de uma espécie j contra uma variável i. abline(v=u.mat[j,i],lty=2)#Plota uma linha tracejada vertical na marca do ótimo ambiental da espécie para determinada variável. u.text<-paste("u (optima) =",as.character(round(u.mat[j,i],2)),sep=" ")#cria um objeto contendo o valor numérico do ótimo ambiental. text(0.85*max(y[,i]),0.85*max(x[,j]),labels=u.text,cex=0.95)#plota o valor numérico criado no objeto 'u.text' no grafico. } } } return(otimos)#Finaliza a função retornando no console o objeto de classe 'array' que contém uma matriz com dados de ótimo ambiental e outra com dados de tolerância ambiental. }