My data is ordinal (1, 2, 3, 4, 5, NA from a likert scale) and doesn't have any obvious pattern looking at the raw data.

My code looks like this:


df <- data.frame(Var1 = as.factor(data$Var1), Var2. . . . ))

dfMCA <- MCA(df, graph = TRUE) summary(dfMCA)

My results look like this:

MCA Graph with all points registering as 1 on Dim 1

The summary output shows the first ten individuals all having -.064 as the Dim 1 value, .002 for ctr, and slightly varying (.000 to .002) cos2. The 10 first categories (responses) all have the same Dim1 value as well (-.064) except one that's an NA response (I did try excluding NA and didn't get anywhere). The eta2 values for all the variables on Dim 1 are exactly 1.

I've tried this with some other groups of variables and they seem to at least have a couple different lines, and they are similar, but not exactly 1. I tried adding a variable from one of the other groups, and it lands out of line, but these all remain 1.

Any idea what's going on? I've searched around the internet and haven't found anyone describing this issue using words I know to search for. If Dim1 isn't interesting, can I change what's being graphed?

Also, I am reusing mostly old understanding from PCA, because I have really struggled to find basic info on MCA specifically. Even if I can fix this, I'd love to learn more about MCA if you have some materials to refer me to :)

EDIT: I've run MCA() on the rest of the variables in my data, and though none of them present this way (with all of them lining up perfectly) all of the analyses have at least one similar line with 3 or more variables having the same eta2 value.

I have found "Exploratory Multivariate Analysis by Example Using R by Husson et al. and I'm working though it for a better understanding of MCA. I'll update if I can sort out why this might be happening.

  • $\begingroup$ I figured it out (finally). I had one row that was all NAs for this set of variables. The row had values for some other columns, and so wasn't kicked out by the original na.omit. I figured this out by doing an graph of individuals using the fviz_mca_ind() function in factoextra. All the individuals were spread out along the y axis except one. The graph labelled the point with its row number so I could confirm the problem. After running na.omit on the smaller data frame, i got some results that made much better sense. $\endgroup$ – karen Jul 2 '19 at 23:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.