BWTE 2013-2017
Contact: jmh09r@my.fsu.edu
date()
## [1] "Mon Mar 19 19:19:39 2018"
library(knitr)
library(rgl)
opts_knit$set(verbose = TRUE)
knit_hooks$set(webgl = hook_webgl)
setwd("D:/Patuxent/BWTE_ARamey/BWTE_ARamey_2013-2017_Argos_data-20180307T004644Z-001/BWTE_ARamey_2013-2017_Argos_data/Argos_data")
suppressMessages(library(dplyr))
suppressMessages(library(data.table))
suppressMessages(library(readr))
suppressMessages(library(stringr))
suppressMessages(library(lubridate))
suppressMessages(library(RcppRoll))
## Warning: package 'RcppRoll' was built under R version 3.4.4
suppressMessages(library(changepoint))
## Warning: package 'changepoint' was built under R version 3.4.4
suppressMessages(library(ecp))
## Warning: package 'ecp' was built under R version 3.4.4
suppressMessages(library(trend))
## Warning: package 'trend' was built under R version 3.4.4
suppressMessages(library(ggplot2))
suppressMessages(library(gridExtra))
x = "BWTeal_2013-2017_Ramey_argos_tabular_calibrated_sensor.csv"
df1 = as.data.frame(
read_delim(x,
col_names = TRUE,
delim = ",",
quoted_na = FALSE,
trim_ws = TRUE))
## Warning: Missing column names filled in: 'X12' [12]
## Parsed with column specification:
## cols(
## Data_DOI = col_character(),
## Species = col_character(),
## Animal_ID = col_character(),
## Alive = col_character(),
## Temperature_C = col_double(),
## Voltage = col_double(),
## Activity = col_integer(),
## Program = col_integer(),
## PTT = col_integer(),
## Satellite = col_character(),
## Message_Datetime_GMT = col_datetime(format = ""),
## X12 = col_character()
## )
Perm = 500 #permutations
Animal.IDs = levels(as.factor(df1$Animal_ID))
DeadShed.df = data.frame(matrix(nrow = length(Animal.IDs), ncol=16))
names(DeadShed.df) = c("Animal", "Act_c", "Act_d", "Temp_c","Temp_d", "mTmp_c", "mTmp_d",
"UnqAct_c", "UnqAct_d", "UnqActR_c", "UnqActR_d", "Sat_c","Sat_d",
"SatR_c","SatR_d","V_ln")
DeadShed.df$Animal = Animal.IDs
for(i in 1:length(Animal.IDs)){
df1a.tmp = df1 %>%
filter(Animal_ID == Animal.IDs[i]) %>%
mutate(ObsDate = ymd_hms(Message_Datetime_GMT),
ObsDateD = as.Date(Message_Datetime_GMT))
df1a.tmp = arrange(df1a.tmp, ObsDate) %>%
mutate(IDx = 1:nrow(df1a.tmp),
Activity = as.numeric(Activity),
A.dif = Activity - lag(Activity),
Year = year(ObsDate),
Month = month(ObsDate),
Week = week(ObsDate),
Day = day(ObsDate),
Hour = hour(ObsDate),
Seconds = second(ObsDate),
Sec.d = as.numeric(ObsDate, units = "seconds"),
Dur = Sec.d - lag(Sec.d),
Min.d = Dur/60,
Hr.d = Min.d/60,
Day.d = Hr.d/24)
Cutp = br.test(df1a.tmp$Activity, m = Perm)
Cutp2 = bu.test(df1a.tmp$Activity, m = Perm)
Cutp3 = lanzante.test(df1a.tmp$Activity, method = "wilcox.test")
Cutp4 = pettitt.test(df1a.tmp$Activity)
Cutp5 = snh.test(df1a.tmp$Activity, m = Perm)
SCut = max(c(Cutp$estimate, Cutp2$estimate, Cutp3$estimate,
Cutp4$estimate, Cutp5$estimate), na.rm=T)
CutpB = br.test(df1a.tmp$Temperature_C, m = Perm)
CutpB1 = br.test(df1a.tmp$Temperature_C, m = Perm)
CutpB2 = bu.test(df1a.tmp$Temperature_C, m = Perm)
CutpB3 = lanzante.test(df1a.tmp$Temperature_C, method = "wilcox.test")
CutpB4 = pettitt.test(df1a.tmp$Temperature_C)
CutpB5 = snh.test(df1a.tmp$Temperature_C, m = Perm)
SCutB = max(c(CutpB$estimate, CutpB2$estimate, CutpB3$estimate,
CutpB4$estimate, CutpB5$estimate), na.rm=T)
df1a.tmp$rmT= rollapply(df1a.tmp$Temperature_C, 2, mean, partial=T, align = "right")
CutpBm = br.test(df1a.tmp$rmT, m = Perm)
CutpBm1 = br.test(df1a.tmp$Activity, m = Perm)
CutpBm2 = bu.test(df1a.tmp$rmT, m = Perm)
CutpBm3 = lanzante.test(df1a.tmp$rmT, method = "wilcox.test")
CutpBm4 = pettitt.test(df1a.tmp$rmT)
CutpBm5 = snh.test(df1a.tmp$rmT, m = Perm)
SCutBm = max(c(CutpBm$estimate, CutpBm2$estimate, CutpBm3$estimate,
CutpBm4$estimate, CutpBm5$estimate), na.rm=T)
Act.df = as.data.frame(df1a.tmp %>%
group_by(ObsDateD) %>%
summarise(Act = length(unique(Activity)),
Idx = max(IDx)))
CutpC = br.test(Act.df$Act, m = Perm)
CutpC2 = bu.test(Act.df$Act, m = Perm)
CutpC3 = lanzante.test(Act.df$Act, method = "wilcox.test")
CutpC4 = pettitt.test(Act.df$Act)
CutpC5 = snh.test(Act.df$Act, m = Perm)
SCutC = max(c(CutpC$estimate, CutpC2$estimate, CutpC3$estimate,
CutpC4$estimate, CutpC5$estimate))
GetCutUnqA = Act.df$Idx[SCutC]
rl = rle(Act.df$Act)
Act.df$repx = rep( rl$lengths != 1 , times = rl$lengths )
Act.df$repx2 = ifelse(Act.df$repx == TRUE, 1, 0)
if(sum(Act.df$repx2) == 0){
DeadShed.df[i, 10] = 0
DeadShed.df[i, 11] = 0 }
else{
CutpCx = br.test(Act.df$repx2, m = Perm)
CutpCx2 = bu.test(Act.df$repx2, m = Perm)
CutpCx3 = lanzante.test(Act.df$repx2, method = "wilcox.test")
CutpCx4 = pettitt.test(Act.df$repx2)
CutpCx5 = snh.test(Act.df$repx2, m = Perm)
SCutCx = max(c(CutpCx$estimate, CutpCx2$estimate, CutpCx3$estimate,
CutpCx4$estimate, CutpCx5$estimate))
GetCutUnqR = Act.df$Idx[SCutCx]
uActR.D = Act.df$ObsDateD[SCutCx]
DeadShed.df[i, 10] = GetCutUnqR
DeadShed.df[i, 11] = strftime(uActR.D, format = "%Y-%m-%d")}
Sat.df = as.data.frame(df1a.tmp %>%
group_by(ObsDateD) %>%
summarise(Cnt = length(ObsDate),
Idx = max(IDx)))
CutpS = br.test(Sat.df$Cnt, m = Perm)
CutpS2 = bu.test(Sat.df$Cnt, m = Perm)
CutpS3 = lanzante.test(Sat.df$Cnt, method = "wilcox.test")
CutpS4 = pettitt.test(Sat.df$Cnt)
CutpS5 = snh.test(Sat.df$Cnt, m = Perm)
SCutS = max(c(CutpS$estimate, CutpS2$estimate, CutpS3$estimate,
CutpS4$estimate, CutpS5$estimate))
GetCutSat = Sat.df$Idx[SCutS]
rl = rle(Sat.df$Cnt)
Sat.df$repx = rep( rl$lengths != 1 , times = rl$lengths )
Sat.df$repx2 = ifelse(Sat.df$repx == TRUE, 1, 0)
if(sum(Sat.df$repx2) == 0){
DeadShed.df[i, 14] = 0
DeadShed.df[i, 15] = 0}
else{
CutpCSx = br.test(Sat.df$repx2, m = Perm)
CutpCSx2 = bu.test(Sat.df$repx2, m = Perm)
CutpCSx3 = lanzante.test(Sat.df$repx2, method = "wilcox.test")
CutpCSx4 = pettitt.test(Sat.df$repx2)
CutpCSx5 = snh.test(Sat.df$repx2, m = Perm)
SCutCSx = max(c(CutpCSx$estimate, CutpCSx2$estimate, CutpCSx3$estimate, CutpCSx4$estimate, CutpCSx5$estimate))
GetCutSatR = Sat.df$Idx[SCutCSx]
SatR.D = Sat.df$ObsDateD[SCutCSx]
DeadShed.df[i, 14] = GetCutSatR
DeadShed.df[i, 15] = strftime(SatR.D, format = "%Y-%m-%d")}
Act.D = df1a.tmp$ObsDate[SCut]
Temp.D = df1a.tmp$ObsDate[SCutB]
mTemp.D = df1a.tmp$ObsDate[SCutBm]
uAct.D = Act.df$ObsDateD[SCutC]
Sat.D = Sat.df$ObsDateD[SCutS]
DeadShed.df[i, 2] = SCut
DeadShed.df[i, 3] = strftime(Act.D, format = "%Y-%m-%d %H:%M:%S")
DeadShed.df[i, 4] = SCutB
DeadShed.df[i, 5] = strftime(Temp.D, format = "%Y-%m-%d %H:%M:%S")
DeadShed.df[i, 6] = SCutBm
DeadShed.df[i, 7] = strftime(mTemp.D, format = "%Y-%m-%d %H:%M:%S")
DeadShed.df[i, 8] = GetCutUnqA
DeadShed.df[i, 9] = strftime(uAct.D, format = "%Y-%m-%d")
DeadShed.df[i, 12] = GetCutSat
DeadShed.df[i, 13] = strftime(Sat.D, format = "%Y-%m-%d")
DeadShed.df[i, 16] = dim(df1a.tmp)[1]
}
write.csv(DeadShed.df, "./DeadShed031918.csv")
for(i in 1:length(Animal.IDs)){
DeathPoint = (DeadShed.df %>%
filter(Animal == Animal.IDs[i]))[,18]
Tmp.mrk = df1 %>%
filter(Animal_ID == Animal.IDs[i]) %>%
mutate(ObsDate = ymd_hms(Message_Datetime_GMT),
ObsDateD = as.Date(Message_Datetime_GMT),
Live2 = NA)
Tmp.mrk = arrange(Tmp.mrk, ObsDate) %>%
mutate(Idx = 1:nrow(Tmp.mrk))
Tmp.mrk$Alive2 = ifelse(Tmp.mrk$Idx <= DeathPoint, "Alive", "Dead")
if(i == 1){mrkOut.df = Tmp.mrk}
else{mrkOut.df = rbind(mrkOut.df, Tmp.mrk)}
}
write.csv(mrkOut.df, "./mrkd_BWTeal_2013-2017_argos_031918.csv") #w/ markup
mrkOut2.df = mrkOut.df %>%
filter(Alive2 == "Alive")
write.csv(mrkOut2.df, "./clean_BWTeal_2013-2017_argos_031918.csv") #Copy with dead removed
#COunt of records removed
dim(mrkOut.df)[1]-dim(mrkOut2.df)[1]
## [1] 3859
Showing “DeadPoint” on orginal dataset.
for(Setx in 1:length(Animal.IDs)){
Plt.set = df1 %>%
filter(Animal_ID == Animal.IDs[Setx]) %>%
mutate(ObsDate = ymd_hms(Message_Datetime_GMT),
ObsDateD = as.Date(Message_Datetime_GMT))
Plt.set = arrange(Plt.set, ObsDate) %>%
mutate(IDx = 1:nrow(Plt.set),
Activity = as.numeric(Activity))
DeathPoint = (DeadShed.df %>%
filter(Animal == Animal.IDs[Setx]))[,18]
P1 = ggplot(Plt.set, aes(IDx, Temperature_C)) +
geom_line() +
geom_vline(xintercept=DeathPoint, col = "darkred", lwd = 1.25, linetype = "dotted") +
ylab("Temperature") +
xlab("Time Step") +
ylim(0, 80) +
ggtitle(paste(Animal.IDs[Setx])) +
theme_classic() +
guides(col = guide_legend(ncol = 16)) +
theme(panel.border = element_rect(color = "black", fill = NA, size = 1),
strip.text.x = element_text(size=12, face="bold"),
axis.title.y = element_text(size=16, face="bold"),
plot.title = element_text(hjust = 0.5),
legend.position="bottom")
P2 = ggplot(Plt.set, aes(IDx, Activity)) +
geom_line() +
geom_vline(xintercept=DeathPoint, col = "darkred", lwd = 1.25, linetype = "dotted") +
ylab("Activity") +
xlab("Time Step") +
ylim(0, 100) +
theme_classic() +
ggtitle(paste(Animal.IDs[Setx])) +
guides(col = guide_legend(ncol = 16)) +
theme(panel.border = element_rect(color = "black", fill = NA, size = 1),
strip.text.x = element_text(size=12, face="bold"),
axis.title.y = element_text(size=16, face="bold"),
plot.title = element_text(hjust = 0.5),
legend.position="bottom")
Act.plt = as.data.frame(Plt.set %>%
group_by(ObsDateD) %>%
summarise(Act = length(unique(Activity)),
Idx = max(IDx)))
DeathDate = Plt.set$ObsDateD[DeathPoint]
P3 = ggplot(Act.plt, aes(ObsDateD, Act)) +
geom_bar(colour="black", stat="identity") +
geom_vline(xintercept=DeathDate, col = "darkred", lwd = 1.25, linetype = "dotted") +
ylab("Activity/Day") +
xlab("Day") +
#ylim(0, 100) +
theme_classic() +
ggtitle(paste(Animal.IDs[Setx])) +
guides(col = guide_legend(ncol = 16)) +
theme(panel.border = element_rect(color = "black", fill = NA, size = 1),
strip.text.x = element_text(size=12, face="bold"),
axis.title.y = element_text(size=16, face="bold"),
plot.title = element_text(hjust = 0.5),
legend.position="bottom")
Sat.plt = as.data.frame(Plt.set %>%
group_by(ObsDateD) %>%
summarise(Cnt = length(ObsDate),
Idx = max(IDx)))
P4 = ggplot(Sat.plt, aes(ObsDateD, Cnt)) +
geom_bar(colour="black", stat="identity") +
geom_vline(xintercept=DeathDate, col = "darkred", lwd = 1.25, linetype = "dotted") +
ylab("Transmit/Day") +
xlab("Day") +
ylim(0, 150) +
theme_classic() +
ggtitle(paste(Animal.IDs[Setx])) +
guides(col = guide_legend(ncol = 16)) +
theme(panel.border = element_rect(color = "black", fill = NA, size = 1),
strip.text.x = element_text(size=12, face="bold"),
axis.title.y = element_text(size=16, face="bold"),
plot.title = element_text(hjust = 0.5),
legend.position="bottom")
grid.arrange(P1, P2, P3, P4, ncol=1)
}
## Warning: Removed 1 rows containing missing values (geom_path).
## Warning: Removed 2 rows containing missing values (geom_path).
## Warning: Removed 1 rows containing missing values (geom_path).