Updates on Functions for Functional Data Analysis in R, SPLUS and Matlab Jim Ramsay, McGill University 6 September 2004 These changes affect only Matlab versions of the functions : All functions and examples have been checked for Matlab Version 7, Release 14. Problems in some of the Version 6.5 code were encountered, so it is advisable to replace these functions if you have updated your Matlab software to Version 7. 1. The most important change is the introduction of two new objects: A. The Lfd object: This object contains information defining a linear differential operator, and that may be nonhomogeneous. This change in the code comes about because of work on data arising from industrial processes where control theory can be applied. These processes are usually represented as nonhomogeneous linear differential equation systems. The new and much more powerful function for principal differential analysis, pdacell(), was designed to estimate such systems from data. Once estimated, the linear differential operator can be used to smooth data and in other ways. The coefficients defining the linear differential operator can each be defined separately, with their own bases, number of basis functions, and so on. In addition, one or more forcing functions, each with its own weight function, may be involved. See the preamble to function Lfd(), found in the directory @Lfd, for more details, as well as the updated example files. Nearly all functions are potentially affected by the introduction of the Lfd object. Moreover, it is now the case that few functions will work with just an integer instead of a properly defined Lfd object. Instead, a new function, int2Lfd(m), converts a nonnegative integer m into a linear differential operator object of class Lfd. B. The fdPar object: This permits us to distinguish between a functional data object of the fd class, which has two essential slots, the coefficient matrix and the basis, and functional parameter objects, which are functional data objects and, in addition, also are defined by: -- a roughness penalty of the Lfd class, -- a positive real smoothing parameter, \lambda -- a binary indicator parameter "estimate" which determines whether the functional parameter is estimated (1) of held fixed (0). The functional parameter class fdPar simplifies the argument list for the many functions that estimate functions using a roughness penalty. By bundling the roughness penalty and the smoothing parameter in with the coefficient matrix and basis object, these ideas are kept together, and the number of arguments needed in functions such as smooth_basis or smooth_monotone is reduced. All of the example files have been modified to take advantage of these new objects. These new objects make full use of Matlab's cell objects. 2. A number of new functions are also added, including smoothing and evaluation functions for positive, monotone, density, and warping functions. The registerfd() function has been reworked considerably. 3. In the case of a B-spline basis, the function bsplinepen() can now compute the penalty matrix exactly instead of using numerical integration. 5. In the case of a B-spline basis, it is now possible to have multiple knots at a breakpoint in order to permit derivatives and even function values to be discontinuous at chosen breakoints. This facility has been enabled to allow for step function inputs to dynamic systems and other linear models. 6. The bases that are now permitted are: -- constant -- bspline -- exponential -- fourier -- polygonal -- power It is expected that these modifications will soon be introduced into the S-PLUS and R code as well. Last modified on: 6 September 2004