Performs an agglomerative hierarchical clustering on results from a factor analysis. It is possible to cut the tree by clicking at the suggested (or an other) level. Results include paragons, description of the clusters, graphics.

```
HCPC(res, nb.clust=0, consol=TRUE, iter.max=10, min=3,
max=NULL, metric="euclidean", method="ward", order=TRUE,
graph.scale="inertia", nb.par=5, graph=TRUE, proba=0.05,
cluster.CA="rows",kk=Inf,description=TRUE,…)
```

res

Either the result of a factor analysis or a dataframe.

nb.clust

an integer. If 0, the tree is cut at the level the user clicks on. If -1, the tree is automatically cut at the suggested level (see details). If a (positive) integer, the tree is cut with nb.cluters clusters.

consol

a boolean. If TRUE, a k-means consolidation is performed (consolidation cannot be performed if kk is used and equals a number).

iter.max

An integer. The maximum number of iterations for the consolidation.

min

an integer. The least possible number of clusters suggested.

max

an integer. The higher possible number of clusters suggested; by default the minimum between 10 and the number of individuals divided by 2.

metric

The metric used to built the tree. See `agnes`

for details.

method

The method used to built the tree. See `agnes`

for details.

order

A boolean. If TRUE, clusters are ordered following their center coordinate on the first axis.

graph.scale

A character string. By default "inertia" and the height of the tree corresponds to the inertia gain, else "sqrt-inertia" the square root of the inertia gain.

nb.par

An integer. The number of edited paragons.

graph

If TRUE, graphics are displayed. If FALSE, no graph are displayed.

proba

The probability used to select axes and variables in
catdes (see `catdes`

for details.

cluster.CA

A string equals to "rows" or "columns" for the clustering of Correspondence Analysis results.

kk

An integer corresponding to the number of clusters used in a Kmeans preprocessing before the hierarchical clustering; the top of the hierarchical tree is then constructed from this partition. This is very useful if the number of individuals is high. Note that consolidation cannot be performed if kk is different from Inf and some graphics are not drawn. Inf is used by default and no preprocessing is done, all the graphical outputs are then given.

description

boolean; if TRUE the clusters are characterized by the variables and the dimensions

…

Other arguments from other methods.

Returns a list including:

The original data with a supplementary column called clust containing the partition.

The description of the classes by the variables.
See `catdes`

for details or `descfreq`

if clustering
is performed on CA results.

The description of the classes by the factors (axes).
See `catdes`

for details.

A list or parameters and internal objects. `call$t`

gives the results for the hierarchical tree;
`call$bw.before.consol`

and `call$bw.after.consol`

give the between inertia before consolidation (i.e. for the clustering obtained
from the hierarchical tree) and after the consolidation with Kmeans.

The paragons (para) and the more typical individuals of each cluster. See details.

The function first built a hierarchical tree. Then the sum of the within-cluster inertia are calculated for each partition. The suggested partition is the one with the higher relative loss of inertia (i(clusters n+1)/i(cluster n)).

The absolute loss of inertia (i(cluster n)-i(cluster n+1)) is plotted with the tree.

If the ascending clustering is constructed from a data-frame with a lot of rows (individuals), it is possible to first perform a partition with kk clusters and then construct the tree from the (weighted) kk clusters.

`plot.HCPC`

, `catdes`

,
Video showing how to perform clustering with FactoMineR

```
# NOT RUN {
data(iris)
# Principal Component Analysis:
res.pca <- PCA(iris[,1:4], graph=FALSE)
# Clustering, auto nb of clusters:
hc <- HCPC(res.pca, nb.clust=-1)
### Construct a hierarchical tree from a partition (with 10 clusters)
### (useful when the number of individuals is very important)
hc2 <- HCPC(iris[,1:4], kk=10, nb.clust=-1)
# }
```

Run the code above in your browser using DataCamp Workspace