| byIndv4Times_SplinesGRs | R Documentation | 
data.frame in long format, computes, 
for a single set of smoothing parameters, smooths of the 
response, possibly along with growth rates calculated from the 
smooths.Uses smoothSpline to fit a spline to the values 
of response for each individual and stores the fitted 
values in data. The degree of smoothing is controlled by the 
tuning parameters df and lambda, related to the 
penalty, and by npspline.segments. The smoothing.method 
provides for direct and logarithmic smoothing. 
The Absolute and Relative Growth Rates ( AGR and RGR) can be computed 
either using the first derivatives of the splines or by differencing 
the smooths. If using the first derivative to obtain growth rates, 
correctBoundaries must be FALSE. Derivatives other than the 
first derivative can also be produced. The function 
byIndv4Times_GRsDiff is used to obtain growth rates by 
differencing.
The handling of missing values in the observations is controlled via 
na.x.action and na.y.action. If there are not 
at least four distinct, nonmissing x-values, a warning is issued and 
all smoothed values and derivatives are set to NA. 
The function probeSmooths can be used to investgate the effect 
the smoothing parameters 
 (smoothing.method, df or  
lambda) on the smooth that results.
byIndv4Times_SplinesGRs(data, response, response.smoothed = NULL, 
                        individuals = "Snapshot.ID.Tag", times, 
                        smoothing.method = "direct", smoothing.segments = NULL, 
                        spline.type = "NCSS", df=NULL, lambda = NULL, 
                        npspline.segments = NULL, 
                        correctBoundaries = FALSE, 
                        rates.method = "differences", 
                        which.rates = c("AGR","RGR"), 
                        suffices.rates = NULL, sep.rates = ".", 
                        avail.times.diffs = FALSE, ntimes2span = 2, 
                        extra.derivs = NULL, suffices.extra.derivs=NULL, 
                        sep.levels = ".", 
                        na.x.action="exclude", na.y.action = "trimx", ...)
data | 
 A   | 
response | 
 A   | 
response.smoothed | 
 A   | 
individuals | 
 A   | 
times | 
 A   | 
smoothing.method | 
 A   | 
smoothing.segments | 
 A named   | 
spline.type | 
 A   | 
df | 
 A   | 
lambda | 
 A   | 
npspline.segments | 
 A   | 
correctBoundaries | 
 A   | 
rates.method | 
 A   | 
which.rates | 
 A   | 
suffices.rates | 
 A   | 
sep.rates | 
 A   | 
avail.times.diffs | 
 A   | 
ntimes2span | 
 A   | 
extra.derivs | 
 A   | 
suffices.extra.derivs | 
 A   | 
.
sep.levels | 
 A   | 
na.x.action | 
 A   | 
na.y.action | 
 A   | 
... | 
 allows for arguments to be passed to   | 
A data.frame containing  data to which has been 
added a column with the fitted smooth, the name of the column being 
the value of response.smoothed. If rates.method is 
not none, columns for the growth rates listed in 
which.rates will be added to data; the names each of 
these columns will be the value of response.smoothed with 
the elements of which.rates appended. 
When rates.method is derivatives and 
smoothing.method is direct, the AGR is obtained 
from the first derivative of the spline for each value of times 
and the RGR is calculated as the AGR divided by the 
value of the response.smoothed for the corresponding time. 
When rates.method is derivatives and 
smoothing.method is logarithmic, the RGR is 
obtained from the first derivative of the spline and the AGR 
is calculated as the RGR multiplied by the corresponding 
value of the response.smoothed.
If extra.derivs is not NULL, the values for the 
nominated derivatives will also be added to data; the names 
each of these columns will be the value of response.smoothed 
with .dvf appended, where f is the order of the 
derivative, or  the value of response.smoothed 
with the corresponding element of suffices.deriv appended. 
Any pre-existing smoothed and growth rate columns in data will be 
replaced. The ordering of the data.frame for the times 
values will be preserved as far as is possible; the main difficulty 
is with the handling of missing values by the function merge. 
Thus, if missing values in times are retained, they will occur at 
the bottom of each subset of individuals and the order will be 
problematic when there are missing values in y and 
na.y.action is set to omit.
Chris Brien
Eilers, P.H.C and Marx, B.D. (2021) Practical smoothing: the joys of P-splines. Cambridge University Press, Cambridge.
Huang, C. (2001) Boundary corrected cubic smoothing splines. Journal of Statistical Computation and Simulation, 70, 107-121.
smoothSpline, probeSmooths, byIndv4Times_GRsDiff, 
smooth.spline, predict.smooth.spline, 
split
data(exampleData)
#smoothing with growth rates calculated using derivates
longi.dat <- byIndv4Times_SplinesGRs(data = longi.dat, 
                                     response="PSA", response.smoothed = "sPSA", 
                                     times="DAP", 
                                     df = 4, rates.method = "deriv", 
                                     suffices.rates = c("AGRdv", "RGRdv"))
#Use P-splines
longi.dat <- byIndv4Times_SplinesGRs(data = longi.dat, 
                                     response="PSA", response.smoothed = "sPSA", 
                                     individuals = "Snapshot.ID.Tag", times="DAP", 
                                     spline.type = "PS", lambda = 0.1, 
                                     npspline.segments = 10, 
                                     rates.method = "deriv", 
                                     suffices.rates = c("AGRdv", "RGRdv"))
#with segmented smoothing and no growth rates
longi.dat <- byIndv4Times_SplinesGRs(data = longi.dat, 
                                     response="PSA", response.smoothed = "sPSA", 
                                     individuals = "Snapshot.ID.Tag", times="DAP", 
                                     smoothing.segments = list(c(28,34), c(35,42)), 
                                     df = 5, rates.method = "none")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.