Functional clustering aims to identify the role played by each component belonging to an interactive system on the genesis of a collective, system-specific performance. It needs the observation of a collection of assemblages of components of different elemental composition, of which collective, system-specific performances are observed. A functional clustering groups the components of the interactive system on the basis of their effects on the system-specific performance. The method hierarchises de facto the functional groups: the first division explains most of the observed variance, and the subsequent divisions explain a smaller and smaller part of the observed variance.
Functional clustering thus leads to ask the following questions: are some components that belong to each functional group more efficient than others? How can component efficiency be assessed? Is it possible to priorize components for their effect on system performance? Similar questions can be raised about relative importance of different observations, that is different observed component assemblages of the collection, or of different observed performances in the case of repeated observations of the performance, or the observations of different properties carried out by the interactive system.
The function ftest answer to the questions. The method is based on removing one element of the dataset and evaluating the perturbation induced on functional clustering. The removed element can be a system component, a component assemblage, or an assemblage performance. The induced perturbation is evaluated by comparing the clustering tree obtained with removing the element, to the reference clustering tree obtained with the complete dataset. Different indices are computed, using the R-package clusterCrit (Package “clusterCrit”: Clustering Indices, by Bernard Desgraupes, University of Paris Ouest - Lab Modal’X). The indices are: Precision index and Recall index, or indices proposed by different authors as Czekanowski_Dice index, Folkes_Mallows index, Jaccard index, Kulczynski index, Rogers_Tanimoto index, Russel_Rao index, and both Sokal_Sneath1 and Sokal_Sneath2 indices.
The function ftest needs first that the function fclust is run for computing the reference clustering tree obtained with the complete dataset. The object returned by fclust is noted fres. The options of ftest are:
opt.var determines the variable to treat. The option can be “components”, “assemblages” or “performances”.
opt.nbMax determines the tree level to be reached. The function ftest is very time-consuming since it is based on the repeat of functional clusterings. Then, only the validated lowest part of the tree is interesting, from trunk (tree-level = 1) until the optimum level fres$nbOpt. Beyond the optimum level fres$nbOpt, the clustering does not bring any supplementary information. The computation therefore deserves to be stopped at this tree level. In ftest, the option opt.nbMax = fres$nbOpt by default. The option opt.nbMax allows the user to change the stop tree-level, more or less.
opt.R2 determines if the user needs to compute other statistiques than clustering indices. If opt.R2 = TRUE, each primary tree is validated and the vectors of coefficient of determination R2 and efficiency E are computed.
opt.plot determines if the user wish to follow the computation by plotting the resulting tree at each element removing. If option opt.plot = TRUE, the resulting tree is plotted at each element removing. The removed element is indicated on the tree plot.
The function ftest returns an object rtest, which consists on a list of matrices, each matrix containing the results for a given clustering index, and R2 and E if opt.R2 was checked.
The function ftest_plot first needs the object fres generated by the function fclust, and the object rtest generated by the function ftest. The options of ftest_plot are:
opt.crit determines the indices to be plotted. The option opt.crit is a list or a vector of characters choisen among “Czekanowski_Dice”, “Folkes_Mallows”, “Jaccard”, “Kulczynski”, “Precision”, “Rand”, “Recall”, “Rogers_Tanimoto”, “Russel_Rao”, “Sokal_Sneath1” and “Sokal_Sneath2”.
opt.var determines the variable to plot. The option can be “components”, “assemblages” or “performances”.
fclust_plot(fres = CedarCreek.2004.2006.res, opt.tree = "prd")
ftest_plot(fres = CedarCreek.2004.2006.res,
rtest = CedarCreek.2004.2006.test.components,
main = "BioDIV2",
opt.var = "comp", opt.crit = "Jaccard", opt.comp = "sorted.tree")
The graph on the left is the raw tree, directly obtained with the function fclust. On the right, the components of the tree are sorted by their decreasing effect of Jaccard index when they are one by one removed from dataset. For instance, within the component cluster “b” (in blue), the effect induced by species on ecosystem biomass can be sorted as: “Liass” > “Lesca” > “Amocan”.
ftest_plot(fres = CedarCreek.2004.2006.res,
rtest = CedarCreek.2004.2006.test.assemblages,
main = "BioDIV2", opt.var = "assemblages")
The graph shows the mean Jaccard index when each assemblage is one by one removed from dataset. And the text indicates the assemblages sorted by decreasing effect within each assembly motif on the functional clustering.
For instance, the assembly motif ad has the highest mean performance. The effect induced by removing assemblage can be sorted as: “plot 193” > “234” > “300” > “342”.
The functions ftest_write and ftest_read allow to save and load, respectively, the results generated by the function ftest.
Note that some computations are time-consuming. To facilitate the monitoring of the smooth running of the computations, informations are written on the Console and graphs are drawn on the Plots panel. The writting are enable or disable by the “verbose” option.
getOption("verbose")
#> [1] FALSE
# to follow the computations
options(verbose = TRUE)
# to deactivate the option
options(verbose = FALSE)