FClust {fdapace} | R Documentation |
Functional clustering and identifying substructures of longitudinal data
Description
Default: Cluster functional data using the functional principal component (FPC) scores obtained from the data FPC analysis using EMCluster (Chen and Maitra, 2015) or directly clustering the functional data using kCFC (Chiou and Li, 2007).
Usage
FClust(Ly, Lt, k = 3, cmethod = "EMCluster", optnsFPCA = NULL, optnsCS = NULL)
Arguments
Ly |
A list of n vectors containing the observed values for each individual. Missing values specified by |
Lt |
A list of n vectors containing the observation time points for each individual corresponding to y. |
k |
A scalar defining the number of clusters to define; default 3. |
cmethod |
A string specifying the clustering method to use ('EMCluster' or 'kCFC'); default: 'EMCluster'. |
optnsFPCA |
A list of options control parameters specified by |
optnsCS |
A list of options control parameters specified by |
Details
Within EMCluster, uses the model initiated EMCluster::em.EM
and returns the optimal model based on EMCluster::emcluster
.
See ?EMCluster::emcluster for details.
Value
A list containing the following fields:
cluster |
A vector of levels 1:k, indicating the cluster to which each curve is allocated. |
fpca |
An FPCA object derived from the sample used by Rmixmod, otherwise NULL. |
clusterObj |
Either a EMCluster object or kCFC object. |
References
Wei-Chen Chen and Ranjan Maitra, "EMCluster: EM Algorithm for Model-Based Clustering of Finite Mixture Gaussian Distribution". (2015)
Julien Jacques and Cristian Preda, "Funclust: A curves clustering method using functional random variables density approximation". Neurocomputing 112 (2013): 164-171
Jeng-Min Chiou and Pai-Ling Li, "Functional clustering and identifying substructures of longitudinal data". Journal of the Royal Statistical Society B 69 (2007): 679-699
Examples
data(medfly25)
Flies <- MakeFPCAInputs(medfly25$ID, medfly25$Days, medfly25$nEggs)
newClust <- FClust(Flies$Ly, Flies$Lt, k = 2, optnsFPCA =
list(methodMuCovEst = 'smooth', userBwCov = 2, FVEthreshold = 0.90))
# We denote as 'veryLowCount' the group of flies that lay less
# than twenty-five eggs during the 25-day period examined.
veryLowCount = ifelse( sapply( unique(medfly25$ID), function(u)
sum( medfly25$nEggs[medfly25$ID == u] )) < 25, 0, 1)
N <- length(unique(medfly25$ID))
(correctRate <- sum( (1 + veryLowCount) == newClust$cluster) / N) # 99.6%