====== Federico_Sucunza ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:305466_2061117174485_825569967_n.jpg?200|}} Mestrado em Ecologia (UFJF) Título da minha tese "Fatores que afetam a detectabilidade da toninha (Pontoporia blainvillei) em estudos de estimativas populacionais" orientador Dr. Alexandre N. Zerbini **Proposta A** – Cálculo da distância perpendicular a partir da leitura de ângulos. A amostragem de distâncias é um método largamente utilizado para estimar o tamanho populacional de diversas espécies. Resumidamente, o método consiste na coleta de distâncias entre um observador e o objeto de interesse. A partir da densidade das distâncias amostradas é possível calcular a probabilidade de detectar o objeto dada uma distância X e, assim, estimar a densidade de objetos na área de estudo. Embora o método utilize distâncias perpendiculares nas operações matemáticas, ao percorrer transecções lineares, frequentemente o observador terá que coletar informações que serão utilizadas para calcular a distância radial, a partir da qual será calculada a distância de interesse (perpendicular). Este tipo de informação é largamente coletada em navio de pesquisa onde se pretende estimar o tamanho populacional de mamíferos marinhos. Por meio do uso de binóculos reticulados, o observador determina o número de retículos entre o horizonte e o animal. Com o número de retículos e a altura do observador é possível calcular a distância radial. Com esta informação e com o ângulo do avistamento calcula-se a distância perpendicular. **Objetivo da proposta**: criar uma função para calcular a distância radial, utilizar essa informação para calcular a distância perpendicular, e gerar um histograma com as distâncias perpendiculares calculadas. O histograma serve como uma primeira análise dos dados coletados, possibilitando encontrar algumas falhas da coleta de dados. A distância radial será calculada pela fórmula proposta por Lerczak e Hobbs, 1998 (//Calculating sighting distances from angular readings during shipboard, aerial, and shore-based marine mammals survey. Marine Mammal Science 14, 590-599//). **Proposta B** – Georreferenciamento a partir de informações de distância. Criar uma função para georreferenciar avistamententos feitos durante trabalhos de amostragem por distância por meio de transecções lineares. Objetiva-se aqui refinar informações coletadas durante trabalhos de transecção lineares e, assim, gerar informações mais robustas para estudos de modelagem ecológica. Federico, sua proposta A parece interessante e está muito bem apresentada. Lembre-se apenas de informar cuidadosamente no HELP quais os dados que a função precisa para trabalhar (número de retículos, altura do binóculo, etc) e o formato no qual estes dados tem que estar. O plano B está um pouco mais vago, mas acho que você pode seguir com o A tranquilamente. ----//[[danilomuniz@usp.br| Danilo G. Muniz]]// Obrigado Danilo. Vou trabalhar na proposta A. ** Código da Função para a Proposta A ** - Cálculo da distância perpendicular a partir da leitura de ângulos. dist.perp <- function(dad, binoc, rmNA=FALSE) { if(is.null(dad$ret)) # verifica se a tabela de dados nao posui uma coluna chamada 'ret' { stop("Sua tabela de dados deve conter uma coluna chamada 'ret' referente ao número de retículos do avistamento") # para a funcao e mostra um aviso do porque a funcao parou } if(is.null(dad$altura)) # verifica se a tabela de dados nao possui uma coluna chamada 'altura' { stop("Sua tabela de dados deve conter uma coluna chamada 'altura' referente a altura da plataforma de observação") # para a funcao e mostra um aviso do porque a funcao parou } if(is.null(dad$angulo)) # verifica se a tabela de dados nao possui uma coluna chamada 'angulo' { stop("Sua tabela de dados deve conter uma coluna chamada 'angulo' referente ao ângulo entre o objeto detectado e a linha de trasecção") # para a funcao e mostra um aviso do porque a funcao parou } if(rmNA==TRUE) # se o usuario quiser remover linhas com NA { dados <- (na.omit(dad)) # cria um novo objeto com as linhas de 'dad' sem NA n.NA <- length(dad$altura) - length(dados$altura) # calculando o numero de linhas removidas cat("\t foram excluídas", n.NA, "linhas de sua tabela de dados\n") # lanca um aviso sobre o numero de linhas que foram removidas dad <- dados # cria um novo objeto sem NA que sera utilizado nas formulas } if(binoc=="FJ.7X50") # se o usuario utilizar o modelo de binoculo fujinon 7X50 { ab <- 0.00498117 # cria um objeto com o angulo reticular do binoculo fujinon 7X50 } if(binoc=="BE") # se o usuario utilizar o modelo de binoculo "Big Eye" 25X { ab <- 0.00135438 # cria um objeto com o angulo reticular do binoculo de alto alcance "Big Eye" 25X } ############################################# ### INICIO DO CALCULO DA DISTANCIA RADIAL ### ############################################# h <- dad$altura # cria um objeto 'h' = altura da plataforma de observacao ret <- dad$ret # cria um objeto 'ret' = numero de reticulos angulo <- dad$angulo # cria um objeto angulo angulo.m90 <- angulo>90 # cria um objeto temporario onde valores maiores que 90 graus serao verdadeiros angulo[angulo.m90] <- 360 - angulo[angulo>90] # tornando todos as mediadas de angulo entre 0 e 90 graus, necessario para padronizar aestimativa da distancia perpendicular ang.r <- (((2*pi)/360)*angulo) # cria um objeto com os valores dos angulos em radianos Re <- 6.371*(10^6) # cria um objeto com o raio da terra em metros teta <- rep(NA, length(h)) # cria um objeto para colocar os valores do angulo teta alfa <- rep(NA, length(h)) # cria um objeto para colocar os valores do angulo alfa beta <- rep(NA, length(h)) # cria um objeto para colocar os valores do angulo beta Do <- rep(NA, length(h)) # cria um objeto para colocar os valores da linha da avistagem delta <- rep(NA, length(h)) # cria um objeto para colocar os valores do angulo delta Dr <- rep(NA, length(h)) # cria um objeto para colocar os valores da distancia radial for(n in 1:(length(h))) # loop para gerar os valores para os objetos criados acima { teta[n] <- ab*ret[n] # calcula o angulo teta a partir do numero de ret do avistamento e coloca no objeto 'teta' alfa[n] <- atan((sqrt((2*h[n]*Re)+(h[n]^2)))/Re) # calcula o angulo alfa e coloca no objeto 'alfa' beta[n] <- (pi/2) - alfa[n] - teta[n] # calcula o angulo beta e coloca no oebjeto 'beta' Do[n] <- ((Re+h[n]) * cos(beta[n])) - sqrt((((Re+h[n])^2) * (cos(beta[n])^2)) - ((2*h[n]*Re) + (h[n]^2))) # calcula a linha do avistamento e coloca no objeto 'Do' delta[n] <- asin(sin(beta[n]) * (Do[n]/Re)) # calcula o angulo delta e coloca no objeto 'delta' Dr[n] <- delta[n]*Re # calcula a distancia radial e coloca no objeto 'Dr' } #################################################### ### INICIO DO CALCULO DA DISTANCIA PERPENDICULAR ### #################################################### Dp <- rep(NA, length(dad$altura)) # cria um objeto para colocar os valores da distacia perpendicular for(m in 1:(length(dad$altura))) # loop para gerar os valores da distancia perpendicular { Dp[m] <- Dr[m]*sin(ang.r[m]) # calcula a distancia perpendicular e coloca no objeto 'Dp' } hist(Dp, main="Distâncias Perpendiculares", xlab="Dist. Perp. (m)", ylab="") # gera um histograma com o valor das distancias perpendiculares calculadas # colocando legenda no eixo X e titulo do grafico return(Dp) # retorna os valores das distancias perpendiculares calculadas } ** Texto de Ajuda para Função dist.perp ** dist.perp package:nenhum R Documentation Calcula a distância perpendicular e gera um histograma com estas distâncias. Descrição: Esta função calcula a distância perpendicular entre um objeto de interesse e a linha de transecção em estudos que utilizam os métodos de transectos lineares. Adicionalmente, a partir das distâncias perpendiculares calculadas, um histograma é gerado para uma análise preliminar do dados. Forma de uso: dist.perp(dad, binoc, rmNA=FALSE) Argumentos: dad um data.frame contendo os valores a serem analisados. binoc indica o modelo do binóculo utilizado na coleta de dados. O usuário pode escolher entre dois tipos de binóculo: "FJ.7X50" - fujinon 7X50 "BE" - big eye 25X Este argumento não possui um modelo padrão. rmNA valor lógico que indica se as linhas com valores faltantes NA deve ser retiradas. O pradrão é FALSE. Note que TRUE irá remover toda a linha que contenha NA em qualquer uma das colunas. Assim, é indicado que o usuário somente utilize rmNA=TRUE caso sua tabela de dados possua NAs nas colunas 'altura', 'ret' ou 'angulo'. Detalhes: Esta função possui alguns pré-requisitos acerca da tabela de dados. Sua tabela de dados deve ser um data.frame contendo no mínimo as seguintes colunas: altura número referente à altura da plataforma de observação em metros para cada avistamento. ret número referente ao número de retículos para cada avistamento. angulo número referente ao ângulo entre a linha de transecção e o objeto detectado para cada avistamento. A escolha do modelo do binóculo utilizado tem implicação direta na distância perpendicular calculada, uma vez que os valores de base utilizados nos cálculos levam em consideração o ângulo entre os retículos do binóculo, o qual varia entre os modelos de binóculo. Os valores utlizados nesta função referem-se ao dois modelos de binóculo (Fujinon 7x50 e Big Eye 25x) mais utilizados em trabalhos com mamíferos marinhos. Valores: dist.perp retorna um vetor contendo as distâncias perpendiculares calculadas em metros para cada avistamento. Atenção: Caso a altura da plataforma de observação não esteja em metros, as distâncias perpendiculares calculadas estarão erradas. Nota: Esta função utiliza o valor do retículo e a altura da plataforma de observação para calcular a distância radial entre o observador e o objeto de interesse segundo o método proposto por Lerczak & Hobbs (1998). Esta distância radial e o ângulo entre o objeto detectado e a linha de transecção são utilizados para calcular a distância perpendicular do objeto à linha de trasecçao (Buckland et al. 2001). Autor(s): Federico Sucunza fsucunza@gmail.com Referências: Lerczak, J.A. & Hobbs, R.C. 1998. Calculating sighting distances from angular readings during shipboard, aerial, and shore-based marine mammals survey. Marine Mammal Science 14:590-599. Lerczak, J.A. & Hobbs, R.C. 1998. Errata - Calculating sighting distances from angular readings during shipboard, aerial, and shore-based marine mammals survey. Marine Mammal Science 14:903. Buckland, S.T., Anderson, D.R., Burnham, K.P., Laake, J.L., Borchers, D.L. & Thomas, L. 2001. Intruduction to Distance Sampling: Estimating abundance of biological populations. Oxford University Press, Oxford, U.K. Exemplos: ## Formato mínimo necessário para que a função funcione corretamente dad <- data.frame(altura=c(10, 10, 10, 10, 10), angulo=c(306, 343, 17, 70, 306), ret=c(0.5, 0.1, 0.1, 0.1, 0.3)) ## Um exemplo utilizado o modelo de binóculo fujinon 7X50 dist.perp(dad, binoc="FJ.7X50", rmNA=FALSE) ## Um exemplo utilizando o modelo de binóculo big eye 25X dist.perp(dad, binoc="BE", rmNA=FALSE) {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:trb.final.federico_sucunza.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:ajuda_func_dist.perp.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:dados.ex.csv|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:report_iwc_-_franciscana_2012.pdf|}} [[.:exec]] {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:ex4.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:ex5.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:ex7.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fsucunza:ex9.2.r|}}