Functional Data Analysis and Utilities for Statistical Computing

Routines for exploratory and descriptive analysis of functional data such as depth measurements, atypical curves detection, regression models, supervised classification, unsupervised classification and functional analysis of variance.


Release 1.5.0: This version was released in Jan. 2019 to accompany Manuel Oviedo de la Fuente PhD Thesis, see Minerva (University of Santiago de Compostela) repository.

New function implemented: fregre.gsam.vs() accompany paper: Febrero-Bande, M., Gonz'{a}lez-Manteiga, W. and Oviedo de la Fuente, M. Variable selection in functional additive regression models, (2018).
Computational Statistics, 1-19. DOI: \url{}

The current function "" returns an object called fregre.basis (same output as if the "fregre.basis" function had been used) that uses the selected parameters according to the indicated criteria (see example below). The previous function version (up to version 1.5.0) has been renamed in the function "". It is marked as deprecated in the current version and will be deleted in the next version of the package, thanks to Beatriz Bueno.

New functions: plot.fregre.lm and summary.fregre.lm solve errors in the summary of the in fregre.lm function, thanks to Prof. Andros Kourtellos. A bug in fregre.pc has been fixed (thanks to Prof. Eduardo Garcia-Portugues).

This version Release 1.4.0: as released in Dec. 2017 to accompany paper:

Ordonez, C., Oviedo de la Fuente, M., Roca-Pardi�as, J., Rodriguez-Perez, J. R. (2017). Determining optimum wavelengths for leaf water content estimation from reflectance: A distance correlation approach. \emph{Chemometrics and Intelligent Laboratory Systems}, (2018) 173,41-50 \url{}. New functions implemented: and LMDC.regression().

'Oviedo de la Fuente M., Febrero-Bande M., Munoz M.P., Dominguez A. Predicting seasonal influenza transmission using Regression Models with Temporal Dependence' arXiv:1610.08718, URL' The functions fregre.gls and fregre.igls implement the functional linear model with dependent errors (functional GLs and functional iterative GLS respectively). The "fda.usc/inst/script/" folder contains the code that reproduces the results of the paper (see the scripts whose prefix is "PLOS").

This package version ALSO companion for the paper: "Goodness-of-fit tests for the functional linear model based on randomly projected empirical processes" Cuesta-Albertos et al., 2017). The package implements goodness-of-fit tests for the functional linear model with scalar response.

A bug in functional derivative by raw derivation (function fdata.deriv() with method="diff") has been fixed, thanks to Marcos Matabuena.

A bug in classif.knn() and predict.classif() has been fixed, thanks to Ricardo Recarey. A bug in CV.S() function has been fixed, thanks to Miquel Carbajo. A bug in anova.hetero has been fixed, thanks to Beatriz Bueno.

Release 1.3.0: This version was released in Nov. 2016 as the working version to accompany paper: 'Oviedo de la Fuente M., Febrero-Bande M., Munoz M.P., Dominguez A. Predicting seasonal influenza transmission using Regression Models with Temporal Dependence' arXiv:1610.08718, URL'

Beta version functions to Fit Functional Linear Model Using Generalized Least Squares: "fregre.gls", "fregre.igls", "GCCV.S", "predict.fregre.gls" and "predict.fregre.igls" Internal function "auxiliar", "corSigma", "corStruct".

The functionality of the functions "+.fdata", "-.fdata", "*.fdata" an "/.fdata" has been improved.

S3 functions for fdata class calculations: "" and "anyNA.fdata". Function "" returns a vector with the number of "NA" of each curve.

Internal function "" is deprecated.

fdata function converts "xtab" and "ftable" class object into "fdata" class object.

Release 1.2.3: Modification of classif.DD function for DDk classifier. New functions length.fdata, NROW.fdata, NCOL.fdata, gridfdata and rcombfdata. depth.KFSD function implements a depth measure based on Kernelized Functional Spatial Depth.
depth.FSD function implements a depth measure based on Functional Spatial Depth.
A bug in fregre.pc() function has been fixed. A bug in depth.RPD() function has been fixed.

Release 1.2.2: Warning message in, and, fregre.basis(), fregre.pc() and fregre.pls() functions when system is computationally singular. A bug in predict.classif() function using a fitted object by classif.knn() has been fixed. The argument "trim" is modified from 0.1 to 0.25 in the function quantile.outliers.trim The internal distance functions: euclidean, manhattan, minkowski and maximum allow a vector of weights. In classif.DD function, the polynomial classifier ("DD1", "DD2" and "DD3") uses the original procedure proposed by Li et al. (2012), rotating the DD-plot (to exchange abscise and ordinate). The procedure extend to multi-class problems by incorporating the method of majority voting in the case of polynomial classifier and the method One vs the Rest in the logistic case ("glm" and "gam"). The fregre.gkam function only considers functional covariates (not implemented for non-functional covariates). In the depth.FM function it has been renamed the argument "dfunc" by "dfunc2". subset.fdata is a wrapper function of subset function.

Release 1.2.1: The functions dcor.xy, dcor.test(), bcdcor.dist() and dcor.dist() (wrapper function of energy package) are added. fregre.gsam() function can be used without smoothed vairables. A bug in "selec" argument of summary.fregre.gkam() has been fixed. A bug in "h" argument of fregre.plm() has been fixed. A bug in sigma="vexponential" of rproc2fdata() has been fixed. The default values depth.RPp, depth.RP and rproc2fdata() have been modified. A classif.DD function uses the same bandwidth "h" for k groups in modal depth. the same projections "proj" for k groups in RP depth. A bug in predict.fregre.gsam() when PLS are previously estimated using norm=TRUE has been fixed.

Release 1.2.0: New functions, classif.DD, fits Nonparametric Classification Procedure Based on DD�plot (depth-versus-depth plot) for G groups. depth.FMp, depth.modep and depth.RPp functions provide the depth measure for a list of p--functional data objects. metric.ldata, computes distance for a list of p--functional data objects. metric.hausdorff, computes hausdorff distance. Multivariate depth functions have been renamed: "depth." to "mdepth.".

Release 1.1.0: New functions, fits functional response model. metric.kl computes Kullback--Leibler distance. anova.onefactor: tests one--way anova model for functional data. split.fdata, unlist.fdata: A wrapper functions of the split and unlist function for functional data. func.mean.formula computes the mean curve for the each level of grouping variable.

New dataset, Mithochondiral calcium overload (MCO) data set.

New utilities, fdata converts arrays of 3 dimension in a functional data of 2 dimension plot.fdata allows functional data of 2 dimension. The functions fdata2ppc, fdata2ppls, fregre.ppc, fregre.ppls,, are deprecated in favor of fdata2pc,fdata2pls, fregre.pc,, fregre.pls, These latter functions include penalty arguments.

Release 1.0.5: "pls" package dependency has been removed. A bug in outlier.ltr() function has been fixed in the case of the rownames (of fdata) can not be converted to numeric values. A bug in fregre.lm() function has been fixed in the case of one of the covariates is a factor and penalization argument is required (rn or lambda greater than zero). The new argument "lambda" in fregre.lm() penalizes the derivative of second order of the functional data. New arguments in predict.fregre.fd() and predict.fregre.lm() produce confidence or prediction intervals at the specified level mimicking predict.lm(). New argument "verbose" in min.basis(), and rproc2fdata(). The argument "mu" in rproc2fdata() allows vector and also fdata class object.

Release 1.0.4: A bug in fregre.pls() function has been fixed in the case of the FPLS basis are created with the argument norm is TRUE (the curves are centred and scaled). A bug in outliers.depth.trim() function has been fixed in the case of the procedure requires more than one iteration step.

Release 1.0.3 introduces new function classif.depth() that fits a nonparametric classification procedure based on maximum depth measure. Penalized FPC an FPLS basis are computed in create.pc.basis and create.pls.basis by the new arguments "lambda" and "P". A bug in predict.fregre.fd() function has been fixed (in the case of the "object" is fitted using funtional partial least square basis).

Release 1.0.2 introduces new functions: New argument "" in predict.fregre.fd() and predict.fregre.lm() function. A bug in CV.S() function when "y" argument is a fdata object has been fixed. This "bug" has involved the function. In metric.lp() function NA values are returned, if the fdata has NA's values. In metric.lp() function supremum distance is computed, if "lp" argument is 0.

Release 1.0.1 New functions: New depth functions and its corresponding shortcut functions (see help(Descriptive) form more details): depth.SD() provides the simplicial depth measure for bivariate data. depth.PD() provides the depth measure using random projections for multivariate data. depth.MhD() provides the Mahalanobis depth measure for multivariate data. depth.HD() provides the half-space depth measure for multivariate data. It introduces a new functions for functional PC and PLS regression: fregre.ppc,fregre.ppls,,, and the auxiliary functions: fdata2ppc,fdata2ppls,P.penalty. The function has been renamed by rwild() function. Now, rwild() contructs the Wild bootstrap residuals. order.fdata() is a wrapper function of order function.

New arguments and options: New arguments "wild" and "type.wild" in fregre.bootstrap(). In fregre.glm(), fregre.gsam(), classif.glm2boost(), classif.gsam2boost() the "fdataobj" argument allows a multivariate data or functional data. fregre.lm() allows penalization by "rn" parameter (ridge regression). fregre.pc() and fregre.basis() allow weighted least squares by "weights" argument.

Correction of bugs: A bug in "draw" argument of fdata.bootstrap() has been fixed. A bug in predict.classif() function ussing a fitted object by classif.knn() has been fixed. A bug in create.pc.basis() function when "l" argument has length 1 has been fixed. This "bug" has involved the following functions: fregre.lm(), fregre.glm() and fregre.gsam().

Release 1.0.0 was released in Oct. 2012 as the working version to accompany 'Febrero-Bande, M. and Oviedo de la Fuente, M. (2012). 'Statistical Computing in Functional Data Analysis: The R Package fda.usc. Journal of Statistical Software, 51(4), 1-28., URL' New functions added: depth.RT() implements a random Tukey depth (RT) and its corresponding some shortcut functions. metric.dist() methods as wrappers for dist(), New arguments in depth.FM(), depth.RP(), depth.mode() and fdata(). The functions: fregre.glm(), fregre.gsam(), fregre.gkam(),, classif.glm(), classi.glm() allow functional and multivariate analysis.

Release introduces new functions flm.Ftest() and dfv.test(). The first performs a functional F-test and the second implements the test of Delsol, Ferraty and Vieu (2010). Function flm.test() now has a better computational performance and function Aijr() has been replaced by Adot(). New argument "lambda" in fdata2fd() function. New argument "rn" in create.pc.basis() function. fregre.kgam() has been renamed to fregre.gkam().

Release 0.9.8 introduces a new function flm.test() that allows to test for the Functional Linear Model with scalar response for a given dataset. Is based on the new functions PCvM.statistic(), Aijr() and A bug in fregre.kgam has been fixed.

Release 0.9.7 New functions: fregre.kgam(), classif.kgam(), dev.S(), predict.fregre.kgam(), print.fregre.kgam(), summary.fregre.kgam(), fregre.gsam(),, classif.kgam(), classif.gsam().

New argument "par.S" in:,, fregre.plm(), S.NW(), S.KNN(), S.LLR().

New attributes for: metric.lp(), semimetric.basis() and semimetric.NPFDA()

Release 0.9.6 renames the functions: pc.fdata()-->fdata2pc() pls.fdata()-->fdata2pls() pc.cor()-->summary.fdata.comp() pc.fdata()-->summary.fdata.comp() It added create.pls.basis(), Math.fdata(), Ops.fdata(), Summary.fdata() and dis.cos.cor() function.

New argument par.S in:,, fregre.plm, New argument cv in: S.NW,S.KNN, S.LLR, In metric.lp the argument p now is called lp.

Release 0.9.5 improves fdata.bootstrap() function (better computational efficiency). It introduces a new functions: for Partial Linear Square (pls.fdata(), fregre.pls() and and Simpson integration (int.simpson() and int.simpson2()). It modifies the functions metric.lp(), inprod.fdata(), summary.fregre.fd() and predict.fregre.fd().

Release 0.9.4 added 3 script files: Outliers_fdata.R, flm_beta_estimation_brownian_data.R and Classif_phoneme.R. It has introduced the functions fregre.glm() and predict.fregre.glm() which allow fit and predict respectively Functional Generalized Linear Models. It has introduced the functions create.pc.basis and create.fdata.basis which allow to create basis objects for functional data of class "fdata".

Release 0.9 introduces a new function h.default() that simplifies the calculation of the bandwidth parameter "h" in the functions:, and fregre.plm().
In most of the functions has added a stop control when the dataset has missing data (NA's). It adds the attribute "call" to the distance matrix calculated in metric.lp(), semimetric.basis() and semimetric.NPFDA() functions.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.5.0 by Manuel Oviedo de la Fuente, 2 months ago

Report a bug at

Browse source code at

Authors: Manuel Febrero Bande [aut] , Manuel Oviedo de la Fuente [aut, cre] , Pedro Galeano [ctb] , Alicia Nieto [ctb] , Eduardo Garcia-Portugues [ctb]

Documentation:   PDF Manual  

Task views: Functional Data Analysis

GPL-2 license

Imports methods, grDevices, graphics, utils, stats, nlme

Depends on fda, splines, MASS, mgcv, rpart

Imported by PCRedux, classiFunc.

Depended on by GPFDA, ILS, MFHD, NITPicker, qcr.

Suggested by mlr.

See at CRAN