A function for performing early warning signal (EWS) assessment on univariate time series. Both rolling and expanding window methods of EWS assessment can be performed with the assessments returned as a dataframe.
Usage
uniEWS(
data,
metrics,
method = c("expanding", "rolling"),
winsize = 50,
burn_in = 5,
threshold = 2,
tail.direction = "one.tailed",
trait = NULL
)Arguments
- data
A dataframe where the first column is an equally spaced time vector and the second column is the time series to be assessed.
- metrics
String vector of early warning signal metrics to be assessed. Options include:
"ar1","cv","SD","acf","rr","dr","skew","kurt", and"trait"(only available ifmethod = "expanding").- method
Single string of either
"expanding"or"rolling"."expanding"calls composite, expanding window EWS assessment."rolling"calls typical, rolling window EWS assessment.- winsize
Numeric value. If
method = "rolling", defines the window size of the rolling window as a percentage of the time series length.- burn_in
Numeric value. If
method = "expanding", defines the number of data points to 'train' signals prior to EWS assessment.- threshold
Numeric value of either
1or2. Threshold*sigma is the value which, if the EWS strength exceeds it, constitutes a "signal".- tail.direction
String of either
"one.tailed"or"two.tailed"."one.tailed"only indicates a warning if positive threshold sigma exceeded."two.tailed"indicates a warning if positive OR negative threshold*sigma exceeded.- trait
A vector of numeric trait values if desired. Can be
NULL
Value
A list containing up to two objects: EWS outputs through time (EWS), and an identifier string (method).
- EWS$raw
Dataframe of EWS measurements through time. If
method = "expanding", then each metric has been rbound into a single dataframe and extra columns are provided indicating whether the threshold*sigma value has been exceeded (i.e."threshold.crossed"). Ifmethod = "rolling", then each metric's evolution over time is returned in individual columns.- EWS$cor
Dataframe of Kendall Tau correlations. Only returned if
method = "rolling".
Examples
#A dummy dataset of a hedgerow bird population over
#25 years where both the number of individuals and
#the average bill length has been measured.
abundance_data <- data.frame(time = seq(1:25),
abundance = rnorm(25,mean = 20),
trait = rnorm(25,mean=1,sd=0.5))
#The early warning signal metrics to compute.
ews_metrics <- c("SD","ar1","skew")
#Rolling window early warning signal assessment of
#the bird abundance.
roll_ews <- uniEWS(
data = abundance_data[,1:2],
metrics = ews_metrics,
method = "rolling",
winsize = 50)
#Expanding window early warning signal assessment of
#the bird abundance (with plotting).
exp_ews <- uniEWS(
data = abundance_data[,1:2],
metrics = ews_metrics,
method = "expanding",
burn_in = 10)
#Expanding window early warning signal assessment of
#the bird abundance incorporating the trait
#information.
ews_metrics_trait <- c("SD","ar1","trait")
trait_exp_ews <- uniEWS(
data = abundance_data[,1:2],
metrics = ews_metrics_trait,
method = "expanding",
burn_in = 10,
trait = abundance_data$trait)