Bootstrap validation of MCA, through the computation of the coordinates of active variables for bootstrap replications of the data.

bootvalid_variables(resmca, axes = c(1,2), type = "partial", K = 30)



object of class speMCA.


numeric vector of length 2, specifying the components (axes) to plot. Default is c(1,2).


character string. Can be "partial", "total1", "total2" or "total3" (see details). Default is "partial".


integer. Number of bootstrap replications (default is 30).


The bootstrap technique is used here as an internal and non-parametric validation procedure of the results of a multiple correspondence analysis. Following the work of Ludovic Lebart, several methods are proposed. The "total bootstrap" uses new MCAs computed from bootstrap replications of the initial data. In the type 1 total bootstrap (type = "total1"), the sign of the coordinates is corrected if necessary (the direction of the axes of an ACM being arbitrary). In type 2 (type = "total2"), the order of the axes and the sign of the coordinates are corrected if necessary. In type 3 (type = "total3"), a procrustean rotation is used to find the best superposition between the initial axes and the replicated axes. The "partial bootstrap"" (type = "partial") does not compute new MCAs: it projects bootstrap replications of the initial data as supplementary elements of the MCA. It gives a more optimistic view of the stability of the results than the total bootstrap. It also runs faster. See references for more details, pros and cons of the various types, etc.


A data frame with the following elements :


Names of the active categories


Indexes of the bootstrap replications


Bootstrap coordinates on the first selected axis


Bootstrap coordinates on the second selected axis


Lebart L. (2006). "Validation Techniques in Multiple Correspondence Analysis". In M. Greenacre et J. Blasius (eds), Multiple Correspondence Analysis and related techniques, Chapman and Hall/CRC, p.179-196.

Lebart L. (2007). "Which bootstrap for principal axes methods?". In P. Brito et al. (eds), Selected Contributions in Data Analysis and Classification, Springer, p.581-588.


Nicolas Robette


junk <- c("FrenchPop.NA", "Rap.NA", "Rock.NA", "Jazz.NA", "Classical.NA",
          "Comedy.NA", "Crime.NA", "Animation.NA", "SciFi.NA", "Love.NA", 
resmca <- speMCA(Taste[,1:11], excl = junk)
bv <- bootvalid_variables(resmca, type = "partial", K = 5)
#> 'data.frame':	110 obs. of  4 variables:
#>  $ varcat: Factor w/ 22 levels "Animation.No",..: 1 1 1 1 1 2 2 2 2 2 ...
#>  $ K     : int  1 2 3 4 5 1 2 3 4 5 ...
#>  $ dim.1 : num  -0.0272 -0.0122 0.037 0.0111 0.0217 ...
#>  $ dim.2 : num  -0.0797 -0.0245 -0.0517 -0.0686 -0.045 ...