Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2016:alunos:trabalho_final:angela_ecologia:start

Angela Maria da Silva Lehmkuhl

diatom_mandala.jpg

Bióloga, mestre em Botânica pela UFPR, atualmente sou doutoranda no programa Biologia Vegetal da UNESP de Rio Claro - SP, e meu projeto de pesquisa é com uso de Diatomáceas como Bioindicadoras da qualidade da água de reservatórios do estado de São Paulo.

silva_et_al._2010.pdf

exec

CÓDIGO

#Entrada dos dados se dará com duas matrizes, matriz x com abundâncias das espécies, de maneira que as nas colunas ficam as espécies e nas linhas os pontos de coleta. A matriz y com as variáveis, terão as variáveis ambientais nas colunas e nas linhas os pontos de coleta. Ambas as matrizes devem ter o mesmo número de linhas. Não é aceito NA nos dados. Aceita-se valores igual a zero.
optimum <- function(x,y) {
if(is.matrix(x)==FALSE) #Teste lógico para saber se o objeto de entrada é uma matriz.
{
  stop("O objeto não é uma matriz") #Mensagem caso o objeto não seja uma matriz.
}
if(is.matrix(y)==FALSE) #Teste lógico para saber se o objeto de entrada é uma matriz.
{
  stop("O objeto não é uma matriz")
}
if(nrow(x)!=nrow(y)) #Teste para saber se as matrizes tem o mesmo número de linhas
{
  stop("As matrizes devem ter o mesmo número de linhas")
}
matriz.optimum<- matrix(NA, nrow=ncol(x), ncol=ncol(y), dimnames=list(colnames(x), colnames(y))) #Cria uma matriz para guardar os valores de ótimo ecológico que vão ser calculados. Os nomes das linhas serão os nomes das espécies e o nome das colunas serão os nomes das variáveis.
matriz.tolerance<- matrix(NA, nrow=ncol(x), ncol=ncol(y), dimnames=list(colnames(x), colnames(y)))#Cria uma matriz para guardar os valores de tolerância ecológica que vão ser calculados. Os nomes das linhas serão os nomes das espécies e o nome das colunas serão os nomes das variáveis.

for(i in 1:ncol(x)) #Fazendo uma série de loopings para dar início ao cálculo do ótimo. Aqui os valores da matriz de abundância serão acessados. 
{
  for(j in 1:ncol(y)) #Fazendo uma série de loopings o cálculo do ótimo. Aqui os valores da matriz de variáveis serão acessados. 
  {
    matriz.optimum[i,j]<-weighted.mean(y[,j],x[,i]) #Calculo do ótimo utilizando a função da média ponderada (weighted.media) o segundo conjunto de dados tem que ser aquele que vai fornecer o peso para a média ponderada. Assim, se a ordem de entrada das matrizes for alterada, o valor será alterado também. Para o cálculo do ótimo, o conjunto de valores que forncem o peso para a média ponderada são os valores das abundâncias. 
  }  
}

for(i in 1:ncol(x)) #Fazendo uma série de loopings para dar início ao da tolerância. Aqui os valores da matriz de abundância serão acessados.
  {
  for(j in 1:ncol(y)) #Fazendo uma série de loopings para dar início ao cálculo da tolerância. Aqui os valores da matriz de abundância serão acessados.
  {
    matriz.tolerance[i,j]<-((sum(x[,i]*(y[,j]-weighted.mean(y[,j],x[,i]))^2))/sum(x[,i]))^0.5 ##Calculo da tolerância ecológica. 
  }
}
optimum.tolerance<-array(c(matriz.optimum,matriz.tolerance)
                         ,dim=c(ncol(x),ncol(y),2),
                         dimnames=list(colnames(x)
                         ,colnames(y)
                         ,c("Ótimo Ecológico","Tolerância Ecológica")))
                          #Array com os dados do ótimo e da tolerância será o retorno da função.
for(i in 1:ncol(y)) #Fazendo uma série de loopings para a saída gráfica de cada espécie. Aqui acessará os dados para o eixo x que são os valores das variáveis.
    {
      for(j in 1:ncol(x)) #Fazendo uma série de loopings para a saída gráfica de cada espécie. Aqui acessará os dados para o eixo y que são os valores das abundâncias.
      {
        names.axis.x<- colnames(y) #criando um objeto para dar nomes ao eixo x
        names.axis.y<- colnames(x) #criando um objeto para dar nomes ao eixo y
        plot(y[,i],x[,j],ylim=c(0,max(x)),xlab=names.axis.x[i],ylab=names.axis.y[j]) #Plota um gráfico de distribuição das espécies em relação à variável analisada.
        var.range<- min(y[,i]):max(y[,i]) #objeto para guardar os valores entre mínimo da variável ambiental e máxima da variável ambiental para ser utilizada na equação de regressão da curva.
        yA<- (max(x[,j]))*exp(-0.5*(var.range - matriz.optimum[j,i])^2/matriz.tolerance[j,i]^2) #Regressão para plotar a curva no gráfico. 
        lines(var.range,yA,lty=1,col="black") #Plota a curva da regressão na cor preta. 
        abline(v=matriz.optimum[j,i],lty=2) #Plota uma linha pontilhada mostrando o valor do ótimo ambiental.
        valor.optimum<-paste("u =",as.character(round(matriz.optimum[j,i],2)),sep=" ") # valor do ótimo ambiental
        text(0.7*max(y),max(x), labels=valor.optimum) #Plota o valor do ótimo na área do gráfico
        }
    }
    (optimum.tolerance) #Retorno da Função é um array com o ótimo e a tolerância de cada espécie para cada variável.
    } ##FIM!

Help da Função

Ótimo package:unknown R Documentation

Cáculo do Ótimo ecológico e da tolerância ecológica de espécies.

Description:
  
A função calcula o ótimo ecológico e a tolerância ecológica de espécies em relação a variáveis ambientais de interesse. Para isso utiliza-se uma matriz de abundância e uma matriz com os valores das variáveis ambientais de interesse. A função retorna os resultados em um array e um gráfico com o ótimo de cada espécie.

Usage:

optimum(x,y)

Arguments:
x matriz com os dados de abundância ou densidade das espécies
y matriz com os dados para variável ambiental

Details:
A matriz (x) de abundância ou de densidade de espécies deve apresentar as espécies nas colunas. 
A matriz (y) com as variáveis ambientais deve apresentar as variáveis em cada coluna.
Ambas as matrizes devem ter o mesmo número de linhas.
A função aceita valores de zero.
A função não aceita NAs.

Value:
A função retorna no Console duas matrizes em um objeto de array.
A primeira matriz trará os valores dos ótimos ecológicos de cada espécie. A segunda matriz trará os valores de tolerância ecológica de cada espécie. Nas linhas estarão as espécies e nas colunas as variáveis ambientais.
Se o objeto não for uma matriz, a função retornará uma mensagem de aviso.
Se as matrizes não tiverem o mesmo número de linhas, a função retornará um aviso.

Warning:
Se houver mais de 100 espécies, a função não retornará todos os gráficos.
Author(s):
Angela Maria da Silva Lehmkuhl
e-mail: angela_ecologia@yahoo.com.br

References:
  Crawley, M. 2007. The R book.  John Wiley & Sons Ltd, England.
  Ter Braak, C.J.F e Van Dam, H (1989). Inferring ph from diatoms: a comparison of old and new calibration methods. Hydrobiologia 178:209-223.
  
Examples:
x<- matrix(sample(c(seq(from=10, to=1000, length=10), seq(from=1, to=100, length=10), seq(from=50, to=500, length=10))), nrow=10, ncol=3, dimnames=list(c(1:10), c("sp1","sp2", "sp3"))) #Matriz de aundância de espécies
y<- matrix(sample(round(c(seq(from=0.2, to=200, length = 10), seq(from=3.0, to=8.0, length = 10 )))), nrow=10, ncol=2, dimnames=list(c(1:10),c("var1", "var2"))) #Matriz das variáveis ambientais

PROPOSTA DE TRABALHO FINAL

Comentários Vitor Rios

Angela, suas propostas estão confusas, mas pelo que entendi suas duas propostas se resumem a cálculos de índices, sem desafio. Minha sugestão seria elaborar suas propostas, deixando a teoria de lado e se focando no que a função tem que fazer, ou partir prum plano C

vrios81@gmail.com

PROPOSTA DE TRABALHO FINAL

Resposta aos Comentários Vitor Rios

Olá Vitor. Pois bem, na proposta A do ótimo ecológico, a função calcularia o ótimo ecológico e a tolerância ecológica de espécies frente a uma variável ambiental. Para isso, os dados de abundância relativa ou densidade de espécies entraria em uma matriz, onde nas colunas estariam as espécies e nas linhas os pontos de coleta. Em outra matriz estariam os dados das variáveis ambientais, de modo que nas colunas estariam as variáveis e nas linhas os pontos de coleta. A partir disso calcularia o ótimo ecológico e em seguida a tolerância ecológica de cada espécie para cada variável desejada. A função retornaria um array com os valores dos ótimos e das tolerâncias para cada espécie em cada variável ambiental. Ainda a função deve retornar um gráfico onde no eixo y seria a densidade ou abundância da espécie k e no eixo x estariam o gradiente da variável ambiental. O gráfico seria uma curva, onde os limites dados pelo valor de tolerância, o pico da curva seria no ótimo e a altura da curva seria dada pela máxima abundância ou densidade.

Acho que pode ajustar a proposta A com os comentário do Vitor. Deixe o gráfico de lado, retorne apenas o ótimo ecológico e a tolerância para cada espécie/varíável. Garanta que a função rode para várias espécies e um conjunto de variáveis ambientais. Gostei, uma função que homenageia os trabalhos de Ter Braak na dećada de 80..

Comentários Vitor Rios

Angela, pode fazer a proposta A como Alê falou acima, sem os gráficos

vrios81@gmail.com

Comentários Angela

Se eu conseguir rodar o gráfico, posso deixar?

Comentários Vitor Rios

Sim, sem problemas

vrios81@gmail.com

Proposta A PROPOSTA REVISADA! A função calcularia o ótimo ecológico e a tolerância ecológica de espécies frente a uma variável ambiental. Para isso, os dados de abundância relativa ou densidade de espécies entraria em uma matriz, onde nas colunas estariam as espécies e nas linhas os pontos de coleta. Em outra matriz estariam os dados das variáveis ambientais, de modo que nas colunas estariam as variáveis e nas linhas os pontos de coleta. A partir disso calcularia o ótimo ecológico e em seguida a tolerância ecológica de cada espécie para cada variável desejada. A função retornaria um array com os valores dos ótimos e das tolerâncias para cada espécie em cada variável ambiental. Ainda a função deve retornar um gráfico onde no eixo y seria a densidade ou abundância da espécie k e no eixo x estariam o gradiente da variável ambiental. O gráfico seria uma curva, onde os limites dados pelo valor de tolerância, o pico da curva seria no ótimo e a altura da curva seria dada pela máxima abundância ou densidade. A proposta é baseada no trabalho de Ter Braak, C.J.F e Van Dam, H (1989). Inferring ph from diatoms: a comparison of old and new calibration methods. Hydrobiologia 178:209-223. Embora o trabalho se baseie em diatomáceas, o cálculo pode ser aplicado para outras espécies aquáticas utilizadas em biomonitoramento, ou mesmo em estudos autoecológicos, e quiçá a função possa ser aplicad O cálculo do ótimo (ũk) é dado pela somatória da abundância da espécie k na amostra i (yik) multiplicado pelo valor da variável ambiental na amostra (xi) dividido pela somatória da abundância da espécie k na amostra i (yik).

ũk= ∑(1* yik* xi)/∑(1*yik)

A tolerância (tk) é calculada pela somatória da abundância da espécie k na amostra i (yik) multiplicado pela diferença entre o valor da variável ambiental na amostra i (xi) e o valor do ótimo ecológico (ũk) elevado ao quadrado, dividido pela somatória da abundância da espécie k na amostra i (yik). Tudo isso elevado à ½.

tk= {∑(yik)*((xi- ũk)^2)/(∑(yik)}^(1\2)

Proposta B Índices de qualidade de água utilizando organismos aquáticos vêm sendo amplamente desenvolvidos para dar agilidade e rapidez no diagnóstico da qualidade dos corpos d’água. Comumente, são desenvolvidos utilizando a comunidade de diatomáceas e de macroinvertebrados. Os índices utilizam como base a abundância relativa das espécies e um valor de sensibilidade das espécies a uma característica do ambiente, por exemplo, grau de eutrofização ou mesmo saprobicidade da água. Assim, a proposta tem como objetivo, elaborar uma função que retorne o resultado do índice com a classificação do ambiente. Para isso, a proposta baseia-se no Índice Trófico de Qualidade de Água (ITQA) de Lobo et al. (2016) que utiliza diatomáceas, no entanto, esse índice poderá ser ajustado para outras comunidades aquáticas.

ITQA= ∑(vt*h)/∑h

Onde: vt= é o valor trófico para cada espécie, que vai constara na matriz de entrada para a função; h: aundância relativa de cada espécie. O valor do ITQA vai variar de 1 a 4. ITQA Níveis de poluição 1,0 - 1,5 Oligotrófico (poluição desprezível) 1,5 - 2,5 β-mesotrófico (poluição moderada) 2,5 - 3,5 α-mesotrófico (poluição forte) 3,5 - 4,0 Eutrófico (poluição excessiva)

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