Calculate a cosine basis representation for functional data on two- or three-dimensional domains
Calculate a cosine basis representation for functional data on two- or three-dimensional domains
These functions calculate a tensor cosine basis representation for functional data on two- or three-dimensional domains based on a discrete cosine transformation (DCT) using the C-library fftw3
(http://www.fftw.org/). Coefficients under a given threshold are set to 0 to reduce complexity and for denoising.
containing the observed functional data samples and for which the basis representation is calculated.
qThresh: A numeric with value in [0,1], giving the quantile for thresholding the coefficients. See Details.
parallel: Logical. If TRUE, the coefficients for the basis functions are calculated in parallel. The implementation is based on the foreach function and requires a parallel backend that must be registered before; see foreach for details. Defaults to FALSE.
Returns
scores: A sparseMatrix of scores (coefficients) with dimension N x K, reflecting the weights θmn (θmnk) for each basis function in each observation, where K is the total number of basis functions used. - B: A diagonal matrix, giving the norms of the different basis functions used (as they are orthogonal).
ortho: Logical, set to FALSE, as basis functions are orthogonal, but in general not orthonormal.
functions: NULL, as basis functions are known.
Details
Given the (discretized) observed functions Xi, the function dctBasis2D calculates a basis representation
Xi(s,t)=m=0∑K1−1n=0∑K2−1θmnfmn(s,t)
of a two-dimensional function Xi(s,t) in terms of (orthogonal) tensor cosine basis functions
If not thresholded (qThresh = 0), the function returns all non-zero coefficients θmn in the basis representation in a sparseMatrix (package Matrix) called scores. Otherwise, coefficients with
∣θmn∣<=q
are set to zero, where q is the qThresh-quantile of ∣θmn∣.
For functions Xi(s,t,u) on three-dimensional domains, the function dctBasis3D calculates a basis representation
again with cm=pi1 for m=0 and c("cm=\n", "sqrtfrac2pi") for m=1,2,… based on a discrete cosine transform (DCT). The thresholding works analogous as for the two-dimensional case.
Warning
If the C-library fftw3 is not available when the package MFPCA is installed, this function is disabled an will throw an error. For full functionality install the C-library fftw3 from http://www.fftw.org/ and reinstall MFPCA. This function has not been tested with ATLAS/MKL/OpenBLAS.