library(devtools)
load_all("./")
Sys.setenv(TZ='UTC')
# Test activity class ----
data(activity_data)
data(gps_data)
activity_data$act_xy <- activity_data$act_x + activity_data$act_y
pars <- list(act.act = "act_xy",
act.reg_minutes = 5,
act.width_ma = 2,
tresh.n_runs = 1,
thresh.window_width_around_day = 3,
thresh.n_thresholds = c(25:35),
thresh.resting_range_limit = 0.2,
thresh.threshold_range_limit = 0.8,
states.min_duration_active = 10)
# simple
deer <- activity(activity_data = activity_data)
# with GPS
deer <- activity(activity_data = activity_data,
gps = gps_data)
# with parameters
deer <- activity(activity_data = activity_data,
gps = gps_data,
parameters = pars)
# based on other activity object
deeragain <- activity(activity_data = deer$activity_data,
gps = deer$gps_data,
parameters = deer$parameters)
# with only some parameters
deer <- activity(activity_data = activity_data,
gps = gps_data,
parameters = pars[1:2])
# Don't keep source data
deer <- activity(activity_data = activity_data,
gps = gps_data,
parameters = pars,
keep_source = FALSE)
# Timestamp not POSIX
activity_data_noPOSIX <- activity_data
activity_data_noPOSIX$ts <- as.character(activity_data$ts)
deer <- activity(activity_data = activity_data_noPOSIX)
deer$activity_data$ts
# Throw some errors
deer <- activity(activity_data = NULL,
gps = gps_data)
deer <- activity(activity_data = activity_data[,c(1,3)])
deer <- activity(activity_data = activity_data,
gps = gps_data[,c(1,4)])
## Workflow 1 - all model parameters first ----
data(activity_data)
# reduce data set for fast testing
# activity_data <- activity_data[activity_data$ts >= as.POSIXct("2009-01-01") &
# activity_data$ts <= as.POSIXct("2009-03-01"),]
data(gps_data)
# list of all parameters
pars <- list(act.act = "act_xy",
act.reg_minutes = 5,
act.width_ma = 2,
thresh.n_runs = 1,
thresh.window_width_around_day = 3,
thresh.n_thresholds = c(25:35),
thresh.resting_range_limit = 0.2,
thresh.threshold_range_limit = 0.8,
states.min_duration_active = 10,
pta.pos = NULL,
pta.dayshift = "dawn",
pta.dawn_degree = 12,
pta.period = "day",
pta.max_na = 30)
deer <- activity(activity_data = activity_data, gps_data = gps_data, parameters = pars)
plot(deer, select = "activity_eval", select_animal_id = 1)
# Regularize
# deer$activity_data[,.(min = min(diff(ts)),
# max = max(diff(ts)),
# mean = mean(diff(ts))),
# by = animal_tag]
deer <- regularize_activity(deer)
# deer$activity_data[,.(min = min(diff(ts)),
# max = max(diff(ts)),
# mean = mean(diff(ts))),
# by = animal_tag]
# Combine activity_data from x- and y-axis: Already performed when creating
# activity obect; updated after regularization
# deer[["active_states"]]
# Smooth activity
deer <- smooth_activity(deer)
# Identify and remove activity gaps
deer <- remove_activity_gaps(deer)
# Thresholds
deer <- calculate_thresholds(deer, plot_summary = TRUE)
# Load resulting 'deer' object:
#data("thresholds")
# Activity states (using parameter list defined above)
deer <- calculate_states(deer, add = c("pta", "gps"))
# States again with different parameters
deer2 <- states(activity = deer,
thresholds = c("a", "c"),
parameters = list(pta.dayshift = "sunrise",
pta.dawn_degree = 11,
pta.period = "week",
pta.max_na = 210))
## Plotting
# Plot thresholds and activity
# Thresholds
plot(deer, select = "thresholds")
#Activity
plot(deer, select_animal_id = 1)
plot(deer)
plot(deer, select = "activity_eval", select_animal_id = 1)
plot(deer, select = "activity", select_animal_id = 1) # same
# Active states
plot(deer, select="states", threshold = "a")
# Export classified GPS data
write.table(deer_states$threshold_a$gps_active, file = "./test/gps_data_export.csv",
sep = ";", row.names = FALSE)
## Workflow 2 - parameters step by step ----
data(activity_data)
data(gps_data)
deer <- activity(activity_data = activity_data, gps = gps_data)
# Regularize
deer$activity_data[,.(min = min(diff(ts)),
max = max(diff(ts)),
mean = mean(diff(ts))),
by = animal_tag]
deer <- regularize_activity(activity = deer,
act.reg_minutes=5)
deer$activity_data[,.(min = min(diff(ts)),
max = max(diff(ts)),
mean = mean(diff(ts))),
by = animal_tag]
# Combine activity_data from x- and y-axis: Already performed when creating
# activity obect; updated after regularization
# Smooth activity
deer <- smooth_activity(activity = deer,
act.act = 'act_xy',
act.width_ma = 2,
update_NA = TRUE)
# Identify and remove activity gaps
deer <- identify_activity_gaps(deer,
act.act = 'act_xy')
deer <- remove_activity_gaps(deer)
# Thresholds -- includes aggregation
deer <- calculate_thresholds(activity = deer,
thresh.n_runs = 1,
thresh.window_width_around_day = 3,
thresh.n_thresholds = c(25:35),
thresh.resting_range_limit = 0.2,
thresh.threshold_range_limit = 0.8,
states.min_duration_active = 10,
plot_summary = TRUE)
data("thresholds")
# Activity states
deer_states <- calculate_states(deer,
add = c("pta", "gps")
thresholds = c("a", "b", "c"),
pta.dayshift = "dawn",
pta.dawn_degree = 12,
pta.period = "day",
pta.max_na = 30)
# using different parameters
deer_states2 <- calculate_states(activity = deer,
add = c("pta", "gps")
thresholds = c("a", "c"),
pta.dayshift = "sunrise",
pta.dawn_degree = 11,
pta.period = "week",
pta.max_na = 210)
# Plotting same as above
# Thresholds
plot(deer, select = "thresholds")
#Activity
plot(deer, animal_id = 1)
plot(deer, select = "activity", animal_id = 1) # same
# Active states
plot(deer, select="states", threshold = "b")
# GPS data ----
# GPS data can also be added or changed at later stages
deer <- add_gps_data(deer, gps_data)
deer_states <- add_gps_data(deer_states, gps_data)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.