1

I'm running a multiple correspondence analysis in R using the FactoMineR package:

mca_fit <- MCA(df, ncp = 7, quali.sup=c(1), na.method="Average")

I'm trying to get loading values for each item, which I do by running the following (as recommended by the FactoMineR website):

sweep(mca_fit$var$coord,2,sqrt(mca_fit$eig[1:ncol(mca_fit$var$coord),1]),FUN="/")

However, I get some rather large loading values (e.g. -2.089, -1.867):

             Dim 1         Dim 2        Dim 3        Dim 4        Dim 5       Dim 6         Dim 7
q3_1  -0.067258071  0.2013704317 -2.088639970 -1.474642669  0.612224444  0.97337528  5.828500e-01
q3_2  -0.254792497  0.4476396999 -1.867095848 -0.819081547  0.429024117  0.86702888 -4.828014e-01
q3_3  -0.180238385  0.4298248819 -0.005719385  0.010742603  0.779848024  0.49592929 -1.555691e-01

Is it correct for these loadings to be larger than $\pm$1?

When I run a regular factor analysis using fa() from the Psych package I always get loadings values <1.0. I'm trying to calculate MCA loadings that are somewhat comparable in range, but I'm not sure why the value ranges differ so much

ttnphns
  • 57,480
  • 49
  • 284
  • 501
Simon
  • 2,341
  • I can't speak specifically of FactoMineR being not an R user. But here is my comment. In correspondence analysis tradition we typically don't use term "loading". What corresponds directly to it there is called "coordinates under principal normalization by inertia": please read here, especially "Weighted biplot" section. These values are, like loadings, equal to eigenvector elements multiplied by sq. root of the respective eigenvalue. – ttnphns Feb 19 '17 at 09:47
  • (cont.) If you divide the result by the sq. root of the category (point's) scale (inertia), you get the rescaled "loading" which you seek. The rescaled "loading" squared is known in CA as contribution of dimension to point which is often available in a package's output. We encounter analogous rescaled loading in PCA (see, see). It ranges between -1 to 1. – ttnphns Feb 19 '17 at 09:47
  • As a side note, instead of sweep(mca_fit$var$coord,2,sqrt(mca_fit$eig[1:ncol(mca_fit$var$coord),1]),FUN="/") , you can use: mca_fit$svd$V – J-J-J Sep 21 '23 at 09:42

0 Answers0