| FPCA.FEM {fdaPDE} | R Documentation |
Smooth Functional Principal Component Analysis
Description
This function implements a smooth functional principal component analysis over a planar mesh, a smooth manifold or a volume.
Usage
FPCA.FEM(locations = NULL, datamatrix, FEMbasis, lambda, nPC = 1, validation = NULL,
NFolds = 5,GCVmethod = "Stochastic", nrealizations = 100, search = "tree",
bary.locations = NULL)
Arguments
locations |
A #observations-by-2 matrix in the 2D case and #observations-by-3 matrix in the 2.5D and 3D case, where
each row specifies the spatial coordinates |
datamatrix |
A matrix of dimensions #samples-by-#locations with the observed data values over the domain
for each sample. The datamatrix needs to have zero mean.
If the |
FEMbasis |
A |
lambda |
A scalar or vector of smoothing parameters. |
nPC |
An integer specifying the number of Principal Components to compute. |
validation |
A string specifying the type of validation to perform. If |
NFolds |
This parameter is used only in case |
GCVmethod |
This parameter is considered only when |
nrealizations |
The number of realizations to be used in the stochastic algorithm for the estimation of GCV. |
search |
a flag to decide the search algorithm type (tree or naive or walking search algorithm). |
bary.locations |
A list with three vectors:
|
Value
A list with the following variables:
loadings.FEMA
FEMobject that represents the L^2-normalized functional loadings for each Principal Component computed.scoresA #samples-by-#PrincipalComponents matrix that represents the unnormalized scores or PC vectors.
lambdaA vector of length #PrincipalComponents with the values of the smoothing parameter
lambdachosen for that Principal Component.variance_explainedA vector of length #PrincipalComponents where each value represent the variance explained by that component.
cumsum_percentageA vector of length #PrincipalComponents containing the cumulative percentage of the variance explained by the first components.
bary.locationsA barycenter information of the given locations if the locations are not mesh nodes.
References
Lila, E., Aston, J.A.D., Sangalli, L.M., 2016a. Smooth Principal Component Analysis over two-dimensional manifolds with an application to neuroimaging. Ann. Appl. Stat., 10(4), pp. 1854-1879.
Examples
library(fdaPDE)
## Load the hub data
data(hub2.5D)
hub2.5D.nodes = hub2.5D$hub2.5D.nodes
hub2.5D.triangles = hub2.5D$hub2.5D.triangles
mesh = create.mesh.2.5D(nodes = hub2.5D.nodes, triangles = hub2.5D.triangles)
## Create the Finite Element basis
FEMbasis = create.FEM.basis(mesh)
## Create a datamatrix
datamatrix = NULL
for(ii in 1:50){
a1 = rnorm(1, mean = 1, sd = 1)
a2 = rnorm(1, mean = 1, sd = 1)
a3 = rnorm(1, mean = 1, sd = 1)
func_evaluation = numeric(nrow(mesh$nodes))
for (i in 0:(nrow(mesh$nodes)-1)){
func_evaluation[i+1] = a1* sin(2*pi*mesh$nodes[i+1,1]) +
a2* sin(2*pi*mesh$nodes[i+1,2]) +
a3*sin(2*pi*mesh$nodes[i+1,3]) + 1
}
data = func_evaluation + rnorm(nrow(mesh$nodes), mean = 0, sd = 0.5)
datamatrix = rbind(datamatrix, data)
}
## Compute the mean of the datamatrix and subtract it to the data
data_bar = colMeans(datamatrix)
data_demean = matrix(rep(data_bar,50), nrow=50, byrow=TRUE)
datamatrix_demeaned = datamatrix - data_demean
## Set the smoothing parameter lambda
lambda = 0.00375
## Estimate the first 2 Principal Components
FPCA_solution = FPCA.FEM(datamatrix = datamatrix_demeaned,
FEMbasis = FEMbasis, lambda = lambda, nPC = 2)
## Plot the functional loadings of the estimated Principal Components
plot(FPCA_solution$loadings.FEM)