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.
dctBasis2D(funDataObject, qThresh, parallel = FALSE)dctBasis3D(funDataObject, qThresh, parallel = FALSE)
A sparseMatrix of scores
(coefficients) with dimension N x K, reflecting the weights
\(\theta_{mn}\) (\(\theta_{mnk}\)) for each basis function in
each observation, where K is the total number of basis
functions used.
A diagonal matrix, giving the norms of the different basis functions used (as they are orthogonal).
Logical, set to FALSE, as basis functions are
orthogonal, but in general not orthonormal.
NULL, as basis functions are known.
An object of class funData
containing the observed functional data samples and for which the
basis representation is calculated.
A numeric with value in \([0,1]\), giving the quantile for thresholding the coefficients. See Details.
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.
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.
Given the (discretized) observed functions \(X_i\), the function
dctBasis2D calculates a basis representation $$X_i(s,t) =
\sum_{m = 0}^{K_1-1} \sum_{n = 0}^{K_2-1} \theta_{mn} f_{mn}(s,t)$$ of a
two-dimensional function \(X_i(s,t)\) in terms of (orthogonal) tensor
cosine basis functions $$f_{mn}(s,t) = c_m c_n \cos(ms) \cos(nt),
\quad (s,t) \in \mathcal{T}$$ with \(c_m = \frac{1}{\sqrt{\pi}}\) for
\(m=0\) and \(c_m = \sqrt{\frac{2}{\pi}}\) for \(m=1,2,\ldots\)
based on a discrete cosine transform (DCT).
If not thresholded (qThresh = 0), the function returns all
non-zero coefficients \(\theta_{mn}\) in the basis representation in
a sparseMatrix (package Matrix) called
scores. Otherwise, coefficients with $$|\theta_{mn}| <= q $$
are set to zero, where \(q\) is the qThresh-quantile of
\(|\theta_{mn}|\).
For functions \(X_i(s,t,u)\) on three-dimensional domains, the
function dctBasis3D calculates a basis representation
$$X_i(s,t,u) = \sum_{m = 0}^{K_1-1} \sum_{n = 0}^{K_2-1} \sum_{k =
0}^{K_3-1} \theta_{mnk} f_{mnk}(s,t,u)$$ in terms of (orthogonal) tensor
cosine basis functions $$f_{mnk}(s,t,u) = c_m c_n c_k \cos(ms)
\cos(nt) \cos(ku), \quad (s,t,u) \in \mathcal{T}$$ again with
\(c_m = \frac{1}{\sqrt{pi}}\) for \(m=0\) and \(c_m =
\sqrt{\frac{2}{pi}}\) for \(m=1,2,\ldots\) based on a discrete cosine
transform (DCT). The thresholding works analogous as for the
two-dimensional case.
univDecomp, dct2D,
dct3D