# funkmeans03A: Functional K-Means Clustering by Abraham et al. (2003) In T4cluster: Tools for Cluster Analysis

## Description

Given N curves γ_1 (t), γ_2 (t), …, γ_N (t) : I \rightarrow \mathbf{R}, perform k-means clustering on the coefficients from the functional data expanded by B-spline basis. Note that in the original paper, authors used B-splines as the choice of basis due to nice properties. However, we allow other types of basis as well for convenience.

## Usage

 1 funkmeans03A(fdobj, k = 2, ...) 

## Arguments

 fdobj a 'fd' functional data object of N curves by the fda package. k the number of clusters (default: 2). ... extra parameters including maxiterthe maximum number of iterations (default: 10). nstartthe number of random initializations (default: 5).

## Value

a named list of S3 class T4cluster containing

cluster

a length-N vector of class labels (from 1:k).

mean

a 'fd' object of k mean curves.

algorithm

name of the algorithm.

## References

\insertRef

abraham_unsupervised_2003T4cluster

## Examples

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 # ------------------------------------------------------------- # two types of curves # # type 1 : sin(x) + perturbation; 20 OF THESE ON [0, 2*PI] # type 2 : cos(x) + perturbation; 20 OF THESE ON [0, 2*PI] # type 3 : sin(x) + cos(0.5x) ; 20 OF THESE ON [0, 2*PI] # ------------------------------------------------------------- ## PREPARE : USE 'fda' PACKAGE # Generate Raw Data datx = seq(from=0, to=2*pi, length.out=100) daty = array(0,c(100, 60)) for (i in 1:20){ daty[,i] = sin(datx) + rnorm(100, sd=0.5) daty[,i+20] = cos(datx) + rnorm(100, sd=0.5) daty[,i+40] = sin(datx) + cos(0.5*datx) + rnorm(100, sd=0.5) } # Wrap as 'fd' object mybasis <- fda::create.bspline.basis(c(0,2*pi), nbasis=10) myfdobj <- fda::smooth.basis(datx, daty, mybasis)$fd ## RUN THE ALGORITHM WITH K=2,3,4 fk2 = funkmeans03A(myfdobj, k=2) fk3 = funkmeans03A(myfdobj, k=3) fk4 = funkmeans03A(myfdobj, k=4) ## FUNCTIONAL PCA FOR VISUALIZATION embed = fda::pca.fd(myfdobj, nharm=2)$score ## VISUALIZE opar <- par(no.readonly=TRUE) par(mfrow=c(1,3)) plot(embed, col=fk2$cluster, pch=19, main="K=2") plot(embed, col=fk3$cluster, pch=19, main="K=3") plot(embed, col=fk4\$cluster, pch=19, main="K=4") par(opar) 

T4cluster documentation built on Aug. 16, 2021, 9:07 a.m.