O movimento de um organismo é definido como uma mudança na localização espacial do indivíduo no tempo, impulsionado por processos que atuam em múltiplas escalas espaciais e temporais. Os animais se movem motivados pela necessidade de executar atividades em diferentes tipos de habitat em um determinado intervalo de tempo. Um passo fundamental na Ecologia do Movimento é a descrição dos padrões de movimentação e a identificação de seus impulsores proximais e distais, a partir de dados de telemetria. Com o cálculo do ângulo de giro médio e a auto-correlação de velocidade e direção podemos fazer inferências sobre os estados comportamentais. Movimentos altamente direcionais possuem ângulos de giro próximos a 0 ° e são consistentes a longas distâncias, provavelmente representando trânsitos através de habitat ou entre habitats distintos, ou seja, movimentos de trânsito. Movimentos localizados, mais variáveis e com uma taxa mais alta de ângulos de virada agudos, próximos a 180°, representam um comportamento de busca e exploração, consistindo em movimentos mais convolutos.
Legenda da imagem: a
→ movimentos direcionais; b
→ movimentos localizados
Essa função visa, a partir de dados de localização, estabelecer estados comportamentais para cada trajetória de diferentes indivíduos e associá-los ao gênero dos animais marcados com transmissores. Testando, a hipótese que propõe diferenças nos padrões de movimentação ou atividade entre machos e fêmeas.
estcomp (dados
,coord
, date
, id
,gen
, sistcoord
= CRS()).
dados
→ data frame com os dadoscoord
→ coluna com coordenadas de localização (latitude e longitude).date
→ coluna com informações de dia e horário de cada localização #já que dados de telemetria as localizações obtidas são tipicamente dependentes da localização anterior e por isso espacial e temporalmente autocorrelacionadas.id
→ identificação de cada animal.gen
→ coluna com os gêneros dos animais.sistcoord
→ sistema de coordenadascoord
) == “numeric”.gen
) == “character”. coord
) == length(gen
).na.omit
) e colocar um warning
date
) == POSIXct
traj
← as.ltraj(xy = coord
, date= date
, id= id
, burst= id
) # transformando em trajeto.traj
) #plotar a trajetória. traj.df
← ld(traj
) # a função “ld” converte ltraj em dataframe para melhor manejo dos pontos.dist
= distancia de cada passo. rel.angle
= angulo relativo (radianos), angulo entre um passo e outro (mudança de direção).dt
= tempo entre localizações sucessivas (em segundos).traj.df
$vel
← (dist/dt)*3.6 #Calcular a velocidade
entre um ponto e outro.média
de velocidade
das fêmeas e a média de velocidade
dos machos.média
dos ângulos
de machos e fêmeas.“p-valor”
Comentários Pamela Santana
Sobre sua proposta 2: ela tá bem bacana também! Tem alguns pontos pra pensarmos:
i) No pseudo-código o que são os seus dados
? coord
é um vetor? date
é um vetor também? E a entrada de dados das coordenadas, será em minuto e segundo?
ii) Você faz alguns testes lógicos (class(coord) == “numeric”
) e se a resposta for FALSE?
iii) Ao plotar a trajetória, você faz isso para vários indivíduos? Essa função seria para testar sempre a variação intra-específica? A inter-específica não?
iv) Para retornar o dataframe com os valores de velocidade, distância do passo, ângulo, você precisa criar este dataframe. Você cria traj.df
, mas este objeto não tem a distancia de cada passo e o ângulo.
v) Como você vai calcular o seu p-valor?
Ambas as suas propostas estão legais! Tem pequenos pontos em que tem uma divergência entre o que se obtém e o objetivo da função ou o que se calcula na função, mas tudo são coisas que podem ser alinhadas rapidinho. Mas é importante inserirmos controle de fluxo nas suas propostas. Eu seguiria com o plano A.
Qualquer dúvida que você tenha, me escreva (pcsantana@ib.usp.br).
Um abraço!