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



\section{\texorpdfstring{Mariella Butti}{Mariella Butti}}
\label{sec:mariella_butti}


\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/maributti/mari_emas}


Analista Ambiental do Instituto Chico Mendes de Conservação da Biodiversidade atuando no Centro de Pesquisa e Conservação de Mamíferos Carnívoros. Possui graduação em Ciências Biológicas pela Universidade Federal de Minas Gerais (2008). Tem experiência na área de Zoologia, Geoprocessamento e Gestão de Unidades de Conservação. Atualmente é mestranda em Conservação da Biodiversidade e Desenvolvimento Sustentável pela Escola Superior de Conservação Ambiental e Sustentabilidade - IPÊ/ESCAS.

\begin{center}
\line(1,0){250}
\end{center}



\section{\texorpdfstring{Meus exercícios}{Meus exercicios}}
\label{sec:meus_exercicios}


Página dos meus \href{http://ecor.ib.usp.br/doku.php?id=05_curso_antigo:r2019:alunos:trabalho_final:maributti:exec}{.:exec}

\begin{center}
\line(1,0){250}
\end{center}



\section{\texorpdfstring{Proposta de trabalho final}{Proposta de trabalho final}}
\label{sec:proposta_de_trabalho_final}


\subsubsection{\texorpdfstring{Principal}{Principal}}
\label{sec:principal}


\paragraph{\texorpdfstring{ESTIMATIVAS POPULACIONAIS COM DADOS DE MARCAÇÃO E REAVISTAMENTO FEITO POR CAMERAS-TRAP}{ESTIMATIVAS POPULACIONAIS COM DADOS DE MARCAAO E REAVISTAMENTO FEITO POR CAMERASTRAP}}
\label{sec:estimativas_populacionais_com_dados_de_marcaao_e_reavistamento_feito_por_camerastrap}


 A marcação e recaptura é um método clássico de estimar populações animais. Esse baseia-se na proporção entre indivíduos marcados e não marcados nas recapturas para estimar a população total.\lstset{frame=single, language=rsplus}
\begin{lstlisting}

Y<- M*(t/m)
\end{lstlisting}



 Onde Y= população total a ser estimada;
 M= número de indivíduos marcados e soltos na população;
 m= número de indivíduos marcados na recaptura;
 t = número de indivíduos total recapturado.

O método exige o cumprimento de três premissas básicas:

1. A população deve ser fechada, sem entrada ou perda de indivíduos: Normalmente essa premissa pode ser satisfeita com a redução do tempo de estudo, admitindo-se que o número de indivíduos total e marcados não variou, ou seja, mortes, nascimentos, imigração ou emigração não aconteceram no período do estudo.

2. A identificação da marcação deve ser inequívoca e as marcas não podem interferir na recaptura, ou seja, os animais não podem perder as marcas e nem ter a probabilidade de recaptura afetada pela marcação.
Devido a esse aspecto a recaptura pode ser substituída, com vantagens, pelo reavistamento feito por armadilhamento fotográfico. 

3. Por último, os indivíduos marcados devem se misturar aleatoriamente na população. 
Essa premissa gera problemas nos estudos com animais sociais, uma vez que esses animais se mantêm em bandos a probabilidade de captura de um animal marcado é afetada pela agregação entre eles. E por isso os modelos de estimativa por marcação e recaptura normalmente não aplicados a espécies que formam grupos.
Entretanto, se essa premissa puder ser testada comparando os dados coletados com distribuições uniformes e agregadas, pode-se decidir pelo uso ou não das estimativas populacionais geradas com o método. 

A função deverá estimar as populações de animais \href{media/bie5782/01_curso_atual/alunos/trabalho_final/maributti/camtrap.csv}{usando dados de uma tabela de contagens de indivíduos total e marcados em vídeos obtidos por armadilhamento fotográfico}. A função permite gerar estimativas por simulações de Monte Carlo usando a soma de todos os registros.\lstset{frame=single, language=rsplus}
\begin{lstlisting}

p<- sum(t)/sum(m)
Y<- M*p
\end{lstlisting}



A função também retorna o resultado de um teste de aderência entre a tabela de dados e um modelo binomial a fim de verificar o cumprimento da terceira premissa do método de marcação-reavistamento. Podem ser escolhidos os testes: a) Exato binomial, b) Qui-quadrado ou c) Kolmogorov-Smirnov de acordo com a escolha do usuário. 

\subsubsection{\texorpdfstring{Planejamento da função}{Planejamento da funao}}
\label{sec:planejamento_da_funao}


\subparagraph{\texorpdfstring{Entrada:}{Entrada}}
\label{sec:entrada}


Função mrsocial(marked, n.mark, n.total, n.sim, teste, nc)
\begin{itemize}
  \item \texttt{marked} = número total de indivíduos marcados no estudo (classe: integer, \texttt{marked} \textgreater  0)
  \item \texttt{n.mark} = vetor de número indivíduos marcados no registro  (classe: integer, \texttt{n.mark} \textgreater  0)
  \item \texttt{n.total} = vetor de número de número de indivíduos total no registro (classe: integer, 0 \textless  \texttt{n.total} ≥ \texttt{n.mark}, mesmo comprimento que \texttt{n.mark})
  \item \texttt{n.sim} = número de repetições que serão realizadas nas simulações de Monte Carlo (classe: integer, \texttt{n.sim} \textgreater 0)
  \item \texttt{teste} = tipo de teste de aderência que será realizado (classe: character, \texttt{teste} = c(“binom.test”, “chisq.test”, “ks.test”)
  \item \texttt{nc} = nível de confiança do estudo (classe: numeric, \texttt{nc}  = 0\textless  \texttt{n.total} ≤1 )
\end{itemize}


\subparagraph{\texorpdfstring{Verificando os parâmetros:}{Verificando os parametros}}
\label{sec:verificando_os_parametros}

\begin{itemize}
  \item \texttt{marked} é um número inteiro e maior que 0? Se não escreve: “marked precisa ser um número inteiro e maior que 0”.
  \item \texttt{n.mark} é um número inteiro e maior que 0? Se não escreve: “n.mark precisa ser um número inteiro e maior que 0”.
  \item \texttt{n.total} é um número inteiro e maior que 0? Se não escreve: “n.total precisa ser um número inteiro e maior que 0”.
  \item \texttt{n.total} tem o mesmo tamanho que \texttt{n.mark}? é um número inteiro e maior que 0? Se não escreve: “n.total precisa ter o mesmo número de elementos que n.mark”.
  \item \texttt{n.sim} é um número inteiro e maior que 0? Se não escreve: “n.total precisa ser um número inteiro e maior que 0. O resultado será apresentado usando o padrão 2000 simulações”
  \item \texttt{teste} é igual a “binom.test”, “chisq.test” ou “ks.test”? Se não escreve “o teste indicado não foi encontrado, o resultado será apresentado usando o padrão binom.test”.
  \item \texttt{nc} é maior que zero e menor ou igual a 1? Se não escreve: “o nível de confiança não foi indicado corretamente, o resultado será apresentado usando 0.95.” 
\end{itemize}


\subparagraph{\texorpdfstring{Pseudo-código:}{Pseudocodigo}}
\label{sec:pseudocodigo}

\begin{enumerate}
  \item Cria um objeto \texttt{marked} para guardar o número de indivíduos marcados na população
  \item Cria um objeto \texttt{pop.sim} para receber valores de população da simulação
  \item Cria um objeto \texttt{mark.sim} com mesmo comprimento de \texttt{n.mark}
  \item Cria um objeto \texttt{total.sim} com mesmo comprimento de \texttt{n.total} 
  \item Salva na primeira posição de \texttt{pop.sim} o resultado da estimativa populacional para os dados reais, dado por: \texttt{marked} vezes a somatória de \texttt{n.total}, dividido pela somatória de \texttt{n.mark}
  \item Entra num ciclo for com contador \texttt{}i de 2:\texttt{n.sim} repetições
  \item Sorteia posições aleatórias de 1:length(\texttt{n.mark}) com reposição e salva em um objeto \texttt{boot.indice} 
  \item Reamostra \texttt{n.mark} nas posições sorteadas em \texttt{boot.indic}e e salva em \texttt{mark.sim}
  \item Reamostra \texttt{n.total} nas posições sorteadas em \texttt{boot.indice} e salva em \texttt{total.sim}
  \item Salva \texttt{pop.sim} na posição \texttt{i} o resultado da estimativa populacional para a simulação, dado por: \texttt{marked}vezes a somatória de \texttt{total.sim}, dividido pela somatória de \texttt{mark.sim}
  \item Cria o objeto media.pop que recebe a média das estimativas geradas em 
  \item Cria o objeto \texttt{ic} que recebe os quantis de \texttt{pop.sim} referentes ao nível de confiança \texttt{nc}
  \item Cria o objeto \texttt{sd} que recebe o valor de desvio padrão de \texttt{pop.sim} 
  \item Mostrar \texttt{pop.sim} em um histograma 
  \item Indicar o valor da estimativa de população gerada pelos dados (\texttt{pop.sim}[1]) em uma reta vertical no gráfico e uma curva dos valores acumulados sobre o histograma.
  \item Um controle de fluxo encaminha ao teste de aderência indicado pelo usuário:
\end{enumerate}

\begin{enumerate}
  \item Se teste= “binom.test”,  
  \item Cria o objeto \texttt{aderencia} que recebe o resultado da função \texttt{binom.test()} usando como argumentos: 
  \item x = vetor de sucessos, ou seja, o vetor de individuos marcados nas observações (\texttt{n.mark})
  \item y = vetor de tentativas, ou seja, o vetor de individuos total nas observações (\texttt{n.total})
  \item p= hipótese de probabilidade, ou seja, a soma de individuos marcados dividido pela soma do total de individuos nas observações
  \item alternative=\texttt{”two-sided”}, uma vez que o teste é para confirmar a aderência dos dados ao modelo binomial e confirmar a proporção encontrada pelas observações, 
  \item conf.level= o mesmo indicado pelo usuário em \texttt{ic}
\end{enumerate}

\begin{enumerate}
  \item 	Se teste= “chisq.test”
  \item Item de lista ordenada
  \item Cria um objeto \texttt{binom}, com um vetor de sucesso aleatorizado pelo uso da função \texttt{rbinom()} com os seguintes parâmetros:
  \item n= comprimento do vetor \texttt{n.mark}, ou seja o número de registros da espécie estudada,
  \item size= n.total, ou seja o vetor de tentativas,
  \item prob= probabilidade de sucesso, ou seja, a soma de indivíduos marcados dividido pela soma do total de individuos nas observações
  \item b.	Cria um objeto \texttt{aderencia} que recebe o resultado da função \texttt{chisq.test()}, comparando as observações reais (n.mark) com as observações geradas pelo modelo nulo (\texttt{binom}).
\end{enumerate}

\begin{enumerate}
  \item Se teste = “ks.test” 
  \item Cria um objeto \texttt{aderencia} que recebe o resultado da função \texttt{ks.test()} com os seguintes parâmetros
  \item x = vetor de sucessos, ou seja, o vetor de individuos marcados nas observações (\texttt{n.mark})
  \item y = \texttt{“pbinom”}, ou seja, a função de distribuição cumulativa bionomial,
  \item size= comprimento do vetor \texttt{n.mark}, ou seja o número de registros da espécie estudada,
  \item prob= probabilidade de sucesso, ou seja, a soma de indivíduos marcados dividido pela soma do total de individuos nas observações,
  \item alternative=\texttt{”two-sided”}, uma vez que o teste é para confirmar a aderência dos dados ao modelo binomial e confirmar a proporção encontrada pelas observações
\end{enumerate}


\subparagraph{\texorpdfstring{Saida:}{Saida}}
\label{sec:saida}

\begin{enumerate}
  \item Apresenta os resultados em uma lista contendo valores médio da simulação (\texttt{media}), intervalo de confiança a 95\% (\texttt{ic}), desvio padrão (\texttt{sd}), número de simulações de Monte Carlo realizado (\texttt{n.sim}) e estatísticas do teste realizado (\texttt{aderência}). 
\end{enumerate}


 --- \emph{\href{mailto:aleadalardo@gmail.com}{Alexandre Adalardo de Oliveira} 2019/06/04 15:21}

Parece uma boa proposta, a primeira parte da função faz o cálculo do intervalo de confiança bootstrap para a estimativa do tamanho da população, se entendi corretamente. A segunda parte, parece ok, não gosto muito de testes de aderência, mas parece que conceitualmente está tudo certo, apesar de alguma redundância.  Ambas as propostas são boas e factíveis, pode escolher uma delas \footnote{depois vc. faz a outra!!}. Cuidados apenas que o objeto \texttt{marked} é um criado duas vezes, como argumento e depois como um objeto no pseudo-código, não entendi se foi só uma redundância ou se irá criar o objeto novamente. 

\subsubsection{\texorpdfstring{Plano B}{Plano B}}
\label{sec:plano_b}


Criar uma função geo.t.apply(), que permite aplicar uma outra função a um conjunto de dados matriciais (raster), a partir de um shapefile de polígono e retorna uma tabela de valores por feição atributo(linhas) e raster (coluna).

Os rasters e o shapefile devem estar na mesma pasta, sendo que o shapefile deve estar na raiz e os rasters podem estar em subpastas.

\paragraph{\texorpdfstring{Planejamento da função}{Planejamento da funao}}
\label{sec:planejamento_da_funao2}


\subparagraph{\texorpdfstring{Entrada}{Entrada}}
\label{sec:entrada2}


função: geo.t.apply( dir, padrao, subpastas, shapefile, ID.pol, codificacao.shp, funcao, salvar.como)
adaptado de \url{https://rstudio-pubs-static.s3.amazonaws.com/254726_caf5ac8c774645d890f97a674f6afa33.html}
\begin{itemize}
  \item \texttt{dir}= diretorio dos dados (classe: character)
  \item \texttt{padrao} = texto que identifica os rasters, podendo ser apenas a extensão por exemplo (classe: character)
  \item \texttt{subpastas} = lógico, identifica se os rasters serão buscados apenas na raiz ou também nas subpastas (classe: logico)
  \item \texttt{shapefile} = nome do arquivo shapefile, com a extensão (classe: character)
  \item \texttt{ID.pol} = nome do campo que identifica os polígonos (Classe: character)
  \item \texttt{codificacao.shp} = codificação do arquivo .sph (em geral UTF8)
  \item \texttt{funcao} = função que será aplicada aos dados por exemplo \texttt{mean}, \texttt{sum},\texttt{min}, \texttt{max}, etc
  \item \texttt{salvar.como}= nome e extensão do arquivo que será salvo na saída.
\end{itemize}


\subparagraph{\texorpdfstring{Pseudocódigo:}{Pseudocodigo}}
\label{sec:pseudocodigo2}

\begin{enumerate}
  \item cria objeto \texttt{rasters} com nomes dos rasters no diretório \texttt{dir} localizados de acordo com \texttt{padrao}indicado pelo usuário, podendo ser verificado todo o diretório caso \texttt{subpastas}=TRUE, ou apenas na raiz.
  \item cria objeto \texttt{n.rasters} com o número de rasteres localizados
  \item Cria uma lista \texttt{raster.list} de rasters para processamento
  \item cria objeto \texttt{feicoes}e le o arquivo shapefile, podendo corrigir a codificação de acordo com o informado em codificação.shp
  \item cria objeto \texttt{n.feicoes} com numero de feições no shapefile
  \item cria objeto \texttt{ID.pol} com identificação dos poligonos ou atributo usado para identificar o grupo
  \item Cria dataframe vazio (NA) com \texttt{n.feicoes} linhas e \texttt{n.rasters}+1 colunas
  \item insere \texttt{ID.pol} como primeira coluna de valores no dataframe
  \item insere ,,ID.Pol" e \texttt{rasters} como nome das colunas do dataframe
  \item entra num ciclo for de 1:\texttt{n.rasters}
  \item aplica a funcao indicada ao raster[i] usando funçao extract in(pacote raster)
  \item salva valores relativos a todas \texttt{ID.pol} na coluna i+1 do dataframe
  \item entra em um controle de fluxo que permite que o dataframe gerado seja salvo em formato csv ou txt de acordo com o indicado em \texttt{salvar.como}, essa função é interessante pois a análise dos rasters leva muito tempo e por isso é interessante ter um arquivo de saída independente do código. 
\end{enumerate}


\subparagraph{\texorpdfstring{Saída}{Saida}}
\label{sec:saida2}


Dataframe, ou arquivo .csv contendo o resultado das funções aplicadas aos rasters, por polígono. 

Plus: se for seguir essa proposta gostaria de poder escolher os polígonos por atributo e aplicar as funções também por zona, acredito que um\texttt{raster::aggregate()} mas não sei ainda onde isso ficaria no pseudocodigo.

Parece um bom plano também. Tenho pouco conhecimento de shapefile, mas consegui entender a proposta e o que a função faz. Parece bem útil para síntese de dados de um raster agrupado pelos polígonos do shapefile.  Sugiro o nome \texttt{geo.tapply} (sem o segundo ponto) para ficar claro a analogia com a função \texttt{tapply}
Pode decidir por qualquer uma das propostas, caso seja essa, deixamos de fora o \texttt{aggregate}... nesse momento. 

 --- \emph{\href{mailto:maributti@gmail.com}{Mariella Butti} 2019/06/09 16:30}

Seguem abaixo os códigos da função e respectiva ajuda. Tive que fazer uma alteração quanto aos testes de 
aderência: como o Alê já tinha alertado eles não funcionaram como eu imaginei e por isso incluí uma \texttt{anova}
em substituição ao  \texttt{ks.test} e \texttt{binom.test} e incluí a opção de o usuário realizar um ou ambos os testes.

\subsection{\texorpdfstring{Função ''socialmr()''}{Funao socialmr}}
\label{sec:funao_socialmr}
\lstset{frame=single, language=rsplus}
\begin{lstlisting}

socialmr<-function(marked,  # numero total de individuos marcados no estudo (classe: integer, marked > 0)
                   n.mark,  #vetor de numero individuos marcados no registro (classe: integer, n.mark > 0)
                   n.total, #vetor de numero de numero de individuos total no registro (classe: integer, 0 < n.total e" n.mark, mesmo comprimento que n.mark) 
                   site,    #identificacao da estacao fotografica (cameratrap) (classe: factor)
                   n.sim = 2000, #numero de simulaces que o teste ir? fazer  
                   teste = "ambos", #tipo de teste de aderencia que sera realizado (classe: character, teste = c( binom.test ,  chisq.test ,  ks.test )
                   hist.curv = TRUE,#lógico para insercao da curva de no histograma
                   nc = 0.95)   #nivel de confianca do estudo (classe: numeric, nc = 0< n.total d"1 )

{
  #
  ###........................ Inicio da função................................####
 ###############################
 #  Verificando os parametros  #
 ###############################

if(marked<0|as.integer(marked)!=(marked)) #marked e um numero inteiro e maior que 0? 
  stop(" marked precisa ser um numero inteiro e maior que 0 ") #Se nao para e indica o erro

if(ifelse(sum( n.mark<0|as.integer(n.mark)!=(n.mark))!=0,TRUE,FALSE))#n.mark e um numero inteiro e maior que 0? 
  #O ifelse() foi necessário para transformar o vetor lógico em um único valor
  stop("n.mark precisa ser um numero inteiro e maior que 0") #Se nao para e indica o erro

if(ifelse(sum( n.total<0|as.integer(n.total)!=(n.total))!=0,TRUE,FALSE)) #n.total e um numero inteiro e maior que 0?
  stop("n.total precisa ser um numero inteiro e maior que 0") #Se nao para e indica o erro

if(length(n.total)!= length(n.mark)|ifelse(sum(n.total < n.mark)>0,TRUE, FALSE))#n.total tem o mesmo n? de registros e um total de individuos maior que n.mark?
  stop("n.total é inválido. O argumento precisa ter o mesmo numero de elementos que n.mark e valores maiores ou iguais aos do vetor n.mark") #Se nao para e indica o erro

if(n.sim<0| as.integer(n.sim)!=(n.sim))# n.sim e um numero inteiro e maior que 0?
  {
  n.sim=2000 #reconfigura o valor para o padrao de 2000 simulacoes
  warning("n.total precisa ser um numero inteiro e maior que 0. O resultado sera apresentado usando o padrao 2000 simulacoes.")#Se nao para e indica o erro
   }
  
if(teste != "chisq.test" & teste !=  "anova" & teste != "ambos")# teste e igual a  chisq.test, anova ou ambos?
   {
   teste="ambos" #reconfigura o valor para o padrao ambos
  warning("o teste indicado nao foi encontrado, o resultado sera apresentado usando o padrao ambos") #Se nao indica o erro e alerta para sequencia com o valor -ambos- padrao
   }

if(nc<0|nc>=1) #o nivel de confianca e positivo e menor ou igual a 1? 
  {
  nc="0.95" #Se nao: reconfigura o valor para o padrao 0.95
  warning("o nivel de confianca nao foi indicado corretamente, o resultado sera apresentado usando 0.95")#Se indica o erro e alerta para o uso do valor padrao: 0.95
   }
  
 ##############################################################################
 #  controle de fluxo encaminha ao teste de aderencia indicado pelo usuario   #
 ##############################################################################
  
  #Cria os objetos que receberão os resultados dos testes. 
  ##Caso o teste não seja realizado a seguir o objeto é incluido com valor NULL na lista de resultados, sem retorno de erros.
  anova=NULL #cria o objeto anova
  qui.quadrado=NULL #cria o objeto qui.quadrado
  
if(teste== "anova"|teste== "ambos")# verifica se o usuario solicitou anova como teste de aderencia e encaminha para o teste
{ 
    anova<- anova(lm(n.mark~site)) #realiza anova usando como grupo os sitios de reavistamento. A hipostese testada é que os sitios de reavistamento não tem diferenças entre si (H0)

    if(anova[[5]][1]<(1-nc)) #testa se há agregação entre os dados, ou seja, se H0 não foi rejeitada no nivel de confiança indicado. 
      warning("Anova indicou agregação entre seus dados (p-valor: ", anova[[5]][1],") e a estimativa populacional com o socialmr pode ser incorreta") #apresenta a mensagem de alerta para agregação entre os dados quando p-valor é menor que 1- nivel de confiança indicado
}
  
  if(teste== "chisq.test"|teste== "ambos") #verifica se o usuario solicitou teste qui-quadrado como teste de aderencia e encaminha para o teste.
{
    #cria a tabela de contigencia por sitio de reavistamento para os dados de entrada
    qui.mark<- tapply( n.mark, #objeto com os numeros de individuos marcados
                       INDEX = site, #indexacao pelos sitios para criacao databela de contingencia 
                       sum) # indica a aplicacao da funcao soma ao numero de registros marcados por sitio
    
    #realiza anova usando como grupo os sitios de reavistamento. A hipotese testada é que os sitios de reavistamento não tem diferenças entre si (H0):
    qui.quadrado <- chisq.test(qui.mark,#usa a tabela de contingência gerada acima e considerando p igual para todos os grupos (default do chisq.test()) retorna 
                               simulate.p.value = T, # Faz os cálculos do p-valor por simulações de monte carlo
                               B= n.sim) #faz o mesmo numero de simulações que o usuário configurar 
                               
   
                                
    if(qui.quadrado$p.value <=(1-nc))#testa se há agregação entre os dados, ou seja, se H0 não foi rejeitada no nivel de confiança indicado. 
      warning(" Qui-quadrado indicou agregação entre seus dados (p-valor: ", qui.quadrado$p.value,") e a estimativa populacional com o socialmr pode ser incorreta") #apresenta a mensagem de alerta para agregação entre os dados
      
}
  
 ###################################
 #     Calculo das estimativas     #
 ###################################
  
pop.sim<-rep(NA, n.sim)  #Cria um objeto pop.sim para receber valores de populacao da simulacao
mark.sim<- rep(NA, n.sim)  #Cria um objeto mark.sim com mesmo comprimento de n.mark para receber os valores de marcaco das simulacoes
total.sim<- rep(NA, n.sim) #Cria um objeto total.sim com mesmo comprimento de n.total para receber os valores de total de individuos nas simulaces
pop.sim[1]<-marked*(sum(n.total)+1)/(sum(n.mark)+1) #Salva na primeira posicao de pop.sim o resultado da estimativa populacional para os dados reais, dado por: marked vezes a somatoria de n.total, dividido pela somatoria de n.mark
total.sim[1]<- sum(n.total)# inclui na posicao 1 do vetor o total de individuos observado nos dados
mark.sim[1]<- sum(n.mark) #inclui na posicao 1 do vetor o total de individuos marcados observado nos dados

for (i in 2:n.sim) #Entra num ciclo de repeticoes indicado pelo argumento n.sim
     {
       boot.indice<- sample(1:length(n.mark), replace=TRUE) #Sorteia posicoes aleatorias de 1:length(n.mark) com reposc e salva em um objeto boot.indice
       mark.sim[i]<- sum(n.mark[boot.indice]) #Reamostra n.mark nas posicoes sorteadas em boot.indice e salva em mark.sim
       total.sim[i]<- sum(n.total[boot.indice]) #Reamostra n.total nas posicoes sorteadas em boot.indice e salva em total.sim
       pop.sim[i]<- marked*(total.sim[i]+1)/(mark.sim[i]+1) #Salva pop.sim na posicoo i o resultado da estimativa populacional para a simulacao
      }

media.pop<-mean(pop.sim)#Cria o objeto media.pop que recebe a media das estimativas geradas em
ic.pop<- round(quantile(pop.sim, probs = c(0,nc)+((1-nc)/2), na.rm=T),4) # criando objeto com quantis referentes ao indicado por nc
sd.pop<- sd(pop.sim) #Cria o objeto sd que recebe o valor de desvio padrao de pop.sim
par(mfrow=c(1,1))# ajusta os parametros de grafico para uma janela de 1x1, ou seja todas as plotagens estarão no mesmo quadro
hist(pop.sim, #Mostrar pop.sim em um histograma
     prob= T, #Eixo y com valores de probabilidade 
     xlab= "Populacao estimada", #muda a legnda do eixo x
     ylab= "Probabilidade", #muda a legenda do eixo y
     
     main= "") #retira o titulo
abline(v=pop.sim[1], col="red")#Indicar o valor da estimativa de populacao gerada pelos dados (pop.sim[1]) em uma reta vertical no grafico
    if(hist.curv==TRUE) #verifica se o usuario deseja a plotagem da curva no histograma
    {
      lines(density(pop.sim),col="dark grey")#inclui uma curva de densidade dos valores simulados no histograma
    }

return(list(media.pop=media.pop,
            sd.pop=sd.pop, 
            ic.pop=ic.pop, 
            anova=anova,
            qui.quadrado=qui.quadrado)) #apresenta os resultados em forma de lista contendo a media, o desvio-padrao, o intervalo de confianca das estimativas populacionais ao nivel de confianca indicado. E o resultado do(s) teste(s) de aderencia, que indica se houve mistura aletoria dos animais na populacao


###.......................... Fim da funcao..................................####

}

\end{lstlisting}



\subsection{\texorpdfstring{Ajuda da Função ''socialmr()''}{Ajuda da Funao socialmr}}
\label{sec:ajuda_da_funao_socialmr}
\lstset{frame=single, language=rsplus}
\begin{lstlisting}

socialmr                package:nenhum             R Documentation

~~Estimativa de populacao de animais sociais usando metodo de marcacao e recaptura ~~

Description:

     ~~ A funcao faz a estimativa populacional usando a razao individuos marcados/total de registros da especie. A funcao tambem faz um teste da aderencia dos dados a um modelo de distribuicao binomial com proporcao que indica se as observacoes seguiram um padrao de mistura aleatoria dos animais marcados na populacao - uma premissa do metodo classico de marcacao e recaptura ~~

Usage:

     ~~ mrsocial(marked, n.mark, n.total, site, n.sim = 2000, teste= "anova", hist.curv = TRUE, nc = 0.95)~~

Arguments:

 ~~ 
    marked        numero total de individuos marcados na
                  area de estudo. Deve ser inteiro e > 0.
 
    n.mark        vetor de numero de individuos marcados                    
                  nas amostras. Devem ser inteiros e > 0.
    
    n.total       vetor de numero total de individuos nas                   
                  amostras. Devem ser inteiros e > 0 e de 
                  mesmo comprimento que n.mark.
    
    n.sim         numero de simulacoes de Monte Carlo que                   
                  a funcao faz. Deve ser inteiro e > 0.
	
    site          vetor de identificao dos locais de               
  	          reavistamento (e.g. cameras trap). 
    
    teste         teste de aderencia que sera usado para 
                  verificar se os dados cumprem a premissa 
                  de mistura aleatoria dos animais marcados, 
                  podem ser "chisq.test" ou anova
    
    hist.curv     lógico, indica a insercao de curva de frequencia 
                  dos valores simulados.
    
    nc            nivel de confianca dos testes e simulacoes. 
                  O valor padrao e 0.95.
    
    
    ~~ 

Details:

     ~~ A marcacao e recaptura e um metodo classico de estimar populacoes de animais. O modelo de Petersen baseia-se na proporcao entre individuos marcados e nao marcados nas recapturas para estimar a populacao total, de acordo com a funcao Y<- M*(t+1/m+1). Essa funcao foi corrigida pois as estimativas geradas atraves de razoes tentem a superestimar os valores calculados (Caughley and Sinclair, 1994)
	  	 
	 Onde Y= populacao total a ser estimada; 
		  M= numero de individuos marcados e soltos na populacao; 
		  m= numero de individuos marcados na recaptura; 
		  t = numero de individuos total recapturado.
	 
	 O metodo exige o cumprimento de tres premissas basicas:
	 
	 1. A populacao deve ser fechada, sem entrada ou perda de individuos: Normalmente essa premissa pode ser satisfeita com a reducao do tempo de estudo, admitindo-se que o numero de individuos total e marcados nao variou, ou seja, mortes, nascimentos, imigracao ou emigracao nao aconteceram no periodo do estudo.
	 2. A identificacao da marcacao deve ser inequivoca e as marcas nao podem interferir na recaptura, ou seja, os animais nao podem perder as marcas e nem ter a probabilidade de recaptura afetada pela marcacao. Devido a esse aspecto a recaptura pode ser substituida, com vantagens, pelo reavistamento feito por armadilhamento fotografico.
	 3. Por ultimo, os individuos marcados devem se misturar aleatoriamente na populacao. Essa premissa gera problemas nos estudos com animais sociais, uma vez que esses animais se mantem em bandos a probabilidade de captura de um animal marcado e afetada pela agregacao entre eles. E por isso os modelos de estimativa por marcacao e recaptura normalmente nao aplicados a especies que formam grupos. Entretanto, se essa premissa puder ser testada comparando os dados coletados com distribuicoes uniformes e agregadas, pode-se decidir pelo uso ou nao das estimativas populacionais geradas com o metodo.
	 
	 A ultima premissa e testada por um teste de aderencia que indica se seus dados tem distribuicao binomial com proporcao uniforme entre os sitios de reavistamento usando as estacoes fotograficas como grupos na analise. A hipotese H0 testada nesse passo e que a mistura de animais marcados na populacao foi aleatoria e por tanto nao existe diferenca entre os numeros de individuos marcados nos grupos testados. A hipotese alternativa e que as proporcoes de animais marcados e nao marcados nao e a mesma e portanto ha agregacao entre os 

	 ~~

Value:

     ~ a funcao socialmr retorna um objeto da classe lista contendo:

  media.pop :  valor da medio do tamanho populacional gerado por n.sim simulacoes de Monte Carlo 

  sd.pop : desvio-padrao das simulacoes
  
  c.pop: intervalo de confianca dos tamanhos populacionais gerados (usa como nivel de confianca o valor atribuido a nc)

  anova: resultado do teste anova realizado. Saída como NULL, caso teste="chi.quadrado"
  
  chi.quadrado: resultado do teste anova realizado. Saída como NULL, caso teste="anova"
  
     ...

Warning:

	Essa funcao retorna alertas se os seus dados tiverem a hipotese nula refutada nos testes de agregação das marcações, faça uma   leitura critíca dos resultados dos testes, e não apenas do p-valor. 
	
	Os valores retornados pela funcao sao obtidos por simulacoes e podem diferir de soluções analíticas.
	
	As simulacoes podem demorar um pouco quando configuradas para muitas simulacoes.
	
     ....

Author(s):

     ~~ Mariella Butti ~~

References:

     ~Caughley, G., Sinclair, A.R.E. (1994) Wildlife Ecology an Management. Boston. Blackwell Scientific Publications 334p.~

See Also:

     ~~Os pacotes ''secr'' e ''rmark'' sao muito completos e adequados para analises robustas com dados de camera trap. ~~~

Examples:

     ##Teste da funcao com os dados reais
     a <-read.table("http://ecologia.ib.usp.br/bie5782/lib/exe/fetch.php?media=bie5782:01_curso_atual:alunos:trabalho_final:maributti:camtrap.csv", sep=" ", header =TRUE, as.is=TRUE)
     socialmr(marked=741, n.mark=a$mark_m, n.total = a$total_n, site=a$ID_cam, teste="anova")
     
     ##Teste da função com dados agregados
     a <-read.table("http://ecologia.ib.usp.br/bie5782/lib/exe/fetch.php?media=bie5782:01_curso_atual:alunos:trabalho_final:maributti:camtrap.csv", sep=" ", header =TRUE, as.is=TRUE)
     socialmr(marked=741, n.mark=a$mark_agg, n.total = a$total_n, site=a$ID_cam, hist.curv=FALSE)
     
     ##Teste da função com dados simulados#
     #cria objeto com total de individuos registrados aleatoriamente em 200 registros
     total<- sample(1:10, 200, replace=TRUE) 
     
     #cria objeto com total de individuos marcados em uma populacao onde 35% dos individuos foi marcado
     marcados<-rbinom(n=200, size=total, 0.035)

     #cria o vetor de identificacao dos sitios de reavistamento
     reav.sitio= rep(c("A", "B", "C", "D"), each=50)
     
     #chama a funcao usando os parametros acima, considerando 500 indivíduos marcados na população
     socialmr(marked=500, n.total = total, n.mark= marcados,site= reav.sitio, hist.curv=FALSE)

\end{lstlisting}



\end{document}
