--- title: "Summarising Tracking Data" author: "Matt Crane, Inês Silva, Benjamin Michael Marshall, Colin Thomas Strine" date: "24/08/2020" output: pdf_document: default html_document: default --- ```{r echo = FALSE, message=FALSE} library(dplyr) library(ggplot2) animalData <- read.csv(file = "./Supp File 3 - King cobra data.csv", stringsAsFactors = FALSE) animalData <- animalData %>% group_by(individual.local.identifier) %>% mutate(study.local.timestamp = as.POSIXct(study.local.timestamp, tz = "Asia/Bangkok")) %>% arrange(study.local.timestamp) %>% mutate(step.length = sqrt((utm.easting - lag(utm.easting))^2 + (utm.northing - lag(utm.northing))^2), time.lag = as.numeric(difftime(study.local.timestamp, lag(study.local.timestamp), units = "hours"))) summaryTable <- animalData %>% group_by(individual.local.identifier) %>% summarise(datapoints = length(timestamp), duration = as.numeric(difftime(max(study.local.timestamp), min(study.local.timestamp), units = "days")), timelag = paste0(round(digits = 2, mean(time.lag, na.rm = TRUE)), " ±", round(digits = 2, sd(time.lag, na.rm = TRUE)/ sqrt(length(time.lag)))), moves = sum(step.length > 0, na.rm = TRUE), step.length = paste0(round(digits = 2, mean(step.length, na.rm = TRUE)), " ±", round(digits = 2, sd(step.length, na.rm = TRUE)/ sqrt(length(step.length)))) ) intextSummaries <- summaryTable %>% summarise(datapointsMean = mean(datapoints), datapointsSE = sd(datapoints)/sqrt(length(datapoints)), movesMean = mean(moves), movesSE = sd(moves)/sqrt(length(moves)), durationMean = mean(duration), durationSE = sd(duration)/sqrt(length(duration)) ) overallSummaries <- animalData %>% ungroup() %>% summarise(timelagMean = mean(time.lag, na.rm = TRUE), timelagSE = sd(time.lag, na.rm = TRUE)/sqrt(length(time.lag)), timelagMax = max(time.lag, na.rm = TRUE), timelagMin = min(time.lag, na.rm = TRUE), steplengthMean = mean(step.length, na.rm = TRUE), steplengthSE = sd(step.length, na.rm = TRUE)/sqrt(length(step.length)) ) ``` We tracked `r length(unique(animalData$individual.local.identifier))` [SPECIES NAME] individuals for an average of `r round(intextSummaries$durationMean, digits = 2)` ±`r round(intextSummaries$durationSE, digits = 2)` days. During the tracking period, we located individuals on average every `r round(overallSummaries$timelagMean, digits = 2)` ±`r round(overallSummaries$timelagSE, digits = 2)` hours (mean time lag), and detected `r round(intextSummaries$movesMean, digits = 2)` ±`r round(intextSummaries$movesSE, digits = 2)` moves per individual with a mean step length of `r round(overallSummaries$steplengthMean, digits = 2)` ±`r round(overallSummaries$steplengthSE, digits = 2)` m. ```{r echo=FALSE} knitr::kable(summaryTable, digits = 2, caption = "Summary of animal tracking", col.names = c("Animal ID", "# datapoints", "Duration (days)", "Mean time lag ±SE (hours)", "# moves", "Mean step length ±SE (m)" ), align = "c") ``` ```{r echo=FALSE, fig.align='center', fig.cap="The tracking duration of all indivudals.", fig.dim=c(12, 4)} ggplot(animalData) + geom_point(aes(x = study.local.timestamp, y = individual.local.identifier, colour = time.lag > 12 & !is.na(time.lag)), size = 1, shape = "|") + scale_colour_manual(values = c("grey10", "darkred"), labels = c("< 12 hour time lag", "> 12 hour time lag")) + labs(x = "Date", y = "Animal ID", colour = "Time lag larger\nthan planned") + theme_bw() + theme(axis.title = element_text(face = 2), axis.title.y = element_text(hjust = 0, angle = 0)) + guides(colour = guide_legend(override.aes = list(size = 5))) ``` ```{r echo=FALSE, message=FALSE, warning=FALSE, fig.align='center', fig.cap="The distribution and mean (dashed line) lag time between tracks. Note, x-axis is square-rooted and truncated at 96 hours", fig.dim=c(8, 4)} animalData %>% filter(!is.na(time.lag)) %>% ggplot() + geom_vline(aes(xintercept = mean(time.lag)), linetype = 2, alpha = 0.5) + geom_density(aes(x = time.lag), fill = "black", alpha = 0.5, colour = NA) + annotate("text", x = 96, y = 0.85, label = paste0("Mean lag = ", round(digits = 2, overallSummaries$timelagMean), " ± ", round(digits = 2, overallSummaries$timelagSE), " hours\n", "Range = ", round(digits = 2, overallSummaries$timelagMin), " - ", round(digits = 2, overallSummaries$timelagMax), " hours"), fontface = 4, hjust = 1) + theme_bw() + labs(x = "Time lag between tracks (hours)", y = "Density") + scale_x_sqrt(breaks = c(2, seq(0,12,6), seq(24, 120, 24), seq(240, 800, 240)), limits = c(0, 96)) + theme(axis.title.y = element_text(angle = 0, vjust = 1, face = 2), axis.title.x = element_text(hjust = 1, face = 2)) ```