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