\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{listings}
\usepackage{graphicx}
\graphicspath{{media/}}
\date{\today}
\title{}
\author{}
\begin{document}



\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/thamykarlovic/img-20171015-wa0003}


\section{\texorpdfstring{Thamíris Christina Karlovic de Abreu}{Thamiris Christina Karlovic de Abreu}}
\label{sec:thamiris_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 \emph{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

\href{http://ecor.ib.usp.br/doku.php?id=05_curso_antigo:r2018:alunos:trabalho_final:thamykarlovic:exec}{.:exec}

\section{\texorpdfstring{Proposta A}{Proposta A}}
\label{sec: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:
\begin{itemize}
  \item Relação gonadossomática 1 e 2 (RGS)
  \item Índice gonadal (Ig)
\end{itemize}


Entrada: rep.fish(LT, WT, WG, WB, sex, period, stages)
\begin{itemize}
  \item LT = Um vetor numérico contínuo contendo os valores individuais de comprimento total em mm.
  \item WT = Um vetor numérico contínuo contendo os valores individuais do peso corpóreo total em gramas.
  \item WG = Um vetor numérico contínuo contendo os valores individuais do peso das gônadas em gramas.
  \item WB = Um vetor numérico contínuo contendo os valores individuas do peso do corpo (WT-WG) em gramas.
  \item sex = Um vetor da classe fator contendo o sexo de cada indivíduo (F ou M).
  \item period = Um vetor da classe fator contendo os períodos de coleta determinados pelo usuário da função.
  \item stages = Um vetor da classe fator contendo os estágios macroscópicos de maturidade gonadal* (A= imaturo, B= em maturação, C=maduro, D=desovado).
\end{itemize}


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:
\begin{itemize}
  \item LT é um vetor numérico com valores maiores que 0? Se não, retornar: “Verifique seus dados! LT é numérico e \textgreater 0.”
  \item WT é um vetor numérico com valores maiores que 0? Se não, retornar: “Verifique seus dados! WT é numérico e \textgreater 0.”
  \item WG é um vetor numérico com valores maiores que 0 e NA's para valores ausentes? Se não, retornar: “Verifique seus dados! WG é \textgreater 0 ou =NA.”
  \item WB é um vetor numérico com valores maiores que 0 e NA's para valores ausentes? Se não, retornar: “Verifique seus dados! WB é \textgreater 0 ou =NA.”
  \item sex é igual a “F” ou “M”? Se não, retornar: “Verifique seus dados! sex = “F” ou “M”.”
  \item period é inteiro e positivo? Se não, retornar: “Verifique seus dados! period tem que ser um inteiro e positivo.”
  \item stages é igual a “A”, “B”, “C” ou “D”? Se não, retornar: “Verifique seus dados! Eles têm que estar classificados em um dos seguintes estágios de maturidade: A= imaturo, B= em maturação, C=maduro ou D=desovado”.
\end{itemize}


Pseudo-código:
\begin{enumerate}
  \item Criar um objeto \emph{fishes} do tipo dataframe
  \item Utilizar a função “if” para discrimiar o sexo das amostras.
  \item 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)\textasciitilde{}log(LT))
  \item Guardar nos objetos \emph{coef.a} e  \emph{coef.b} o valores dos coeficientes α e β, respectivamente, estimados na regressão anterior
  \item Criar área para os gráficos
  \item Plotar os valores observados de WT x LT
  \item Inserir linha de tendência da regressão
  \item 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:
\end{enumerate}

\begin{itemize}
  \item RGS1= (WG/WT)*100 
  \item RGS2= (WG/WB)*100
\end{itemize}

\begin{enumerate}
  \item 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: 
\end{enumerate}

\begin{itemize}
  \item Ig= WG/LT\textasciicircum{}β
\end{itemize}


Onde β é o coeficiente \emph{coef.b} estimado pelo modelo de regressão não linear (passo 3)
\begin{enumerate}
  \item 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 \emph{freq.t}
  \item Exibir o gráfico das variações de frequência por período para machos e fêmeas
  \item Adicionar valores às variações de frequências de forma que a menor delas seja 0
  \item 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
  \item Obter o modelo de regressão lm(RGS2 \textasciitilde{} \emph{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
  \item 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
\end{enumerate}


Obs: para machos e fêmeas, RGS, e apenas para fêmeas, Ig e RGS 2.
\begin{enumerate}
  \item 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.
  \item Identificação do(s) valor(es) destoante(s) de S, correspondente(s) ao(s) período(s) de desova.
\end{enumerate}


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

\begin{itemize}
  \item os valores de α e β estimados pela relação WTxLT
  \item resultado do teste t sobre período de maior frequência
  \item valor estimado do fator S para cada período
  \item mensagem de texto informando o potencial momento de desova
\end{itemize}


 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.

\section{\texorpdfstring{Proposta B}{Proposta B}}
\label{sec: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))
\begin{itemize}
  \item  dados = um dataframe em formato csv contendo as seguintes informações em colunas:
  \item  time.s = horário das estações oceanográficas 
  \item  time.i = horário de início das coletas
  \item  time.f = horário de término das coletas
  \item  lat = latitude
  \item  long = longitude
  \item  depth.l = profundidade do local de coleta
  \item  depth.max = profundidade máxima coletada
  \item  depth.mim = profundidade mínima coletada
  \item  sal.max = salinidade na profundidade máxima coletada
  \item  sal.min = salinidade na profundidade mínima coletada
  \item  water.temp = temperatura da água
  \item  wtemp.max = temperatura da água na profundidade máxima coletada
  \item  wtemp.min = temperatura da água na profundidade mínima coletada
  \item  year = ano de coleta dos dados
  \item  state = Estado de referência da lat/long
  \item  project = projeto referente ao cruzeiro oceanográfico
  \item  family = referente ao nível taxonômico família dos espécimes contidos nas amostras
  \item  genus = referente ao nível taxonômico gênero dos espécimes contidos nas amostras
  \item  species = referente ao nível taxonômico espécie dos espécimes contidos nas amostras
\end{itemize}


Verificação da entrada:
\begin{itemize}
  \item dados é um dataframe? Se não, retornar: ,,Verifique seus dados! dados precisa ser um dataframe."
  \item time.s é da classe date e está entre 00:00 e 24:00? Se não, retornar: ,,Verifique seus dados! time.s corresponde a um horário entre 00:00 e 24:00."
  \item time.i é da classe date e está entre 00:00 e 24:00? Se não, retornar: ,,Verifique seus dados! time.i corresponde a um horário entre 00:00 e 24:00."
  \item time.f é da classe date, está entre 00:00 e 24:00 e é superior a time.i? Se não, retornar: ,,Verifique seus dados! time.f corresponde a um horário entre 00:00 e 24:00 superior a time.i."
  \item lat é da classe numeric e está entre 0° e -90°? Se não, retornar: ,,Verifique seus dados! Você precisa estar no hemisfério Sul."
  \item long é da classe numeric e está entre 0° e -180°? Se não, retornar: ,,Verifique seus dados! Você precisa estar a oeste do Meridiano."
  \item depth.l é da classe numeric e superior à 0? Se não, retornar: “Verifique seus dados! depth.l \textgreater 0.”
  \item depth.max é da classe numeric, superior à 0 e maior que depth.min? Se não, retornar: “Verifique seus dados! depth.max é maior que 0 e depth.mim.”
  \item depth.mim é da classe numeric, superior à 0 e menor que depth.max? Se não, retornar: “Verifique seus dados! depth.min é maior que 0 e menor que depth.max.”
  \item sal.max é da classe numeric, 0\textless sal.max\textless 38 e \textless sal.mim? Se não, retornar: “Verifique seus dados! 0\textless sal.max\textless 38 e \textless sal.mim.”
  \item sal.min é da classe numeric, 0\textless sal.min\textless 38 e \textgreater sal.max? Se não, retornar: “Verifique seus dados! 0\textless sal.min\textless 38 e \textgreater sal.max.”
  \item water.temp é da classe numeric? Se não, retornar: “Verifique seus dados! water.temp é da classe numeric.”
  \item wtemp.max é da classe numeric e menor que wtemp.min? Se não, retornar: ,,Verifique seus dados! wtemp.max\textless wtemp.min."
  \item wtemp.min é da classe numeric e maior que wtemp.max? Se não, retornar: ,,Verifique seus dados! wtemp.min\textgreater wtemp.max."
  \item year é da classe numeric? Se não, retornar: ,,Verifique seus dados! state é da classe numeric.”
  \item state é da classe character? Se não, retornar: ,,Verifique seus dados! state é da classe character.”
  \item project é da classe character? Se não, retornar: ,,Verifique seus dados! project é da classe character.”
  \item family é da classe character? Se não, retornar: “Verifique seus dados! family é da classe character.”
  \item genus é da classe character? Se não, retornar: “Verifique seus dados! genus é da classe character.”
  \item species é da classe character? Se não, retornar: “Verifique seus dados! genus é da classe character.”
\end{itemize}


Pseudo-código:
\begin{enumerate}
  \item Entrar com um objeto do tipo dataframe contendo as colunas indicadas acima.
  \item Realizar a verificação dos dados em cada uma das colunas.
  \item Caso sejam definidos os parâmetros ,,state", ,,year" e ,,project", a função ,,if" será utilizada para buscar os dados correspondentes no dataframe.
  \item Encontradas as linhas que contém o parâmetro definido, será criado um sub-dataframe apenas com as amostras que atendem aos parâmetros.
  \item 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.
  \item Se forem definidos os parâmetros, o histograma mostrará apenas as frequências dos dados correspondentes.
\end{enumerate}


Saídas:
\begin{enumerate}
  \item Histogramas com as frequências das espécies, famílias e ordens da amostra (seguindo ou não os parâmetros).
  \item Contagem das espécies, famílias e ordens.
\end{enumerate}


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.

 --- \emph{\href{mailto:diogro@gmail.com}{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!

\section{\texorpdfstring{Trabalho Final}{Trabalho Final}}
\label{sec:trabalho_final}


Arquivo da função rep.fish: \href{media/bie5782/01_curso_atual/alunos/trabalho_final/thamykarlovic/rep1.fish.r}{rep1.fish.r}

Arquivo do help: \href{media/bie5782/01_curso_atual/alunos/trabalho_final/thamykarlovic/help_rep.fish.r}{help\_rep.fish.r}

Base de dados para o help:\href{media/bie5782/01_curso_atual/alunos/trabalho_final/thamykarlovic/sp.teste.csv}{sp.teste.csv}\lstset{frame=single}
\begin{lstlisting}

### 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
   
}

\end{lstlisting}

\lstset{frame=single}
\begin{lstlisting}


  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)

\end{lstlisting}



\end{document}
