Je souhaite analyser les déplacements et l'utilisation dans l'espace d'individus de tourterelles équipés de GPS.
J'ai utilisé différents packages pour calculer des home-ranges et analyser des déplacements, mais je souhaite maintenant analyser les clusters principaux de points et les départs/arrivées au sein de ces clusters. Le package 'recurse' me permet parfaitement adapté. Je me suis basée sur les deux liens suivants : https://cran.r-project.org/web/packages/recurse/vignettes/recurse.html ; https://cran.r-project.org/web/packages/recurse/recurse.pdf
Cependant, dès lors que j'essaye d'utiliser l'objet getRecursions (qui permet de définir ces principaux clusters) quelque soit le métrage du rayon pour un cluster que je décide (20m dans l'exemple), cela ne fonctionne pas. En analysant les stats créées par getRecursions, je vois que j'ai un problème avec les dates et heures, qui sont pourtant correctement formatées (voir entrancetime//exittime et timesincelastvisit, en négatif...).
En comparant avec le jeu de données fourni dans le package (data(martin)), je me demande si mon problème n'est pas que mes données ne sont pas régulières mais c'est un peu n'importe quoi (les relevés GPS étaient faits entre toutes les 30min et toutes les 4h, avec des écarts plus importants à certains moments, voir des jours entiers où les données manquent).
Je pense donc qu'il faudrait que je régularise mes données, en créant des rows toutes les 30min (et arrondies!), avec des coordonnées manquantes si cela ne pose pas de problème. J'ai réussi à le faire lors de l'analyse des déplacements avec un objet de classe ltraj, mais je ne sais pas le faire dans le cas présent.
Ci-dessous mes lignes de codes et résultats correspondants, qui montrent bien mes problèmes.
En vous remerciant d'avance !
Elsa
Code : Tout sélectionner
#packages utilisés :
library(fields)
library(scales)
library(recurse)
library(sp)
#gps.data est mon jeu de données de base, je sélectionne un individu
gps.data <-subset(gps.data, id=="2222")
#après c'est du formatage
coordinates(gps.data) <- ~ Longitude + Latitude
gps.data$Heure <- strptime(gps.data$Heure, format = "%H:%M:%S")
gps.data<-as.data.frame(gps.data)
gps.data<-gps.data[,-3]
colnames(gps.data) <- c("x", "y", "t", "id")
head(gps.data)
La tête de mon data_frame
x y t id
1 3.46407 51.51501 2023-08-09 10:14:00 2222
2 3.46162 51.51962 2023-08-09 15:44:00 2222
3 3.46166 51.51940 2023-08-09 16:14:00 2222
Code : Tout sélectionner
gps.data_visit = getRecursions(gps.data, radius=20)
summary(gps.data_visit$revisits)
Summary :
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 1 1 1 1 1
Code : Tout sélectionner
head(gps.data_visit$revisitStats)
id x y coordIdx visitIdx entranceTime
1 2222 3.46407 51.51501 1 1 2023-08-09 10:14:00
2 2222 3.46162 51.51962 2 1 2023-08-09 10:14:00
3 2222 3.46166 51.51940 3 1 2023-08-09 10:14:00
4 2222 3.46177 51.51943 4 1 2023-08-09 10:14:00
5 2222 3.47107 51.52108 5 1 2023-08-09 10:14:00
6 2222 3.47029 51.52080 6 1 2023-08-09 10:14:00
exitTime timeInside timeSinceLastVisit
1 2023-08-09 04:08:00 -6.1 NA
2 2023-08-09 04:08:00 -6.1 NA
3 2023-08-09 04:08:00 -6.1 NA
4 2023-08-09 04:08:00 -6.1 NA
5 2023-08-09 04:08:00 -6.1 NA
6 2023-08-09 04:08:00 -6.1 NA