====== Gabriel Barros G. de Souza ======
\\
{{:bie5782:01_curso_atual:alunos:trabalho_final:gabrielbbarros:co_pia_de_barros_15.jpg?100 |}}
\\
Doutorando em Ecologia na __Universidade Federal do Rio de Janeiro__ (UFRJ), fazendo parte da equipe do **Laboratório de Biologia e Tecnologia Pesqueira (LBTP)**, sob coordenação e orientação do **Dr. Marcelo Vianna**. Meu projeto de pesquisa envolve o estudo da //qualidade ecológica de estuários// utilizando //peixes demersais// como modelos biológicos.
\\
\\
[[http://lattes.cnpq.br/4012374701934609|Currículo Lattes]]
\\
[[gabrielbbarros@gmail.com]]
\\
\\
----
===== Meus Exercícios =====
Página com meus exercícios resolvidos: [[.:exec]]
\\
\\
----
===== Proposta de Trabalho Final =====
\\
==== Plano A ====
Como plano principal, a função a ser criada servirá para calcular o Índice de Avaliação de Peixes Estuarinos (The Estuarine Fish Assessment Index - EFAI)((Cabral, H.N.; Fonseca, V.F.; Gamito, R.; Gonçalves, C.I.; Costa, J.L.; Erzini, K.; Gonçalves, J.; Martins, J.; Leite, L.; Andrade, J.P.; Ramos, S.; Bordalo, A.; Amorim, E.; Neto, J.M.; Marques, J.C.; Rebelo, J.E.; Silva, C.; Castro, N.; Almeida, P.R.; Domingos, I.; Gordo, L.S.; Costa, M.J. (2012) Ecological quality assessment of transitional waters based on fish assemblages in Portuguese estuaries: The Estuarine Fish Assessment Index (EFAI). Ecological Indicators, 19:144-153)). O EFAI inclui métricas sobre a estrutura e função da comunidade (estrutura trófica e padrões de uso de habitat), bem como espécies-chave para avaliar impactos específicos de atividades antrópicas. Esse é um dos índices multimétricos que utilizarei na minha tese, na qual tenho o intuito de avaliar a adequação de diferentes índices multimétricos para utilização em dados de peixes de estuários tropicais.
=== Argumentos da Função ===
Para entrada da função, serão inseridos os seguintes argumentos:
**(i)** __um objeto da classe data.frame__ que contenha colunas com os locais de amostragem (pontos) e as métricas do índice (riqueza de espécies, % de marinhos migrantes, % de indivíduos de espécies residentes estuarinas, número de espécies residentes estuarinas, % de indivíduos de espécies piscívoras, número de espécies piscívoras, espécies diádromas, espécies introduzidas, espécies sensíveis a distúrbio);
**(ii)** __um argumento que indica a zona halina do corpo d'água__, uma vez que ambientes estuarinos podem ser muito distintos no tamanho e nas caraterísticas abióticas.
=== Funcionamento e Saída da Função ===
A função calculará os seguintes aspectos:
**(i)** __os scores__ dos pontos de amostragem, onde são somados os scores individuais de cada uma das métricas simples para se ter o score final
**(ii)** __a qualidade ecológica__ de cada ponto de amostragem, definido a partir de classes de scores pré-definidos
Como resultado, será possível observar quais pontos de amostragem tem qualidade ecológica entre alta e ruim (alta, boa, moderada, pobre e ruim)[[http://www.sciencedirect.com/science/article/pii/S1470160X11002494|Fonte]].
\\
==== Plano B ====
Como plano secundário, proponho criar uma função com o objetivo analisar o custo/benefício de métodos de amostragem[[https://www.cals.ncsu.edu/course/zo501/Readings/How%20You%20Count%20JAE.pdf|Methods Research]]. Essa análise é essencial para a escolha do método que apresenta melhor balanço entre precisão dos dados obtidos e custos da amostragem. Tal função será baseada no índice de custo/benefício criado na minha dissertação ([[http://link.springer.com/article/10.1007%2Fs10750-014-2033-z|Analysis of Sampling Methods of Estuarine Benthic Macrofauna]]), o qual se baseou na precisão, deixando de lado a acurácia. Tal índice foi aplicado para macrofauna bentônica estuarina, mas pode ser utilizado para outros grupos biológicos de diferentes ecossistemas.
=== Argumentos da Função ===
Para entrada da função, serão inseridos os seguintes argumentos:
**(i)** __um objeto da classe data.frame__ que contenha as unidades amostrais nas colunas e as espécies nas linhas, caso o método aborde o estudo de comunidades, __ou um vetor numérico__ que contenha abundância de indivíduos de determinada espécie para cada unidade amostral (estudos de populações);
**(ii)** __um argumento que indica o valor do custo por unidade amostral__;
**(iii)** __um argumento que indica o valor dos custos adicionais__;
**(iv)** __um argumento lógico para exclusão de NA__.
=== Funcionamento e Saída da Função ===
A função calculará os seguintes aspectos:
**(i)** __a precisão (//p//)__ das estimativas do número de indivíduos, a partir da seguinte fórmula:
//p// = //SE// / µ = (//s// / //√n//) / µ
no qual, //SE// é o erro padrão estimado a partir do desvio padrão (//s//) para determinado tamanho amostral (//n//), e µ é a média amostral. Precisão está inversamente relacionada aos valores da razão utilizada, sendo maior quando SE é pequeno relativo à média e menor quando o valor da razão aumenta((Andrew, N.L. & Mapstone, B.D. (1987) Sampling and the description of spatial pattern in marine ecology. Oceanography and Marine Biology - An Annual Review, 25:39-90)). Assim, o tratamento analisado com menor valor calculado fornece estimativas mais precisas.
**(ii)** __o custo total (//Ct//)__ de cada método, através da multiplicação do custo de cada unidade amostral pelo número total de unidades, sendo somado pelos custos adicionais:
//Ct// = //n// * //Cu// + //Ca//
no qual, //n// é o número de pontos amostrados para cada procedimento, //Cu// é o custo para cada unidade amostral (//i.e.// tempo de amostragem, staff) e //Ca// são os custos adicionais, assumidos como valor gasto (aquisição dos equipamentos).
**(iii)** __a razão custo-benefício (//CB//)__ dividindo-se o custo total pela precisão:
//CB// = (//Ct// / (1 - //p//)) / 1000
no qual, //Ct// é o custo total e //p// a precisão. Os valores serão divididos por 1000 para reduzir a escala do valor calculado.
Como resultado, quanto menor o custo e maior a precisão, menor será o valor calculado e, conseqüentemente, melhor a razão custo-benefício do tratamento analisado.
\\
====Comentários das Propostas Melina====
em 28/abr/16
As duas propostas me parecem simples e relativamente fáceis de implementar. Na proposta A, faltou um pouco de informação de como você vai calcular o índice e a sua relação com os objetos de saída. Aliás, quais serão os objetos de saída?
A proposta B parece igualmente razoável, também não deu pra sacar direito qual será o objeto de saída, mas está OK.
Como as duas propostas estão mais ou menos no mesmo nível, escolha a que mais te interessar e mãos à obra!
====Respostas Gabriel====
Olá, Melina! Obrigado pelos comentários.
Vou ficar com a Proposta A, pois não existe códigos para esse índice (pelo menos não encontrei até o momento) e esse é apenas um dos vários índices que utilizarei e para os quais precisarei criar códigos no R durante a minha tese.
Respondendo a sua dúvida sobre essa proposta, o objeto de saída será o Score desse ponto de amostragem juntamente com a sua qualidade ecológica. Não descrevi detalhadamente a parte do cálculo do índice pq é bem densa, mas está tudo descrito no item 2.3 do artigo que citei no final[[http://www.sciencedirect.com/science/article/pii/S1470160X11002494|Fonte]]. Basicamente, são definidos scores para cada uma das métricas simples e, por fim, esses scores são somados para se ter o score final que define a qualidade ecológica do local.
Ainda pretendo voltar para a proposta B no futuro.
Obrigado, mais uma vez.
Abç.
----
===== Página de Ajuda =====
efai package:none R Documentation
Cálculo do Índice de Avaliação de Peixes Estuarinos (The Estuarine Fish Assessment Index - EFAI)
Description:
O EFAI inclui métricas sobre a estrutura e função da comunidade (estrutura trófica e padrões de uso de habitat),
bem como espécies-chave para avaliar impactos específicos de atividades antrópicas. São definidos scores para cada
uma das métricas simples e, por fim, esses scores são somados para se ter o score final que define a qualidade
ecológica do local.
Usage:
efai(x, zona = TRUE)
Arguments:
x Dataframe contendo 10 colunas: (i) os pontos de amostragem, (ii) riqueza de espécies, (iii) % de marinhos
migrantes, (iv) % de indivíduos de espécies residentes estuarinas, (v) número de espécies residentes
estuarinas, (vi) % de indivíduos de espécies piscívoras, (vii) número de espécies piscívoras, (viii)
scores para espécies diádromas, (ix) scores para espécies introduzidas, (x) scores para espécies sensíveis
a distúrbio. Caso os dados contemplem pontos em diferentes zonas halinas, uma última coluna deve ser
inserida no dataframe contendo o valor da salinidade em cada ponto de amostragem.
zona Valor lógico que indica se o data.frame contém dados de diferentes zonas halinas do corpo d'água, uma vez
que ambientes estuarinos podem ser muito distintos no tamanho e nas caraterísticas abióticas.
Details:
É necessário estruturar o dataframe corretamente antes de aplicar a função.
Exceto para riqueza de espécies, para a qual existem diferentes funções para calcula-la no R, as demais métricas
simples necessitam de literatura especializada para a caraterização trófica e de uso de habitat das espécies de
peixes.
A função não define os scores para as variáveis: espécies diádromas, espécies introduzidas e espécies sensíveis a
distúrbio. Essas variáveis foram subjetivamente caracterizadas por Cabral et al. (2012), de modo que as mesmas
precisam ser definidas e inseridas no dataframe previamente.
Value:
A função retorna um dataframe com 3 colunas: (i) pontos de amostragem, (ii) score final de cada ponto e, (iii)
qualidade ecológica (alta, boa, moderada, pobre e ruim).
Warning:
A função não é aplicável a matrizes usuais de abundância de espécies. Ocorrência de mensagem de erro se o primeiro
objeto não for um dataframe contendo as métricas especificadas.
Note:
Para grandes conjuntos de dados com série temporal, recomenda-se aplicar a função para cada período amostral, de
modo a permitir uma melhor visualização dos resultados. Posteriormente podem ser gerados gráficos comparativos
entre pontos de amostragem por período amostral.
Author(s):
Gabriel Barros G. de Souza
gabrielbbarros@gmail.com
References:
- Cabral, H.N.; Fonseca, V.F.; Gamito, R.; Gonçalves, C.I.; Costa, J.L.; Erzini, K.; Gonçalves, J.; Martins, J.;
Leite, L.; Andrade, J.P.; Ramos, S.; Bordalo, A.; Amorim, E.; Neto, J.M.; Marques, J.C.; Rebelo, J.E.; Silva, C.;
Castro, N.; Almeida, P.R.; Domingos, I.; Gordo, L.S.; Costa, M.J. (2012) Ecological quality assessment of
transitional waters based on fish assemblages in Portuguese estuaries: The Estuarine Fish Assessment Index (EFAI).
Ecological Indicators, 19:144-153
- Karr, J.R., Fausch, K.D., Angermeier, P.L., Yant, P.R., Schlosser, I.J. 1986. Assessment biological integrity in
running waters: a method and its rationale. Illinois Natu- ral, History Survey Special Publication 5, Champaign,
IL, USA.
See Also:
Pacotes que calculam algumas métricas simples para comunidades estuarinas e marinhas: 'mizer', 'BEQI2',
'fishmethods'.
Examples:
pontos <- c(1:10)
richness <- rep(seq(50,90,by=10),each=2)
mar.migr <- c(rep(c(1,5),each=3),7,2,1,1)
est.esp.1 <- c(rep(c(10,25),each=3),50,75,90,10)
est.esp.2 <- c(5,5,6,15,17,18,40,60,81,5)
p1 <- c(rep(c(80,55),each=3),20,10,2,80)
p2 <- c(40,40,38,31,36,36,16,8,2,40)
diad <- rep(1,length.out=10)
introd <- rep(1,length.out=10)
disturb <- c(rep(seq(1,5,by=2),each=3),1)
salin <- c(rep(seq(4,30,by=13),each=3),4)
dados <- data.frame(pontos,richness,mar.migr,est.esp.1,est.esp.2,p1,p2,diad,introd,disturb,salin) # diferentes
zonas halinas
efai(dados)
dados2 <- data.frame(pontos,richness,mar.migr,est.esp.1,est.esp.2,p1,p2,diad,introd,disturb) # sem zonas halinas
efai(dados2,zona=FALSE)
===== Código da Função =====
########## Função EFAI ##########
efai <- function (x, zona = TRUE) # atribui ao objeto 'efai' a classe 'function' com os argumentos x
{ # inicia o codigo da funcao
if(is.data.frame(x) == F) # verifica se a classe do objeto ‘x' contem um data.frame
{
cat("\n ‘x' precisa ser um data.frame.\n") # pare a funcao se a condicao acima for atendida, retornando a mensagem de erro
}
sr <- rep(NA, length(x[,2])) # cria um objeto para incluir os dados de scores para Species Richness (SR)
mm <- rep(NA, length(x[,3])) # cria um objeto para incluir os dados de scores para percentual de Marine Migrants (MM)
es.1 <- rep(NA, length(x[,4])) # cria um objeto para incluir os dados de scores para percentual de Estuarine Species (ES)
es.2 <- rep(NA, length(x[,5])) # cria um objeto para incluir os dados de scores para numero de Estuarine Species (ES)
p1 <- rep(NA, length(x[,6])) # cria um objeto para incluir os dados de scores para percentual de Piscivore Species (P)
p2 <- rep(NA, length(x[,6])) # cria um objeto para incluir os dados de scores para numero de Piscivore Species (P)
if(zona == TRUE) # se o argumento zona for verdadeiro (default), os dados serão analisados considerando diferentes zonas halinas
{
for(j in 1:length(x[,11])) # criando ciclo para zonas oligohalinas
if(x[j,11]<5) ## se os dados se referem a zonas oligohalinas
{
for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR)
{
if(x[i,2]<=3) # se o valor de SR é menor ou igual a 3
{
sr[i] = 1 # atribuir o score 1
}
if(x[i,2]>=4 & x[i,2]<=8) # se o valor de SR está entre 4 e 8
{
sr[i] = 3 # atribuir o score 3
}
if(x[i,2]>8) # se o valor de SR é maior que 8
{
sr[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM)
{
if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10%
{
mm[i] = 1 # atribuir o score 1
}
if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50%
{
mm[i] = 3 # atribuir o score 3
}
if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50%
{
mm[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES)
{
if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90%
{
es.1[i] = 1 # atribuir o score 1
}
if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
es.1[i] = 3 # atribuir o score 3
}
if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70%
{
es.1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P)
{
if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90%
{
p1[i] = 1 # atribuir o score 1
}
if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
p1[i] = 3 # atribuir o score 3
}
if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70%
{
p1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P)
{
if(x[i,7]<=1) # se o número de P2 é menor ou igual a 1
{
p2[i] = 1 # atribuir o score 1
}
if(x[i,7]==2) # se o número de P2 é 2
{
p2[i] = 3 # atribuir o score 3
}
if(x[i,7]>2) # se o número de P2 é maior que 2
{
p2[i] = 5 # atribuir o score 5
}
}
}
es.2 <- NULL # removendo esse vetor, pois não existem scores para o número de ES para zonas oligohalinas
for(j in 1:length(x[,11])) # criando ciclo para zonas mesohalinas
if(x[j,11]>=5 & x[j,11]<=18) ## se os dados se referem a zonas mesohalinas
{
for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR)
{
if(x[i,2]<=4) # se o valor de SR é menor ou igual a 4
{
sr[i] = 1 # atribuir o score 1
}
if(x[i,2]>=5 & x[i,2]<=10) # se o valor de SR está entre 5 e 10
{
sr[i] = 3 # atribuir o score 3
}
if(x[i,2]>10) # se o valor de SR é maior que 10
{
sr[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM)
{
if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10%
{
mm[i] = 1 # atribuir o score 1
}
if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50%
{
mm[i] = 3 # atribuir o score 3
}
if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50%
{
mm[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES)
{
if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90%
{
es.1[i] = 1 # atribuir o score 1
}
if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
es.1[i] = 3 # atribuir o score 3
}
if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70%
{
es.1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,5])) # criando ciclo para número de Estuarine Species (ES)
{
if(x[i,5]<=1) # se o número de ES2 é menor ou igual a 1
{
es.2[i] = 1 # atribuir o score 1
}
if(x[i,5]>=2 & x[i,5]<3) # se o número de ES2 está entre 2 e 3
{
es.2[i] = 3 # atribuir o score 3
}
if(x[i,5]>3) # se o número de ES2 é maior que 3
{
es.2[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P)
{
if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90%
{
p1[i] = 1 # atribuir o score 1
}
if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
p1[i] = 3 # atribuir o score 3
}
if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70%
{
p1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P)
{
if(x[i,7]<=1) # se o número de P2 é menor ou igual a 1
{
p2[i] = 1 # atribuir o score 1
}
if(x[i,7]==2 & x[i,7]==3) # se o número de P2 está entre 2 e 3
{
p2[i] = 3 # atribuir o score 3
}
if(x[i,7]>3) # se o número de P2 é maior que 3
{
p2[i] = 5 # atribuir o score 5
}
}
}
for(j in 1:length(x[,11])) # criando ciclo para zonas polihalinas
if(x[j,11]>18) ## se os dados se referem a zonas polihalinas
{
for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR)
{
if(x[i,2]<=5) # se o valor de SR é menor ou igual a 5
{
sr[i] = 1 # atribuir o score 1
}
if(x[i,2]>=6 & x[i,2]<=15) # se o valor de SR está entre 6 e 15
{
sr[i] = 3 # atribuir o score 3
}
if(x[i,2]>15) # se o valor de SR é maior que 15
{
sr[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM)
{
if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10%
{
mm[i] = 1 # atribuir o score 1
}
if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50%
{
mm[i] = 3 # atribuir o score 3
}
if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50%
{
mm[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES)
{
if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90%
{
es.1[i] = 1 # atribuir o score 1
}
if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
es.1[i] = 3 # atribuir o score 3
}
if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70%
{
es.1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,5])) # criando ciclo para número de Estuarine Species (ES)
{
if(x[i,5]<=2) # se o número de ES2 é menor ou igual a 2
{
es.2[i] = 1 # atribuir o score 1
}
if(x[i,5]>=3 & x[i,5]<=5) # se o número de ES2 está entre 3 e 5
{
es.2[i] = 3 # atribuir o score 3
}
if(x[i,5]>5) # se o número de ES2 é maior que 5
{
es.2[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P)
{
if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90%
{
p1[i] = 1 # atribuir o score 1
}
if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
p1[i] = 3 # atribuir o score 3
}
if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70%
{
p1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P)
{
if(x[i,7]<=2) # se o número de P2 é menor ou igual a 2
{
p2[i] = 1 # atribuir o score 1
}
if(x[i,7]>=3 & x[i,7]<=5) # se o número de P2 está entre 3 e 5
{
p2[i] = 3 # atribuir o score 3
}
if(x[i,7]>5) # se o número de P2 é maior que 5
{
p2[i] = 5 # atribuir o score 5
}
}
}
}
else # se o argumento zona for falso
{
for(i in 1:length(x[,2])) # criando ciclo para valor de Species Richness (SR)
{
if(x[i,2]<=10) # se o valor de SR é menor ou igual a 10
{
sr[i] = 1 # atribuir o score 1
}
if(x[i,2]>=11 & x[i,2]<=20) # se o valor de SR está entre 11 e 20
{
sr[i] = 3 # atribuir o score 3
}
if(x[i,2]>20) # se o valor de SR é maior que 20
{
sr[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,3])) # criando ciclo para percentual de Marine Migrants (MM)
{
if(x[i,3]<=10) # se o percentual de MM é menor ou igual a 10%
{
mm[i] = 1 # atribuir o score 1
}
if(x[i,3]>10 & x[i,3]<50) # se o percentual de MM está entre 10-50%
{
mm[i] = 3 # atribuir o score 3
}
if(x[i,3]>=50) # se o percentual de MM é maior ou igual a 50%
{
mm[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,4])) # criando ciclo para percentual de Estuarine Species (ES)
{
if(x[i,4]<=10 || x[,4]>90) # se o percentual de ES é menor ou igual a 10% ou maior que 90%
{
es.1[i] = 1 # atribuir o score 1
}
if(x[i,4]>10 & x[i,4]<=30 || x[i,4]>=70 & x[i,4]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
es.1[i] = 3 # atribuir o score 3
}
if(x[i,4]>30 & x[i,4]<70) # se o percentual de ES está entre 30-70%
{
es.1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,5])) # criando ciclo para número de Estuarine Species (ES)
{
if(x[i,5]<=2) # se o número de ES2 é menor ou igual a 2
{
es.2[i] = 1 # atribuir o score 1
}
if(x[i,5]>=3 & x[i,5]<=5) # se o número de ES2 está entre 3 e 5
{
es.2[i] = 3 # atribuir o score 3
}
if(x[i,5]>5) # se o número de ES2 é maior que 5
{
es.2[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,6])) # criando ciclo para percentual de Piscivore Species (P)
{
if(x[i,6]<=10 || x[i,6]>90) # se o percentual de P é menor ou igual a 10% ou maior que 90%
{
p1[i] = 1 # atribuir o score 1
}
if(x[i,6]>10 & x[i,6]<=30 || x[i,6]>=70 & x[i,6]<=90) # se o percentual de ES está entre 10-30% ou ou entre 70-90%
{
p1[i] = 3 # atribuir o score 3
}
if(x[i,6]>30 & x[i,6]<70) # se o percentual de ES está entre 30-70%
{
p1[i] = 5 # atribuir o score 5
}
}
for(i in 1:length(x[,7])) # criando ciclo para número de Piscivore Species (P)
{
if(x[i,7]<=5) # se o número de P2 é menor ou igual a 5
{
p2[i] = 1 # atribuir o score 1
}
if(x[i,7]>=6 & x[i,7]<=12) # se o número de P2 está entre 6 e 12
{
p2[i] = 3 # atribuir o score 3
}
if(x[i,7]>12) # se o número de P2 é maior que 12
{
p2[i] = 5 # atribuir o score 5
}
}
}
x.scores <- data.frame(sr, mm, es.1, es.2, p1, p2, x[,8], x[,9], x[,10]) # cria um dataframe com os scores calculados e fornecidos
score.final <- apply(x.scores, 1, sum) # soma os scores para cada ponto amostral
quality <- rep(NA, length(score.final)) # cria um objeto para incluir a qualidade ecologica dos scores finais para cada ponto de amostragem
for(k in 1:length(score.final)) # loop para compor o vetor de qualidade ecológica para os pontos de amostragem
{
if(score.final[k]>=7 & score.final[k]<=10) # se o score estiver entre os valores 7 e 10
{
quality[k]="bad" # atribuir o termo "bad"
}
if(score.final[k]>=11 & score.final[k]<=14) # se o score estiver entre os valores 11 e 14
{
quality[k]="poor" # atribuir o termo "poor"
}
if(score.final[k]>=15 & score.final[k]<=20) # se o score estiver entre os valores 15 e 20
{
quality[k]="moderate" # atribuir o termo "moderate"
}
if(score.final[k]>=21 & score.final[k]<=29) # se o score estiver entre os valores 21 e 29
{
quality[k]="good" # atribuir o termo "good"
}
if(score.final[k]>=30 & score.final[k]<=35) # se o score estiver entre os valores 30 e 35
{
quality[k]="high" # atribuir o termo "high"
}
}
resulta <- data.frame(x[,1], score.final, quality) # dataframe do resultado com 3 colunas: (i) pontos de amostragem, (ii) score final de cada ponto e, (iii) qualidade ecológica
names(resulta) <- c("Pontos de Amostragem", "Score", "Qualidade Ecológica") # nomeia as colunas do resultado
return(resulta) # retorna o dataframe do resultado
} # encerra o codigo da funcao
===== Arquivo da Função =====
Script da Função EFAI: {{:bie5782:01_curso_atual:alunos:trabalho_final:gabrielbbarros:efai.index.r|}}
Script do Exemplo: {{:bie5782:01_curso_atual:alunos:trabalho_final:gabrielbbarros:exemplo.data.r|}}
\\