
tidyfun is a
tidyverse-oriented interface layer around
the core tf package. It makes functional
data analysis in R easier by focusing on data wrangling,
exploratory analysis, and graphics for functional data stored in
ordinary data frames.
The underlying tf package defines the
tf vector type and the core functional-data methods.
tidyfun builds on those objects with
helpers for working inside data frames, plus plotting and workflow tools
that fit naturally into the tidyverse.
Crucially, vectors of class tf can be
included in data frames alongside other variables, enabling data
manipulation with standard tidyverse
tools. This matches the functional-data view that complete
functions are the unit of observation; with
tidyfun, full curves sit alongside
numeric, factor, and other observations on the same subject.
Install the released version from CRAN:
install.packages("tidyfun")Or install the current development version from GitHub:
install.packages("pak")
pak::pak("tidyfun/tidyfun")tidyfun provides:
tidyverse-friendly
wrangling tools for functional data inside data
framestidyfun-level
graphics helpers for tf vectors and tidy
functional data framestf data structures and methodsFor detailed information on the features of
tidyfun, check out articles on the
following topics:
tf vectors, and operating on those
vectors with core tf methods and
tidyfun conveniencestidyfun
workflows built on tftidyverse and
tidyfun toolstidyfun graphics
helperstf registration
methods documented for use in the tidyfun
ecosystemThe result is a package that enables exploratory data analysis like
the following, which computes group-specific mean curves in the
dti_df dataset, and plots the result:
library("tidyfun")
data(dti_df, package = "tidyfun")
dti_df |>
group_by(case, sex) |>
summarize(mean_cca = mean(cca, na.rm = TRUE)) |>
tf_ggplot(aes(tf = mean_cca, color = case)) +
geom_line(linewidth = 2) +
facet_grid(~sex)
tf data types
and methodsThe underlying {tf}
package defines the tf vector classes and related methods,
including raw functional data (tfd) and basis
representations (tfb). For an overview, see the tf
vectors article and the reference
index.
Such tf-objects can be subsetted or subassigned,
computed on and summarized.
Almost all
==, + or
*sum, log or
absmean or
sdare defined for these tf data structures, as illustrated
in the tf
vectors article and the reference
index.
The tf objects are basically glorified lists, so they
work well as columns in data frames. That makes it a lot easier to keep
your other data and functional measurements together in one object for
preprocessing, exploratory analysis and description. At the same time,
these objects actually behave like vectors of functions to some
extent, i.e., they can be evaluated on any point in their domain, they
can be integrated or differentiated, etc.
See
here for more information on the operations defined for
tf vectors.
tfThe underlying tf package provides the
tfd and tfb constructors for converting
matrices, data frames, etc. to tf vectors.
tidyfun builds on those objects with
tf_gather & tf_nest to reshape tables with
functional data, by going from wide to narrow or from long to short;
functions like as.matrix, tf_spread &
tf_unnest can reverse these data conversions.
See
here for details on getting data into (and out of) the
tf format.
tidyverse
verbs for dealing with functional data inside data framesAll dplyr verbs work on
tf-columns, so you can filter,
mutate, group_by & summarize,
etc., functional data pretty much like conventional “tidy” data.
tidyfun workflows also work naturally with
tf helpers such as
tf_anywhere and tf_smooth.
See here to see how you can wrangle functional data.
ggplot2 geoms and
stats for functional datatidyfun provides
tf_ggplot(), which lets you use standard
ggplot2 geoms (geom_line,
geom_point, geom_ribbon, …) with functional
data via the tf aesthetic. It also includes specialized
pasta-themed geoms:
gglasagna for lasagna
plots (heatmaps), with an
order-aesthetic to sort the lasagna
layers,geom_capellini for glyphs
plots (i.e., sparklines),geom_fboxplot for functional boxplots
based on data depth,as well as methods for base R graphics functions plot,
lines and points for quick and easy
visualizations of functional data.
See here for the documentation of the visualization approaches, or browse the reference index.
tidyfun documents multiple
tf methods for aligning curves in time via
tf_register: elastic SRVF alignment, continuous
registration (CC), affine shift/scale models, and landmark registration.
All methods return tf_registration objects with a
consistent interface for extracting aligned curves, inverse warping
functions, and diagnostic summaries.
See here for a practical guide covering method selection, diagnostics, and worked examples on real data.
Found a bug? Got a question? Missing some functionality?
Please let us know so we can make it better.