Tabela de conteúdos

img-20171015-wa0003.jpg

Thamíris Christina Karlovic de Abreu

Doutoranda em Oceanografia (Concentração: Oceanografia Biológica), Instituto Oceanográfico - USP

O título da minha tese é: “Conectividade da raia-viola Pseudobatos percellens (Walbaum, 1792) no arquipélago dos Alcatrazes: Modelagem da dinâmica espaço-temporal”, orientada pela Professora June Ferraz Dias.

e mail: thamykarlovic@usp.br

Exercícios

Proposta A

Reprodução de Peixes

Contextualização:

Conhecer o período de desova dos peixes permite inferências a cerca dos aspectos biológicos e dos processos ecológicos do táxon. Tais informações são essenciais nas tomadas de decisão tanto para o manejo de conservação das espécies quanto para sua exploração como recurso alimentar. Dentre as metodologias existentes, a classificação macroscópica das gônadas (principalmente dos ovários) e a avaliação dos índices gonadais e dos fatores de condição, correspondem ás técnicas de maior acessibilidade e praticidade, sendo recorrente a utilização na análise inicial dos dados. Normalmente, os resultados obtidos pela variação dos índices/fatores e das frequências dos estágios de maturidade, são contrapostos, fornecendo perspectivas quanto ao momento de desova da espécie durante o intervalo de tempo estudado. Por exemplo, valores elevados da relação gonadossomática (RGS) são um reflexo do aumento de peso e tamanho dos ovários devido ao processo de maturação ovocitária. O valor de pico desta relação seguido de queda corresponde á perda de peso da gônada pela liberação dos ovócitos, sendo, portanto, um indicador do seu estado funcional. Por sua vez, a maior frequência de espécimes classificados como maduros (estágio C) durante o período de brusca variação da RGS aumentam a probabilidade de acerto quanto á identificação do(s) momento(s) de desova. Logo, a ocorrência deste padrão mais de uma vez em um ciclo reprodutivo, pode indicar diferentes eventos de desova.

Descrição:

Com base nas informações fornecidas, têm-se como objetivo desenvolver uma função que identifique os prováveis momentos de desova. A função irá tratar dados de quatro variáveis contínuas e três categóricas, para a obtenção dos seguintes indicadores quantitativos da maturidade gonadal em peixes:

Entrada: rep.fish(LT, WT, WG, WB, sex, period, stages)

Os valores ausentes serão preenchidos por NA.

*Utilizado o estágio macroscópico de maturidade gonadal proposto por Vazzoler (1982).

Verificação dos parâmetros:

Pseudo-código:

  1. Criar um objeto fishes do tipo dataframe
  2. Utilizar a função “if” para discrimiar o sexo das amostras.
  3. Obter a relação para sexos agrupados entre WT e LT a partir de um modelo de regressão não linear lm(log(WT)~log(LT))
  4. Guardar nos objetos coef.a e coef.b o valores dos coeficientes α e β, respectivamente, estimados na regressão anterior
  5. Criar área para os gráficos
  6. Plotar os valores observados de WT x LT
  7. Inserir linha de tendência da regressão
  8. Obter as variações das médias e os erros padrão de RGS1 (ambos os sexos) e RGS2 (fêmeas) entre os períodos a partir das equações:
  1. Obter as variações das médias e os erros padrão de Ig para fêmeas entre os períodos a partir da equação:

Onde β é o coeficiente coef.b estimado pelo modelo de regressão não linear (passo 3)

  1. Obter a variação das frequências relativas dos indivíduos em estágio de maturidade C por sexo e entre os períodos e guardar no objeto freq.t
  2. Exibir o gráfico das variações de frequência por período para machos e fêmeas
  3. Adicionar valores às variações de frequências de forma que a menor delas seja 0
  4. Aplicar teste t sobre as novas variações de frequência para inferir se a menor delas (0) é significativa perante o conjunto total de dados. Se for rejeitada a hipótese nula, este será considerado o principal período de desova
  5. Obter o modelo de regressão lm(RGS2 ~ freq.t$female) para verificar se as frequências relativas dos grupos de indivíduos em estágio de maturidade C explicam os níveis de RGS obtidos em cada período
  6. Plotar os gráficos de RGS e Ig e os erros em relação à média para cada período coletado, visando visualizar a dispersão do estado de condição gonadal

Obs: para machos e fêmeas, RGS, e apenas para fêmeas, Ig e RGS 2.

  1. Cálculo do Fator S, obtido por meio de análise dos componentes principais considerando as variações das médias de RGS, IG e das frequências relativas por período.
  2. Identificação do(s) valor(es) destoante(s) de S, correspondente(s) ao(s) período(s) de desova.

Saídas:

  1. Scatterplot da relação WTxLT com a linha de tendência da regressão estimada
  2. Gráficos dos índices calculados (RGS e Ig) e os erros em relação à média para cada período coletado.
  3. Gráfico mostrando a frequência relativa do estágio de maturidade C por sexos, em relação ao total para cada período.
  4. Output contendo:

Referências:

FÁVERO, L. P.; BELFIORE, P. Manual de análise de dados: Estatística e Modelagem Multivariada com Excel, SPSS e Stata. Rio de Janeiro: Elsevier, 2007.

FROESE, R. Cube law, condiction fator and weight-length relationships: history, meta-analysis and recommendations. J. Appl. Ichthyol, p. 241-253. 2006

HELFMAN, G. S.; COLLETTE, B. B.; FACEY, D. E.; BOWEN, B. W. The Diversity of Fishes: Biology, Evolution and Ecology. John Wiley & Sons, LTD. 2009. 2ºed.

VAZZOLER, A. E. A. de M. Manual de métodos para estudos biológicos de populações de peixes. Reprodução e crescimento. Brasília: CNPq, 1981. 108 p.

VAZZOLER, A. E. A. de M. Biologia da reprodução de peixes teleósteos: Teoria e prática. Maringá: EDUEM, 1996. 169 p.

Proposta B

Descrição:

O acervo da Coleção Biológica Professor Edmundo Nonato (ColBIO) do Instituto Oceanográfico-USP abriga atualmente mais de sete décadas de amostras biológicas referentes ao plâncton, nécton e bentos, da costa brasileira e da Antártica. A informatização dos dados irá otimizar tanto o gerenciamento físico das amostras quanto, o processamento das informações a elas associadas (variáveis abióticas e dados dos cruzeiros oceanográficos). Contudo, a enorme quantidade de dados a serem armazenados e organizados está constantemente sujeitos a falhas relacionadas a erros de digitação, problemas de formatação e de configuração das planilhas, comprometendo assim a sua qualidade. Desta forma, a função irá tratar 13 das 72 colunas de informação existentes no banco de dados. A atribuição da função ocorrerá somente a estes dados devido a discrepante recorrência de erros, encontrados durante o processo manual de revisão. Além disso, a função irá gerar gráficos exploratórios da frequência de registro dos grupos taxonômicos identificados para todo o banco de dados já informatizado, frequência de registro do menor grupo taxonômico por local e ano de coleta e por cruzeiro oceanográfico.

Entrada: col.bio(dados, state (opcional), year (opcional), project (opcional))

Verificação da entrada:

Pseudo-código:

  1. Entrar com um objeto do tipo dataframe contendo as colunas indicadas acima.
  2. Realizar a verificação dos dados em cada uma das colunas.
  3. Caso sejam definidos os parâmetros “state”, “year” e “project”, a função “if” será utilizada para buscar os dados correspondentes no dataframe.
  4. Encontradas as linhas que contém o parâmetro definido, será criado um sub-dataframe apenas com as amostras que atendem aos parâmetros.
  5. A partir do dataframe será utilizada a função “hist” para gerar três histogramas com as frequências das espécies, famílias e ordens de todas as observações.
  6. Se forem definidos os parâmetros, o histograma mostrará apenas as frequências dos dados correspondentes.

Saídas:

  1. Histogramas com as frequências das espécies, famílias e ordens da amostra (seguindo ou não os parâmetros).
  2. Contagem das espécies, famílias e ordens.

Oi Thamíris!

Suas duas propostas são interessantes mas ainda um pouco simples. A proposta B é simples demais, e não envolve nenhum desafio de programação interessante, nem tem um apelo mais geral.

A proposta A tem mais futuro, mas ainda está genérica demais, parecendo um “script que eu preciso” disfarçado de função. Talvez tenha algum problema mais específico dentro desse assunto que seja mais interessante. Eu pensei talvez numa função que tente identificar o momento das desovas, ou quantas desovas ocorreram numa amostra. Isso seria legal pra vc poder comparar duas amostras, por exemplo. Que tal?

Me escreva no email quando responder aqui.

Diogo Melo 2018/05/10

Olá Diogo, muito obrigada pelas considerações. Gostei muito das suas críticas! Construí uma linha de raciocínio confrontando os valores estimados pelos índices que propus com os estágios macroscópicos de maturidade gonadal (outro método para se obter informações sobre o ciclo reprodutivo). Poderíamos agendar uma reunião? Ficaria mais fácil de explicar minha ideia e poder dar continuidade ao desenvolvimento do trabalho. Se você preferir, posso enviar a proposta reformulada para o seu e mail. Mais uma vez, muito obrigada!

Trabalho Final

Arquivo da função rep.fish: rep1.fish.r

Arquivo do help: help_rep.fish.r

Base de dados para o help:sp.teste.csv

### Função rep.fish ###


# Construindo a função

rep.fish<-function(specie, LT, WT, WG, WB, sex, period, stages)
{
  if(class(specie)!= "character") # Verifica se o argumento "specie" é um string de letras
  {
    stop("Verifique seus dados! specie deve ser o nome de uma espécie") # Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
  if(class(LT)!= "integer" & class(LT)!= "numeric" | any(LT<=0)) # Verifica se o argumento "LT" está em mm, cm ou metros e se há valores negativos
    {
    stop("Verifique seus dados! LT deve ser inteiro ou numérico e >0") # Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
  
  if(class(WT)!= "numeric" | any(WT<=0)) #Verifica se o argumento "WT" está correto
  {
    stop("Verifique seus dados! WT deve ser numérico e >0") # Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
  if(class(WG)!= "numeric" | any(WG < 0, na.rm = TRUE)) #Verifica se "WG" é numérico positivo e se há valores perdidos
  {
    stop("Verifique seus dados! WG deve ser numérico ou =NA") # Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
  if(class(WB)!= "numeric" | any(WB<=0, na.rm = TRUE)) #Verifica se "WB" é numérico positivo e se há valores perdidos
  {
    stop("Verifique seus dados! WB deve ser numérico ou =NA") # Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
  if(class(sex)!= "factor" | any(sex != "M" & sex != "F", na.rm = TRUE)) #Verifica se "sex" é um fator com duas categorias
  {
    stop("Verifique seus dados! sex = F ou M") # Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
  if(class(period)!= "integer") # Verifica se "period" contem valores inteiros correspondentes á cada período de coleta
  {
    stop("Verifique seus dados! period deve conter períodos enumerados em ordem de coleta (ex. Jan= 1, Fev= 2... ou 2011= 1, 2012= 2)")
  }
  if(class(stages)!= "factor" | any(stages!="A" & stages!="B" & stages!="C" & stages!="D", na.rm = TRUE)) # Verifica se "stages" foi inserido corretamente
  {
    stop("Verifique seus dados! Eles têm que estar classificados em um dos seguintes estágios de maturidade gonadal: A, B, C ou D")# Se não, a função é interrompida e uma menssagem de erro fornecida ao usuário
  }
 
  # Criando o objeto fishes do tipo dataframe
  
   fishes<-data.frame(specie, LT, WT, WG, WB, sex, period, stages) # Cria um dataframe com as entradas da função
   
  # Obtendo a relação peso x comprimento e guardando os valores não logaritimizados dos coeficientes estimados
   
   relation<-lm(log(WT)~log(LT), data = fishes) # Obtem a relação WTxLT por meio de um modelo não linear
   coef.a<-exp(summary(relation)$coefficients[1, 1]) # Guarda o valor estimado não transformado de alfa no objeto coef.a
   coef.b<-summary(relation)$coefficients[2, 1] # Guarda o valor estimado de beta no objeto coef.b
   
  # Preparando espaço gráfico
   x11() # Abrir um dispositivo de tela
   par(mfrow= c (3,3), bty="l", tcl=-0.2) # Dividir o espaço gráfico em 3 colunas
   plot(WT~LT, data=fishes, xlab="Total length", ylab="Total weight", cex.lab=1.2) # Plota a relação entre peso total(WT) e comprimento total(LT)
   curve(( coef.a*(x^coef.b)) , from = min(fishes$LT) , to=max(fishes$LT) , add=TRUE, lwd=1.5, col="red") # Insereve a curva estimada da regressão não linear
   
   # Calculando RGS1
   gonado.relation1<-c((fishes$WG/fishes$WT)*100) # Obtem a RGS1 para cada espécime
   fishes$RGS1<-NA # Cria uma coluna para os valores calculados de RGS1 no dataframe fishes
   fishes$RGS1<-gonado.relation1 # Insere os valores calculados da RGS1 no dataframe fishes
   
   # Obtendo as medias de posição e dispersão por sexo
   
   mean1<-aggregate(fishes$RGS1, by=list(fishes$sex, fishes$period), mean, na.rm=TRUE)# Calcula os valores médios de RGS1 por período para cada sexo
   sd1<-aggregate(fishes$RGS1, by=list(fishes$sex, fishes$period), sd, na.rm=TRUE )# Calcula o desvio padrão dos valores de RGS1 por período para cada sexo
   sd1<-c(sd1$x)# Guarda somente os valores calculados de desvio padrão no objeto sd1
   se1<-c(sd1/sqrt(sum(!is.na(fishes$RGS1))))# Calcula os erros padrão dos valores médios de RGS1 por período e para cada sexo
   
   # Calculando a amplitude de variação do erro
   se.sup<-mean1$x+se1# Calcula o valor máximo que os valores de RGS1 podem ter
   se.inf<-mean1$x-se1# Calcula o valor mínimo que os valores de RGS1 podem ter
   
   # Obtendo dataframes por sexo
   mean1[ ,4:7]<-NA # Cria colunas no objeto mean1 para inserir os valores dos parâmetros calculados
   mean1[ ,4]<-sd1 # Insere os valores calculados do desvio padrão
   mean1[ ,5]<-se1 # Insere os valores calculados do erro padrão
   mean1[ ,6]<-se.sup # Insere os valores máximos da RGS1
   mean1[ ,7]<-se.inf # Insere os valores mínimos da RGS1
  
   measures.f<-mean1[mean1$Group.1=="F",]# Obtem de mean1 apenas os valores calculados para fêmeas
   measures.m<-mean1[mean1$Group.1=="M",]# Obtem de mean1 apenas os valores calculados para machos
   
   # Gráficos de RGS1
   
   plot(measures.f$Group.2, measures.f$x, xlab="Periods", ylab="RGS1 - femeales", cex.lab=1.2, pch=16)# Plota os valores médios de RGS1 das fêmeas por períodos
   axis(side=1, at=measures.f$Group.2)# Desenha no eixo x as marcações para todos os períodos
   arrows(x0=measures.f$Group.2,y0=measures.f$V6, y1=measures.f$V7, code=3, angle=90, length=0.05)# Desenha as barras dos erros padrão 
   
   plot(measures.m$Group.2, measures.m$x, xlab="Periods", ylab="RGS1 - males", cex.lab=1.2, pch=16)# Plota os valores médios de RGS1 dos machos por períodos
   axis(side=1, at=measures.m$Group.2)# Desenha no eixo x as marcações para todos os períodos
   arrows(x0=measures.m$Group.2,y0=measures.m$V6, y1=measures.m$V7, code=3, angle=90, length=0.05)# Desenha as barras dos erros padrão 
   
   # Obtendo a variação das médias
   
   var1 <- diff(mean1$x)# Obtem a variação dos valores médios de RGS1
   
   # Calculando RGS2
   
   fishes.f<-fishes[fishes$sex=="F",] # Filtra os valores do dataframe fishes para fêmeas e os armazena no objeto fishes.f
   gonado.relation2<-c((fishes.f$WG/fishes.f$WB)*100)# Calcula a RGS2 para cada fêmea
   fishes.f$RGS2<-NA # Cria uma coluna para os valores calculados de RGS2 no dataframe fishes.f
   fishes.f$RGS2<-gonado.relation2# Insere os valores calculados da RGS2 no dataframe fishes.f 
   
   # Obtendo as medias de posição e dispersão
   
   mean2<-aggregate(fishes.f$RGS2, by=list(fishes.f$period), mean, na.rm=TRUE)# Calcula os valores médios de RGS2 por período
   sd2<-aggregate(fishes.f$RGS2, by=list(fishes.f$period), sd, na.rm=TRUE)# Calcula o desvio padrão dos valores de RGS2 por período
   sd2<-c(sd2$x)# Guarda somente os valores calculados de desvio padrão no objeto sd2
   se2<-c(sd2/sqrt(sum(!is.na(fishes.f$RGS2))))# Calcula os erros padrão dos valores médios de RGS2 por período 
   
   # Calculando a amplitude de variação do erro
   se.sup2<-mean2$x+se2# Calcula o valor máximo que os valores de RGS2 podem ter
   se.inf2<-mean2$x-se2# Calcula o valor mínimo que os valores de RGS2 podem ter
   
   # Obtendo dataframe
   mean2[ ,3:6]<-NA # Cria colunas no objeto mean2 para inserir os valores dos parâmetros calculados
   mean2[ ,3]<-sd2 # Insere os valores calculados do desvio padrão
   mean2[ ,4]<-se2 # Insere os valores calculados do erro padrão
   mean2[ ,5]<-se.sup2 # Insere os valores máximos da RGS2
   mean2[ ,6]<-se.inf2 # Insere os valores mínimos da RGS2
   
   # Gráfico de RGS2
   
   plot(mean2$Group.1, mean2$x, xlab="Periods", ylab="RGS2", cex.lab=1.2, pch=16)# Plota os valores médios de RGS2 por períodos
   axis(side=1, at=mean2$Group.1)# Desenha no eixo x as marcações para todos os períodos
   arrows(x0=mean2$Group.1,y0=mean2$V5, y1=mean2$V6, code=3, angle=90, length=0.05)# Desenha as barras dos erros padrão
   
   # Obtendo a variação das médias
   
   var2 <- diff(mean2$x)# Obtem a variação dos valores médios de RGS2
   
   # Calculando IG
   
   gonad.index<-c(fishes.f$WG/(fishes.f$LT^coef.b))# Calcula o IG para cada fêmea
   fishes.f$IG<-NA # Cria uma coluna para os valores calculados de IG no dataframe fishes.f
   fishes.f$IG<-gonad.index # Insere os valores calculados de IG no dataframe fishes.f
   
   # Obtendo as medias de posição e dispersão
   
   mean3<-aggregate(fishes.f$IG, by=list(fishes.f$period), mean, na.rm=TRUE)# Calcula os valores médios de IG por período
   sd3<-aggregate(fishes.f$IG, by=list(fishes.f$period), sd, na.rm=TRUE) # Calcula o desvio padrão dos valores de IG por período
   sd3<-c(sd3$x)# Guarda somente os valores calculados de desvio padrão no objeto sd3
   se3<-c(sd3/sqrt(sum(!is.na(fishes.f$IG))))# Calcula os erros padrão dos valores médios de IG por período
   
   # Calculando a amplitude de variação do erro
   se.sup3<-mean3$x+se3# Calcula o valor máximo que os valores de IG podem ter
   se.inf3<-mean3$x-se3# Calcula o valor mínimo que os valores de IG podem ter
   
   # Obtendo dataframe
   
   mean3[ ,3:6]<-NA # Cria colunas no objeto mean3 para inserir os valores dos parâmetros calculados
   mean3[ ,3]<-sd3# Insere os valores calculados do desvio padrão
   mean3[ ,4]<-se3# Insere os valores calculados do erro padrão
   mean3[ ,5]<-se.sup3# Insere os valores máximos da IG
   mean3[ ,6]<-se.inf3# Insere os valores mínimos da IG 
   
   # Gráfico de IG
   
   plot(mean3$Group.1, mean3$x, xlab="Periods", ylab="IG", cex.lab=1.2, pch=16)# Plota os valores médios de IG por períodos
   axis(side=1, at=mean3$Group.1)# Desenha no eixo x as marcações para todos os períodos
   arrows(x0=mean3$Group.1,y0=mean3$V5, y1=mean3$V6, code=3, angle=90, length=0.05) # Desenha as barras dos erros padrão
   
   # Obtendo a variação das médias 
   
   var3 <- diff(mean3$x)# Obtem a variação dos valores médios do IG
   
   #Obtendo a freq. relativa de C
      
   freq.tab.f <- table(fishes$stages[fishes$sex=="F"], fishes$period[fishes$sex=="F"])
   freq.tab.f <- rbind(freq.tab.f, total = colSums(freq.tab.f))
   freq.t.f <- freq.tab.f[3,]/freq.tab.f[5,]
   freq.v.f <- na.omit(diff(freq.t.f))
   
   freq.tab.m <- table(fishes$stages[fishes$sex=="M"], fishes$period[fishes$sex=="M"])
   freq.tab.m <- rbind(freq.tab.m, total = colSums(freq.tab.m))
   freq.t.m <- freq.tab.m[3,]/freq.tab.m[5,]
   freq.v.m <- na.omit(diff(freq.t.m))  
   
   #Gráficos de frequências
   
   barplot(freq.t.f, xlab = "Periods", ylab = "C Stage Female Frequency", cex.lab=1.2, axis.lty = fishes$period)# Plota o gráfico das frequências do estágio C para fêmeas
   barplot(freq.t.m, xlab = "Periods", ylab = "C Stage Male Frequency", cex.lab=1.2, axis.lty = fishes$period)# Plota o gráfico das frequências do estágio C para machos
   
   #Ajuste das variações de frequência
   
   freq.a.f <- array(freq.v.f + abs(min(freq.v.f)) + 0.0000001)
   freq.a.m <- array(freq.v.m + abs(min(freq.v.m)) + 0.0000001)
   
   #Teste t (com o ajuste anterior, a maior queda de frequência é 0)
   
   teste.t.f <- t.test(freq.a.f)
   teste.t.m <- t.test(freq.a.m)
   
   #Modelo de regressão lm(RGS2 ~ freq.t$female) 
   #Verifica se as frequências relativas dos grupos de indivíduos 
   #em estágio de maturidade C explicam os níveis de RGS obtidos em cada período
   
   reg.rgs2 <- lm(mean2$x ~ freq.t.f) # Obtem o modelo de regressão entre os valores médios de RGS2 e
   
   #Cálculo do Fator S por PCA
   
   library("stats", lib.loc="C:/Program Files/R/R-3.4.4/library") #Carrega o pacote "stats"
   
   pca.data <- data.frame(var2, var3, freq.v.f)
   fishes.pca <- prcomp(pca.data, scale = TRUE)# Utiliza a função prcomp do pacote stats. 
   #Referência: R Core Team and contributors worldwide. The R Stats Package. 
   #Disponível em: <https://stat.ethz.ch/R-manual/R-devel/library/stats/html/stats-package.html>.
   
   plot(fishes.pca, type = "l", main = NULL)
   
   pca.values <-summary(fishes.pca)
   
   #Obtendo o Fator S baseado nas proporções de variância e plotando
   
   fator.s =     var2 * pca.values$importance[2,1] +
                 var3 * pca.values$importance[2,2] +
             freq.v.f * pca.values$importance[2,3]  
   
   
   # Localizando picos
   
   quedas = fator.s 
   quedas[quedas >= 0] <- NA
   
   barplot(fator.s, xlab = "Periods", ylab = "S Factor variation")
   points(quedas, pch = 16, col = "Red")# Sinaliza em vermelho os prováveis momentos de desova

  
   #Output de informações
   
   print(summary(relation)) # Solta o output do modelo não linear lm(log(WT)~log(LT))
   print(summary(reg.rgs2)) # Solta o output o modelo de regressão lm(RGS2 ~ freq.t$female) 
   print(teste.t.f) # Solta o output do teste de t entre as frequências do estágio C
   print(fator.s) # Fornece os valores estimados pela PCA referentes ao fator S
   
}
  rep.fish                package:unknown                R Documentation

  FUNÇÃO PARA VERIFICAR O PERÍODO DE DESOVA DE PEIXES
  
  Description:
  
  Função para identificar os prováveis momentos de desova de peixes
  através da varição de indicadores quantitativos (RGS2 e IG) e qualitativos 
  (escala macacroscópica) da maturidade gonadal. A função fornce o score S e
  gráficos contendo a relação peso x comprimento com curva de tendência da 
  população, as médias e erros padrão dos indicadores, a frequência relativa 
  do estágio C, ambos para cada sexo e período coletado.
  
  Usage:
  
  rep.fish(specie, LT, WT, WG, WB, sex, period, stages)
  
  Arguments:
  
  specie: Um vetor da classe "character" contendo o nome da espécie cujos
  dados serão análisados.

  LT: Um vetor da classe "integer" ou "numeric" contendo os valores de tamanho
  corpóreo total (em mm, cm ou m), de cada espécime coletado. Os valores devem
  ser positivos e maiores que zero.

  WT: Um vetor da classe "numeric" contendo os valores de peso total (em g), de
  cada espécime coletado. Os valores devem ser positivos e maiores que zero.

  WG: Um vetor da classe "numeric" contendo os valores de peso da gonada (em g),
  de cada espécime coletado. Os valores devem ser positivos ou iguais a zero.

  WB: Um vetor da classe "numeric" contendo os valores de peso corpóreo 
  (em g): WT-WG. Os valores devem ser positivos e maiores que zero.

  sex: Um vetor da classe "factor" contendo o sexo dos espécimes. Pode ter
  dois níveis: "F" ou "M".

  period: Um vetor da classe "integer" contendo os período enumerados.
  Ex: meses(Janeiro, Fevereiro, Março, ...) = (1, 2, 3, ...)

  stages: Um vetor da classe "factor" contendo o estágio de maturidade em
  que a gônada de cada espécime foi classifcada. Pode ter quatro níveis: "A",
  "B", "C", ou "D".
  
  Details:
  
  Para a entrada WG: Gônadas com pouco peso (valores próximos de zero), 
  devem ter valor de WG correspondente á 0. Gônadas que não foram pesadas
  correspondem á NA.
 
  Para a entrada sex: Espécimes com o sexo não identificado ou que a gônada
  não foi localizada, devem corresponder á NA.

  Para a entrada stages: Fêmeas consideradas hidratadas, devem ser classificadas
  no estágio "C". Gônadas que não tiveram seu estágio de maturidade definido 
  devem corresponder á NA.Para maiores informações ver Vazzoler (1981).
  
  Value:
  
  Output do modelo não linear da relação WTxLT.
  Output do modelo de regressão lm(RGS2 ~ freq.t$female).
  Output do teste de t entre as frequências do estágio C.
  Valor estimado do Fator S para as variações entre cada período.

  Scatterplot da relação WTxLT com a linha de tendência da regressão estimada.
  Gráficos dos índices calculados (RGS1, RGS2 e Ig) e os erros em relação à média para cada período coletado.
  Gráfico mostrando a frequência relativa do estágio de maturidade C por sexos para cada período.
  Gráfico de explicação da variância da PCA.
  Gráfico da variação do Fator S com prováveis períodos de desova sinalizados por pontos vermelhos.

  Warning:
  
  Se algum dos argumentos estiver incorreto, a função não será executada.
 
  Caso algum valor de erro padrão para as RGSs e/ou para o IG não possa ser calculado
  devido á um N insuficiente,a função retornará zero. Neste caso, o(s) respectivo(s) 
  valor(es) de erro não será(ão) plotado(s) no gráfico e uma mensagem é de erro fornecida.  
  Isso não impedirá a execução da função e não compromete os resultados. 

  
  Author(s):
  
  Thamíris Christina Karlovic de Abreu
  e mail: thamycka@gmail.com
  
  References:
  
 FÁVERO, L. P.; BELFIORE, P. Manual de análise de dados: Estatística e Modelagem 
 Multivariada com Excel, SPSS e Stata. Rio de Janeiro: Elsevier, 2007.
  
 FROESE, R. Cube law, condiction fator and weight-length relationships: history, 
 meta-analysis and recommendations. J. Appl. Ichthyol, p. 241-253. 2006.

 HELFMAN, G. S.; COLLETTE, B. B.; FACEY, D. E.; BOWEN, B. W. The Diversity of 
 Fishes: Biology, Evolution and Ecology. John Wiley & Sons, LTD. 2009. 2ºed.

 VAZZOLER, A. E. A. de M. Manual de métodos para estudos biológicos de populações de peixes. 
 Reprodução e crescimento. Brasília: CNPq, 1981. 108 p.

 VAZZOLER, A. E. A. de M. Biologia da reprodução de peixes teleósteos: Teoria e prática. 
 Maringá: EDUEM, 1996. 169 p. 

 R Core Team and contributors worldwide. The R Stats Package. Disponível em: 
 <https://stat.ethz.ch/R-manual/R-devel/library/stats/html/stats-package.html>.
  
 Examples:
 
 Baixe a base de dados. 
 
 teste<-read.table("sp.teste.csv", header = TRUE, sep = ";", dec=".")
 especie<-(as.character(teste$specie))
 c.t<-c(teste$LT)
 p.t<-c(teste$WT)
 p.g<-c(teste$WG)
 p.b<-c(teste$WB)
 s<-(teste$sex)
 maturity<-(teste$EM)
 time<-c(teste$period)

 rep.fish(especie, c.t, p.t, p.g, p.b, s, time, maturity)