| traitSmooth {growthPheno} | R Documentation |
Obtain smooths for a trait by fitting spline functions and, having compared
several smooths, allows one of them to be chosen and returned in a data.frame.
Description
Takes a response that has been observed for a set of
individuals over a number times and carries out one or more of the following steps:
- Smooth:
Produces
response.smoothedusing splines for a set of smoothing parameter settings and, optionally, computes growth rates either as differences or derivatives. (seesmoothing.argsbelow andargs4smoothing) This step is bypassed if adata.framethat is also of classsmooths.frameis supplied todata.- Profile plots:
Produces profile plots of
response.smoothedand its growth rates that compare the smooths; also, boxplots of the deviations of the observed from smoothed data can be obtained. (seeprofile.plot.argsbelow andargs4profile_plot) Whether these plots are produced is controlled viawhich.plotsor whetherprofile.plot.argsis set toNULL.- Median deviations plots:
Produces plots of the medians of the deviations of the observed
response, and its growth rates, fromresponse.smoothed, and its growth rates. These aid in the assessment of the different smooths. (seemeddevn.plot.argsbelow andargs4meddevn_plot) Whether these plots are produced is controlled viawhich.plotsor whethermeddevn.plot.argsis set toNULL.- Deviations boxplots:
Produces boxplots of the absolute or relative deviations of the observed
response, and its growth rates, fromresponse.smoothed, and its growth rates. These aid in the assessment of the different smooths. (seedevnboxes.plot.argsbelow andargs4devnboxes_plot) Whether these plots are produced is controlled viawhich.plotsor whetherdevnboxes.plot.argsis set toNULL.- Choose a smooth:
Extract a single, favoured
response.smoothed, and its growth rates, for a chosen set of smoothing parameter settings. (seechosen.smooth.argsbelow andargs4chosen_smooth) This step will be omitted ifchosen.smooth.argsisNULL.- Chosen smooth plot:
Produces profile plots of the chosen smooth and its growth rates. (see
chosen.plot.argsbelow andargs4chosen_plot) Whether these plots are produced is controlled by whetherchosen.plot.argsis set toNULL.
Each of the 'args4' functions has a set of defaults that will be used if
the corresponding argument, ending in '.args', is omitted. The defaults
have been optimized for traitSmooth.
Input to the function can be either a data.frame, that contains data to
be smoothed, or a smooths.frame, that contains data that has been smoothed.
The function can be run (i) without saving any output, (ii) saving the complete set
of smooths in a data.frame that is also of class smooths.frame,
(iii) saving a subset of the smooths in a supplied smooths.frame, or
(iv) saving a single smooth in a data.frame, which can be merged
with a pre-existing data.frame such as the data.frame
that contains the unsmoothed data.
The Tomato vignette illustrates the use of traitSmooth and
traitExtractFeatures to carry out the SET procedure for the example
presented in Brien et al. (2020).
Use vignette("Tomato", package = "growthPheno") to access it.
Usage
traitSmooth(data, response, response.smoothed, individuals, times,
keep.columns = NULL,
get.rates = TRUE,
rates.method="differences", ntimes2span = NULL,
trait.types = c("response", "AGR", "RGR"),
smoothing.args = args4smoothing(),
x.title = NULL, y.titles = NULL,
which.plots = c("profiles", "medians.deviations"),
profile.plot.args = args4profile_plot(),
meddevn.plot.args = args4meddevn_plot(),
devnboxes.plot.args = args4devnboxes_plot(),
chosen.smooth.args = args4chosen_smooth(),
chosen.plot.args = args4chosen_plot(),
mergedata = NULL,
...)
Arguments
data |
A |
response |
A |
response.smoothed |
A |
individuals |
A |
times |
A |
keep.columns |
A |
get.rates |
A |
rates.method |
A |
ntimes2span |
A |
trait.types |
A |
smoothing.args |
A |
x.title |
Title for the x-axis, used for all plots. If |
y.titles |
A |
which.plots |
A |
profile.plot.args |
A named |
meddevn.plot.args |
A named |
devnboxes.plot.args |
A named |
chosen.smooth.args |
A named |
chosen.plot.args |
A named |
mergedata |
A |
... |
allows arguments to be passed to |
Details
This function is a wrapper function for probeSmooths,
plotSmoothsComparison, plotSmoothsComparison
and plotDeviationsBoxes. It uses the helper functions
args4smoothing, args4profile_plot and
args4meddevn_plot to se arguments that control the smoothing
and plotting.
It takes a response that has been observed for a set of
individuals over a number times and produces
response.smoothed, using probeSmooths, for a default
set of smoothing parameter settings (see args4smoothing
for the defaults). The settings can be varied from the defaults by
specifying alternate values for the smoothing parameters, the parameters
being the type of spline (spline.types), the degrees of freedom
(df) or smoothing penalty (lambdas) and smoothing.methods.
There are also several other smoothing arguments that can be manipulated to
affect the smooth (for details see args4smoothing).
The secondary traits of the absolute growth rate (AGR) and relative
growth rate (RGR) are calculated from the two primary traits, the
response and response.smoothed.
Generally, profile plots for the traits (a response, an AGR or an RGR)
specified in traits.types are produced if which.plots is
profiles; if which.plots specifies one or more deviations
plots, then those deviations plots will also be produced, these being
based on the unsmoothed data from which the smoothed data has been
subtracted. The layout of the plots is controlled via combinations of
one or more of the smoothing-parameter factors Type,
TunePar, TuneVal, Tuning (the combination
of TunePar and TuneVal) and Method, as well as
other factors associated with the data.
The factors that are to be used for the profile plots and
deviations boxplots are supplied via the argument profile.plot.args
using the helper function args4profile_plot to set
plots.by, facet.x, and facet.y; for the plots of
the medians of the deviations, the factors are supplied via
the argument meddevn.plot.args using the helper function
args4meddevn_plot to set plots.by, facet.x,
facet.y and plots.group. Here, the basic principle is that
the number of levels combinations of the smoothing-parameter
factors included in the set of plots and
facets arguments to one of these helper functions must be the same
as those covered by the combinations of the values supplied to
spline.types, df, lambdas and smoothing.methods
and incorporated into the smooths.frame, such as is
returned by probeSmooths. This ensures that smooths
from different parameter sets are not pooled together in a single plot.
It is also possible to include factors that are not
smoothing-parameter factors in the plots amd
facets arguments.
The following profiles plots can be produced using
args4profile_plot: (i) separate plots of the
smoothed traits for each combination of the smoothing parameters
(include Type, Tuning and Method in plots.by);
(ii) as for (i), with the corresponding plot for the unsmoothed trait
preceeding the plots for the smoothed trait (also set include.raw to
alone); (iii) profiles plots that compare a smoothed trait for all
combinations of the values of the smoothing parameters, arranging the plots
side-by-side or one above the other (include Type, Tuning and
Method in facet.x and/or facet.y - to include the
unsmoothed trait set include.raw to one of facet.x or
facet.y; (iv) as for (iii), except that separate plots are
produced for each combination of the levels of the factors
in plot.by and each plot compares the smoothed traits for the
smoothing-parameter factors included in facet.x
and/or facet.y (set both plots.by and one or more of
facet.x and facet.y).
Deviation plots that can be produced are the absolute and relative deviations
boxplots and plots of medians deviations (see which.plots).
By default, the single smooth for an arbitrarily chosen combination of the
smoothing parameters is returned by the function. The smooth for a single
combination other than default combination can be nominated for return
using the chosen.smooth.args argument. This combination must involve
only the supplied values of the smoothing parameters. The values for
response, the response.smoothed and their AGRs
and RGRs are are added to data, after any pre-existing
columns of these have been removed from data. Profile plots of
the three smoothed traits are produced using plotProfiles.
However, if chosen.smooth.args is NULL, all of the smooths will be
returned in a smooths.frame, and plots for the single
combination of the smoothing parameters will not be produced.
Value
A smooths.frame or a data.frame that contains
the unsmoothed and smoothed data in long format. That is, all the values for
either an unsmoothed or a smoothed trait are in a single column.
A smooths.frame will be returned when (i) chosen.smooth.args
is NULL and there is more than one smooth specified by the smoothing
parameter arguments, or (ii) chosen.smooth.args is not NULL but
mergedata is NULL. It will contain the smooths for a trait for the
different combinatons of the smoothing parameters, the values for the different
smooths being placed in rows one below the other. The columns that are included
in the smooths.frame are Type, TunePar,
TuneVal, Tuning and Method, as well as those specified by
individuals, times, response, and response.smoothed,
and any included in the keep.columns, plots and facet
arguments when the smooths were produced. The AGR or RGR for the
response and response.smoothed, if obtained, will also be
included. A smooths.frame has the attributes described in
smooths.frame.
A data.frame will be returned when (i) chosen.smooth.args
and mergedata are not NULL or (ii) chosen.smooth.args is
NULL, data is not a smooths.frame and there is only one
smooth specified by the smoothing parameter arguments. In either case, if
mergedata is not NULL, the chosen smooth or the single smooth
will be merged with the data.frame specified by mergedata.
When there is a single smooth and both mergedata and
chosen.smooth.args are NULL, the data.frame will
include the columns individuals, times, response, and
response.smoothed, and any included in the keep.columns,
plots and facet arguments, as well as any growth rates calculated
as a result of get.rates and trait.type.
The smooths.frame/data.frame is returned invisibly.
Author(s)
Chris Brien
References
Brien, C., Jewell, N., Garnett, T., Watts-Williams, S. J., & Berger, B. (2020). Smoothing and extraction of traits in the growth analysis of noninvasive phenotypic data. Plant Methods, 16, 36. doi:10.1186/s13007-020-00577-6.
See Also
args4smoothing, args4meddevn_plot, args4profile_plot,
args4chosen_smooth,
args4chosen_plot, probeSmooths
plotSmoothsComparison and
plotSmoothsMedianDevns, ggplot.
Examples
data(exampleData)
longi.dat <- longi.dat[1:140,] #reduce to a smaller data set
vline <- list(ggplot2::geom_vline(xintercept=29, linetype="longdash", linewidth=1))
yfacets <- c("Smarthouse", "Treatment.1")
smth.dat <- traitSmooth(data = longi.dat,
response = "PSA", response.smoothed = "sPSA",
individuals = "Snapshot.ID.Tag",times = "DAP",
keep.columns = yfacets,
smoothing.args =
args4smoothing(df = c(5,7),
lambda = list(PS = c(0.316,10))),
profile.plot.args =
args4profile_plot(facet.y = yfacets,
ggplotFuncs = vline),
chosen.plot.args =
args4chosen_plot(facet.y = yfacets,
ggplotFuncs = vline))