Índice
O Curso
Material de Apoio
Área dos Alunos
Visitantes
Forum
notaR
Área Restrita
Cursos Anteriores
IBUSP
Outras Insitutições
IBUSP
Outras Insitutições
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.
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)