Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2018:alunos:trabalho_final:thiagorodriguess:start

Thiago Ferreira Rodrigues

servletrecuperafoto.jpg

Sou aluno de doutorado pela PG em Ecologia Aplicada da ESALQ/USP.

O título da minha tese é: “A persistência de tatus (Cingulata: Dasypodidae) em paisagens do Cerrado dominadas por agrossilvicultura”. Meu orientador é o Prof. Dr. Adriano Garcia Chiarello.

Email: thiagorodriguess@usp.br - Meu Lattes


I. Meus Exercícios

Link para a página contendo meus exercícios: Exercícios


II. Trabalho Final


II.I Plano A: espacialização e análise de dados de ocorrência de espécies

Contextualização:

Sabe-se que uma estratégia eficaz para lidar com a crescente crise da biodiversidade é acessar dados e informações disponíveis de forma aplicada. Dados primários da biodiversidade têm um papel fundamental neste processo e estão cada vez mais acessíveis de forma livre, compilados em banco de dados, sobretudo via “datapaper” (e.g. Hasuí et al. 2018, Gonçalvez et al. 2018). Saber como organizar e utilizar dados de distribuição e ocorrência de espécies é essencial, portanto, para identificar lacunas de conhecimento e direcionar decisões.

A proposta da função consiste em espacializar a distribuição de registros de espécies a partir de um data.frame com três colunas (latitude, longitude, espécies), gerando diferentes mapas do Brasil com diferentes tamanhos de grid definido pelo usuário. Além disso, a função tem por finalidade quantificar estudos e espécies por célula do grid e plotar essas informações em mapas individuais. Por fim, gerar uma lista com dois níveis: a) data.frame(info_mapa) com cinco colunas contendo informações extraídas dos mapas; b) data.frame(lacuna_de_conhecimento) com cinco colunas contendo a quantidade de células com estudo, quantidade de células sem estudo, probabilidade da área coberta com estudo, valor máximo de estudo encontrada e valor máximo de riqueza encontrada.

Planejamento da função:

Entrada: biomap (dados, grid.size)

  • dados = data.frame contendo 3 colunas
    • long = longitude em graus decimais (classe: numeric)
    • lat = latitude em graus decimais (classe: numeric)
    • especie = nome das espécies (classe: character)
  • grid = tamanho das células do grid em graus de latitude e longitude (classe: integer 1 ≤ grid ≤ 10)

Verificando parâmetros:

  • Objeto dados é um data.frame? Se não, escreve: “precisa ser um data.frame com 3 colunas de acordo com o indicado)”
  • No argumento grid o valor é ≥ 1 e ≤ 10? Se não, escreve: “grid deve estar no intervalo 1 ≤ grid ≤ 10”

Pseudocódigo:

  1. Leitura dos pacotes “raster”, “sp”
  2. Cria objeto brasil (shapefile; necessário internet)
  3. Cria objeto dados com a leitura do data.frame
  4. Cria objeto coords com as coordenadas longitude e latitude do data.frame
  5. Mostra para o R que se trata de coordenadas
  6. Verificação e atribuição de projeção às coordenadas
  7. Plota o mapa do Brasil com as coordenadas dos locais de estudo (1º dispositivo gráfico e produto)
  8. Cria objeto grid (classe: raster)
    1. Atribui a resolução (tamanho) do grid
    2. Atribui a mesma projeção do Brasil ao grid
    3. Corta o grid apenas para a região do Brasil
    4. Une grid ao mapa do Brasil
  9. Quantifica quantidade de estudos por célula do grid
  10. Adiciona a quantidade de estudos às células do grid
    1. Plota o mapa do Brasil com o grid e a quantidade de estudos por célula do grid (2º dispositivo gráfico e segundo produto)
  11. Quantifica quantidade de espécies únicas dentro de cada célula do grid
  12. Adiciona a quantidade de espécies (riqueza) às células do grid
    1. Plota o mapa do Brasil com o grid e a riqueza de espécies por célula do grid (3º dispositivo gráfico e terceiro produto)
  13. Cria data.frame info_mapa com todas as informações quantificadas nos mapas gerados.
  14. Cria data.frame lacuna_de_conhecimento com a quantidade de células com e sem estudo.
  15. Cria lista resultado com os dois data.frames acima e retornando e disponibilizando objeto ao usuário.

Saída:

  • Mapa do Brasil com a distribuição dos locais de estudo
  • Mapa do Brasil com a quantidade de locais de estudo por célula
  • Mapa do Brasil com a riqueza de espécies por célula
  • Uma lista com dois níveis:
    • data.frame = todas as informações quantificadas nos mapas gerados
    • data.frame = quantidade de células com e sem estudo.

Produto gráfico esperado para mapas 2 e 3:

Figura 4 - Bernard et al. 2010 - bernard_2010.pdf

bernard_fig4.png

Referências:

GONÇALVES, F. et al. 2018. ATLANTIC MAMMAL TRAITS: a data set of morphological traits of mammals in the Atlantic Forest of South America. ECOLOGY 99: 498-498.

HASUI, E. et al. 2018. ATLANTIC BIRDS: a data set of bird species from the Brazilian Atlantic Forest. ECOLOGY 99: 497-497.

BERNARD, E., AGUIAR, L.M.S. & MACHADO, R.B. 2010. Discovering the Brazilian bat fauna: a task for two centuries? Mamm. Rev 41: 23-39.

Comentários Lucas Teixeira

Oi, Thiago!
Meu nome é Lucas e sou um dos monitores responsáveis por dar uma olhadinha nas suas propostas de trabalho final aqui do curso.

Sobre sua proposta A, de forma geral, confesso que gostei bastante. Ela possui um bom controle de fluxo, uma aplicabilidade interessante e vai dar um certo trabalhinho, pelo que me parece, fazendo você exercitar tanto coisas aprendidas no curso, quanto coisas extras.
A priori, só tenho duas dúvidas no que se refere aos objetos que sua função retornará:
1. Ela irá retornar 3 mapas diferentes, um para cada informação (distribuição dos locais de estudo, quantidade de locais de estudo e riqueza de espécies por célula) ou será um mapa com as três informações? No exemplo que você deixou, não ficou muito claro em que tipo de mapa ele se enquadra.
2. Sobre os níveis da lista, a quantidade de células cheias e vazias se referirão a que? Células com ou sem espécies, com ou sem estudos…? E como será feita a identificação das células do grid?

Qualquer coisa, só mandar mensagem!

Abraços,
Lucas

Comentários Thiago F Rodrigues

Oi, Lucas!

Agradeço pelo retorno e por todas as considerações. Seguirei com essa proposta, conforme sugerido.

Respondendo às perguntas:
1. Pensei em fazer 3 mapas diferentes. O primeiro seria um mapa apenas contendo “pontos” com a quantidade de estudos sem nenhum grid. Os outros dois mapas seriam parecidos com o mapa do exemplo, mas contendo diferentes informações (quantidade de locais de estudo e riqueza de espécies por células, respectivamente).

2. A princípio, pensei em contar as células com estudos (células cheias) e sem estudos (células vazias). Assim, teria uma noção da distribuição de estudos ao longo do Brasil. Quanto a identificação das células do grid, pensei em incluir um ID para cada célula, mas não sei muito bem ainda como farei isso.

Novamente, muito obrigado

Abraços,

Comentários Lucas Teixeira

Oi, Thiago!
Obrigado pela resposta!
Cara, eu acho que sua proposta está pronta para ser executada! Só pediria que, então, deixe claro o que sua função está retornando na lista (talvez incluindo uma explicação sobre o que tais valores se referem, no caso das células) e no help dela.
E sobre o ID das células, talvez uma forma intuitiva de você fazer isso seria como temos no Excel, por exemplo, em que as colunas são letras e as linhas são números (tipo batalha naval). Assim você cria um sistema de coordenadas para direcionar seu usuário a encontrar a célula em que ele está interessado. Mas lembre-se que a quantidade de colunas e linhas que você terá será função do tamanho do grid selecionado pelo usuário, então você tem que nomear suas colunas e linhas em função desse argumento.

Agora, só uma coisa que acabou de vir à mente: relendo sua proposta, o que me ficou é que seu usuário deverá inserir no argumento grid um valor entre 1 e 5, em graus decimais. Não seria mais interessante ele inserir em alguma unidade de medida de distância, tipo Km? Acho que isso pode ser mais fácil, porque é mais fácil pensar em áreas/quadrados com estudo e/ou espécies medidos em Km ou m do que em graus decimais… O que acha?

Qualquer coisa, manda um email!
Abraços,
Lucas

Oi Lucas.. Thiago por aqui.. Novamente obrigado pelas dicas, me ajudaram bastante. Conforme sugerido, tentei deixar mais claro o que a função retorna como lista. Em relação à escolha do tamanho do grid, optei por continuar utilizando graus de latitude e longitude, pois é bem comum utilizar essa medida para construção de grids, mas expliquei no help quanto 1° grau lat/long representa em km. =]

Abraços, Thiago



II.II Plano B: diferenciação e classificação de tocas de tatus (Mammalia: Dasypodidae)

Contextualização:

Sinais deixados por mamíferos, como rastros, trilhas, tocas, arranhões, fezes, pelos entre outros podem ser uma ferramenta importante para a identificação de espécies, principalmente em relação àquelas de difícil observação na natureza. O grupo dos tatus é um exemplo de espécies com baixa probabilidade de detecção/observação na natureza. Contudo, possuem o hábito de construírem tocas. Assim, desenvolver metodologias eficazes e rápidas que facilitem na identificação dos tatus é essencial para aumentar o conhecimento deste grupo, há tempos negligenciado, sobretudo a respeito do papel ecossistêmico desenvolvido pelas diferentes espécies de tatus em diferentes contextos de paisagens.

p074_53.jpg imagem1.png

A proposta da função consiste em diferenciar as espécies de tatus a partir de cinco medidas (altura da toca, largura da toca, ângulo de inclinação, profundidade e azimute) de forma automatizada.

Para o cálculo da excentricidade da toca será utilizado o seguinte cálculo: E = c/a

e.gif

Para o cálculo do perímetro da toca será utilizado o seguinte cálculo:

perimetro-elipse.jpg toca2.gif

Planejamento da função:

Entrada: tatu.ID (altura, largura, angulo, profundidade, azimute)

  • altura = altura da toca em cm (classe: numeric)
  • largura = largura da toca em cm (classe: numeric)
  • angulo = angulo de inclinação da toca em graus (classe: numeric)
  • profundidade = profundidade da toca em cm (classe: numeric)
  • azimute = angulo azimute da toca em graus (classe: numeric)

Verificando os parâmetros:

  • Todos os objetos foram inseridos? Se não, escreve: “Objeto altura e largura são obrigatórios”
  • Todos os objetos possuem a mesma quantidade de elementos? Se não, escreve: “é preciso entrar objetos com a mesma quantidade de dados”
  • altura é um número decimal > 0? Se não, escreve: “altura precisa ser um número decimal > 0?
  • largura é um número decimal > 0? Se não, escreve: “largura precisa ser um número decimal > 0?
  • profundidade é um número decimal > 0? Se não, escreve: “profundidade precisa ser um número decimal > 0?

Pseudocódigo:

  1. Cria data.frame resultado1 com altura NAs e largura NAs.
  2. Função for() para o cálculo da excentricidade.
  3. Função for() para o cálculo do perímetro.
  4. Colocar resultado das etapas 2 e 3 no resultado1.
  5. Utiliza a função if() para selecionar dados calculados em intervalos específicos de cada uma das espécies.
  6. Realiza uma ANOVA para testar diferença das tocas relativas a cada espécie.
  7. Cria objeto resultado2 com a quantidade de tocas por espécie.

Saída:

  • Um data.frame com espécie[,1], quantidade de tocas por espécie [,2].
  • Um vetor com quantidade de tocas não identificadas.

Referências:

ABBA A.M, VIZCAÍNO S.F, CASSINI, M.H. 2007. Effects of land use on the distribution of three species of armadillos in the Argentinean Pampas. J Mammal. 88: 502–507.

CARTER, T.S.; ENCARNAÇÃO, C.D. 1983. Characteristics and use of burrows by four species of armadillos in Brazil. Journal of Mammalogy 64(1): 103-108.

TROVATI, R. G. 2015. Differentiation and characterization of burrows of two species of armadillos in the Brazilian Cerrado.Revista Chilena de Historia Natural 88(19): 1-8.

Comentários Lucas Teixeira

Oi, Thiago!

Sobre sua proposta B, eu gostei muito dela também; está bem apresentada e atende aos objetivos do trabalho. Contudo, confesso que achei bastante específica: apesar de interessante, ela acaba sendo meio útil “só” para a galera que estuda tatus, então recomendo você investir na proposta A. Caso queira investir nessa função de qualquer forma, me fala, daí a gente pensa como tornar ela menos específica.

Abraços,
Lucas

Comentários Thiago F Rodrigues

Oi, Lucas!

Agradeço pelo retorno sobre o plano B. Achei ela um pouco específica também. Talvez para o pessoal que trabalha com inventário de mastofauna pudesse ter alguma utilidade, mas mesmo assim trata-se apenas de um grupo. Se extrapolasse a idéia para identificação de pegadas de mamíferos, baseando-se em algumas métricas teria um alcance mais geral e mais útil, talvez. =]

No entanto, pretendo desenvolver essa ferramenta, num futuro próximo, como um produto da minha tese e talvez incluir mais animais com o hábito de construírem tocas. Se tiver alguma sugestão/consideração também para essa função, ficarei muito feliz e me ajudará bastante futuramente

Novamente, muito obrigado!

Abraços,

Comentários Lucas Teixeira

Oi, Thiago!

Sim, acho que sua ideia de ampliar sua função para uso em outros estudos com mastofauna é bastante legal. Como pegadas são bastante usadas, talvez você possa dar esse argumento para ela: o que está sendo analisado é toca? Então seguir caminho A; o que está sendo analisado é pegada? Então seguir caminho B. Mas também talvez seja interessante incluir pelos? Se sim, o que está sendo analisado é pelo? Então seguir caminho C…
Para cada “caminho”, você coloca as características a serem analisadas, como você fez para as tocas de tatus. No caso de pegadas, número de dígitos, presença de unhas, tamanho da almofada, essas coisas… Se for pelo, padrão de cutícula, medula, comprimento…E assim por diante.

Se você achar isso possível, interessante para você, fica aí a ideia para sua tese.
Como alguém que trabalha com fofofauna, eu adoraria uma função dessa! haha

Qualquer coisa, só mandar mensagem!

Abraços,
Lucas

Link para a página da minha função: FUNÇÃO "biomap"
Link para a página de ajuda da minha função: HELP - FUNÇÃO "biomap".

Arquivos:
Arquivo para rodar o exemplo1 da função: hasui_et_al_2018_subsetdata.csv
Código da função “biomap”:biomap.r
Help da função “biomap”:biomap_help.txt


05_curso_antigo/r2018/alunos/trabalho_final/thiagorodriguess/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)