Analyse and Interpret Time Series Features
You can install the stable version of theftdlc from CRAN:
install.packages("theftdlc")You can install the development version of theftdlc from GitHub using
the following:
devtools::install_github("hendersontrent/theftdlc")The theft package for R
facilitates user-friendly access to a structured analytical workflow for
the extraction of time-series features from six different feature sets
(and any number of individual user-supplied features): "catch22",
"feasts", "kats", "tsfeatures", "tsfresh", and "tsfel".
theftdlc extends this feature-based ecosystem by providing a suite of
functions for analysing, interpreting, and visualising time-series
features calculated using theft. Functionality including data quality
assessments and normalisation methods, low dimensional projections
(linear and nonlinear), data matrix and feature distribution
visualisations, time-series classification machine learning procedures,
statistical hypothesis testing, and various other statistical and
graphical tools.
A high-level overview of how the theft ecosystem for R is typically
accessed by users is shown below. Many more functions and options for
customisation are available within the packages.
theftdlc means ‘downloadable content’ (DLC) for theft—just like you
get
DLCs
for video games.
theft and theftdlc combine to create an intuitive and efficient tidy
feature-based workflow. Here is an example of a single code chunk that
calculates features using
catch22 and a custom set
of mean and standard deviation, and projects the feature space into an
interpretable two-dimensional space using principal components analysis:
library(dplyr)
library(theft)
library(theftdlc)
calculate_features(data = theft::simData,
feature_set = "catch22",
features = list("mean" = mean, "sd" = sd)) %>%
project(norm_method = "RobustSigmoid",
unit_int = TRUE,
low_dim_method = "PCA") %>%
plot()In that example, calculate_features comes from theft, while
project and the plot generic come from theftdlc.
Similarly, we can perform time-series classification using a similar
simple workflow to compare the performance of catch22 against our
custom set of the first two moments of the distribution:
calculate_features(data = theft::simData,
feature_set = "catch22",
features = list("mean" = mean, "sd" = sd)) %>%
classify(by_set = TRUE,
n_resamples = 5,
use_null = TRUE) %>%
compare_features(by_set = TRUE,
hypothesis = "null") %>%
head() hypothesis feature_set metric set_mean null_mean
1 All features != own null All features accuracy 0.8177778 0.1644444
2 User != own null User accuracy 0.7955556 0.1200000
3 catch22 != own null catch22 accuracy 0.7511111 0.1377778
t_statistic p.value
1 4.759301 0.004454886
2 6.159351 0.001763084
3 4.866885 0.004119101
In this example, classify and compare_features come from theftdlc.
Please see the vignette for more information and the full functionality of both packages.
If you use theft or theftdlc in your own work, please cite both the
paper:
T. Henderson and Ben D. Fulcher. Feature-Based Time-Series Analysis in R using the theft Package. arXiv, (2022).
and the software:
To cite package 'theft' in publications use:
Henderson T (2025). _theft: Tools for Handling Extraction of Features
from Time Series_. R package version 0.8.2,
<https://hendersontrent.github.io/theft/>.
A BibTeX entry for LaTeX users is
@Manual{,
title = {theft: Tools for Handling Extraction of Features from Time Series},
author = {Trent Henderson},
year = {2025},
note = {R package version 0.8.2},
url = {https://hendersontrent.github.io/theft/},
}
To cite package 'theftdlc' in publications use:
Henderson T (2025). _theftdlc: Analyse and Interpret Time Series
Features_. R package version 0.2.1,
<https://hendersontrent.github.io/theftdlc/>.
A BibTeX entry for LaTeX users is
@Manual{,
title = {theftdlc: Analyse and Interpret Time Series Features},
author = {Trent Henderson},
year = {2025},
note = {R package version 0.2.1},
url = {https://hendersontrent.github.io/theftdlc/},
}