En primer lugar, cargamos/instalmos las librerías que vamos a usar y leemos la base de datos en la variable “df”, nos quedamos solo con los datos completos, tiramos los niveles que no se usan, renombramos el identimicador de la encuesta de V3 a ID y exploramos las primeras líneas:

if (!require("pacman")) install.packages("pacman")
pacman::p_load("MASS","tidyverse","haven","stringr", "FactoMineR","factoextra","corrplot","gplots","ggrepel")
###################################VVVVVVVVVV#########################################
df <- read_sav("WV6_Data_Spain_2011_Spss_v20180912.sav IZQUIERDA DERECH Y TIC TOTALES.sav") %>%
  as_factor() %>% 
  filter(complete.cases(.)) %>% 
  droplevels()
df %>% head()

#####Puedo escribir, que no me hace caso
#df %>% select(-recIndiceTradicional,-recIndiceInfoCModerno,-IDEOLOGIApolitica)
#No tocar de aquí hacia abajo

#VAMOS CON TODO
df2 = df

Escalamiento múltiple

El modelo que se ha hecho en SPSS tenía esta pinta si lo he visto bien:

fit <- MCA(df2 %>%mutate_all(as.factor), ncp = 2, graph = TRUE)

Los autovalores son:

get_eigenvalue(fit)
       eigenvalue variance.percent cumulative.variance.percent
Dim.1  0.27349587        12.155372                    12.15537
Dim.2  0.17387341         7.727707                    19.88308
Dim.3  0.16633501         7.392667                    27.27575
Dim.4  0.15433243         6.859219                    34.13497
Dim.5  0.14436064         6.416028                    40.55099
Dim.6  0.13722947         6.099088                    46.65008
Dim.7  0.13153818         5.846141                    52.49622
Dim.8  0.12617331         5.607702                    58.10393
Dim.9  0.11781842         5.236374                    63.34030
Dim.10 0.11439951         5.084423                    68.42472
Dim.11 0.11348013         5.043561                    73.46828
Dim.12 0.11235159         4.993404                    78.46169
Dim.13 0.10272606         4.565603                    83.02729
Dim.14 0.10041278         4.462790                    87.49008
Dim.15 0.08942568         3.974475                    91.46456
Dim.16 0.08363339         3.717040                    95.18160
Dim.17 0.08100441         3.600196                    98.78179
Dim.18 0.02740969         1.218209                   100.00000
fviz_screeplot(fit, addlabels = TRUE)

Realmente si nos quedamos solo con 2 dimensiones no vamos a ver mucho, pues queda mucha información fuera de ellas, pero vamos a echar un vistazo e todos modos:

fviz_mca_var(fit, choice = "mca.cor", col.var="black",
            repel = TRUE, 
            ggtheme = theme_minimal())

fviz_mca_var(fit, 
             repel = TRUE, col.var="black",
             ggtheme = theme_minimal())

Ya vimos que 2 dimensiones se quedaban cortas para representar las variables. Vamos a poner de color rojo las que estén mejor representadas en un plano, y de otros colores conforme vayamos perdiendo esta propiedad

fviz_mca_var(fit, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal())

Una forma de ver quien está mejor o peor representado también sería asociando, en lugar de color rojo, un grado de transparencia al símbolo que lo representa:

fviz_mca_var(fit, alpha.var="cos2", col.var="black",
             repel = TRUE,
             ggtheme = theme_minimal()) 

Ordenemos de mejor a peor lo bien que se representan cada valor de las variables en un plano:

fviz_cos2(fit, choice = "var", axes = 1:2)

LS0tCnRpdGxlOiAiQW5hbGlzaXMgZGUgY29ycmVzcG9uZGVuY2lhcyB2NCIKYXV0aG9yOiAiQW5hIE1hcsOtYSBMw7NwZXogTmFyYm9uYSIKZGF0ZTogJzIwMTktMDYtMjcnCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgd29yZF9kb2N1bWVudDogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyMjUGFyw6FtZXRyb3MgZGUgaW1wcmVzacOzbiBkZSBncsOhZmljb3MKa25pdHI6Om9wdHNfY2h1bmskc2V0KGRwaT0zMDAsZmlnLndpZHRoPTEyLGZpZy5oZWlnaHQ9MTApCmBgYAoKRW4gcHJpbWVyIGx1Z2FyLCBjYXJnYW1vcy9pbnN0YWxtb3MgbGFzIGxpYnJlcsOtYXMgcXVlIHZhbW9zIGEgdXNhciB5IGxlZW1vcyBsYSBiYXNlIGRlIGRhdG9zIGVuIGxhIHZhcmlhYmxlICJkZiIsIG5vcyBxdWVkYW1vcyBzb2xvIGNvbiBsb3MgZGF0b3MgY29tcGxldG9zLCB0aXJhbW9zIGxvcyBuaXZlbGVzIHF1ZSBubyBzZSB1c2FuLCByZW5vbWJyYW1vcyBlbCBpZGVudGltaWNhZG9yIGRlIGxhIGVuY3Vlc3RhIGRlIFYzIGEgSUQgeSBleHBsb3JhbW9zIGxhcyBwcmltZXJhcyBsw61uZWFzOgoKYGBge3J9CmlmICghcmVxdWlyZSgicGFjbWFuIikpIGluc3RhbGwucGFja2FnZXMoInBhY21hbiIpCnBhY21hbjo6cF9sb2FkKCJNQVNTIiwidGlkeXZlcnNlIiwiaGF2ZW4iLCJzdHJpbmdyIiwgIkZhY3RvTWluZVIiLCJmYWN0b2V4dHJhIiwiY29ycnBsb3QiLCJncGxvdHMiLCJnZ3JlcGVsIikKYGBgCgoKYGBge3J9CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjVlZWVlZWVlZWViMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRmIDwtIHJlYWRfc2F2KCJXVjZfRGF0YV9TcGFpbl8yMDExX1Nwc3NfdjIwMTgwOTEyLnNhdiBJWlFVSUVSREEgREVSRUNIIFkgVElDIFRPVEFMRVMuc2F2IikgJT4lCiAgYXNfZmFjdG9yKCkgJT4lIAogIGZpbHRlcihjb21wbGV0ZS5jYXNlcyguKSkgJT4lIAogIGRyb3BsZXZlbHMoKQpkZiAlPiUgaGVhZCgpCgojIyMjI1B1ZWRvIGVzY3JpYmlyLCBxdWUgbm8gbWUgaGFjZSBjYXNvCiNkZiAlPiUgc2VsZWN0KC1yZWNJbmRpY2VUcmFkaWNpb25hbCwtcmVjSW5kaWNlSW5mb0NNb2Rlcm5vLC1JREVPTE9HSUFwb2xpdGljYSkKI05vIHRvY2FyIGRlIGFxdcOtIGhhY2lhIGFiYWpvCmBgYAoKCgoKCgpgYGB7cn0KCiNWQU1PUyBDT04gVE9ETwpkZjIgPSBkZgoKYGBgCgoKCgoKCgoKIyBFc2NhbGFtaWVudG8gbcO6bHRpcGxlCkVsIG1vZGVsbyBxdWUgc2UgaGEgaGVjaG8gZW4gU1BTUyB0ZW7DrWEgZXN0YSBwaW50YSBzaSBsbyBoZSB2aXN0byBiaWVuOgoKYGBge3J9CmZpdCA8LSBNQ0EoZGYyICU+JW11dGF0ZV9hbGwoYXMuZmFjdG9yKSwgbmNwID0gMiwgZ3JhcGggPSBUUlVFKQpgYGAKCkxvcyBhdXRvdmFsb3JlcyBzb246CmBgYHtyfQpnZXRfZWlnZW52YWx1ZShmaXQpCmBgYAoKYGBge3J9CmZ2aXpfc2NyZWVwbG90KGZpdCwgYWRkbGFiZWxzID0gVFJVRSkKYGBgCgpSZWFsbWVudGUgc2kgbm9zIHF1ZWRhbW9zIHNvbG8gY29uIDIgZGltZW5zaW9uZXMgbm8gdmFtb3MgYSB2ZXIgbXVjaG8sIHB1ZXMgcXVlZGEgbXVjaGEgaW5mb3JtYWNpw7NuIGZ1ZXJhIGRlIGVsbGFzLCBwZXJvIHZhbW9zIGEgZWNoYXIgdW4gdmlzdGF6byBlIHRvZG9zIG1vZG9zOgoKCgpgYGB7cn0KZnZpel9tY2FfdmFyKGZpdCwgY2hvaWNlID0gIm1jYS5jb3IiLCBjb2wudmFyPSJibGFjayIsCiAgICAgICAgICAgIHJlcGVsID0gVFJVRSwgCiAgICAgICAgICAgIGdndGhlbWUgPSB0aGVtZV9taW5pbWFsKCkpCmBgYAoKCgoKCgoKYGBge3J9CmZ2aXpfbWNhX3ZhcihmaXQsIAogICAgICAgICAgICAgcmVwZWwgPSBUUlVFLCBjb2wudmFyPSJibGFjayIsCiAgICAgICAgICAgICBnZ3RoZW1lID0gdGhlbWVfbWluaW1hbCgpKQpgYGAKCllhIHZpbW9zIHF1ZSAyIGRpbWVuc2lvbmVzIHNlIHF1ZWRhYmFuIGNvcnRhcyBwYXJhIHJlcHJlc2VudGFyIGxhcyB2YXJpYWJsZXMuIFZhbW9zIGEgcG9uZXIgZGUgY29sb3Igcm9qbyBsYXMgcXVlIGVzdMOpbiBtZWpvciByZXByZXNlbnRhZGFzIGVuIHVuIHBsYW5vLCB5IGRlIG90cm9zIGNvbG9yZXMgY29uZm9ybWUgdmF5YW1vcyBwZXJkaWVuZG8gZXN0YSBwcm9waWVkYWQKCmBgYHtyICBkcGk9NjAwLCBmaWcud2lkdGg9MTIsIGZpZy5oZWlnaHQ9OX0KZnZpel9tY2FfdmFyKGZpdCwgY29sLnZhciA9ICJjb3MyIiwKICAgICAgICAgICAgIGdyYWRpZW50LmNvbHMgPSBjKCIjMDBBRkJCIiwgIiNFN0I4MDAiLCAiI0ZDNEUwNyIpLCAKICAgICAgICAgICAgIHJlcGVsID0gVFJVRSwgIyBBdm9pZCB0ZXh0IG92ZXJsYXBwaW5nCiAgICAgICAgICAgICBnZ3RoZW1lID0gdGhlbWVfbWluaW1hbCgpKQpgYGAKCgoKClVuYSBmb3JtYSBkZSB2ZXIgcXVpZW4gZXN0w6EgbWVqb3IgbyBwZW9yIHJlcHJlc2VudGFkbyB0YW1iacOpbiBzZXLDrWEgYXNvY2lhbmRvLCBlbiBsdWdhciBkZSBjb2xvciByb2pvLCB1biBncmFkbyBkZSB0cmFuc3BhcmVuY2lhIGFsIHPDrW1ib2xvIHF1ZSBsbyByZXByZXNlbnRhOgoKYGBge3J9CmZ2aXpfbWNhX3ZhcihmaXQsIGFscGhhLnZhcj0iY29zMiIsIGNvbC52YXI9ImJsYWNrIiwKICAgICAgICAgICAgIHJlcGVsID0gVFJVRSwKICAgICAgICAgICAgIGdndGhlbWUgPSB0aGVtZV9taW5pbWFsKCkpIApgYGAKCk9yZGVuZW1vcyBkZSBtZWpvciBhIHBlb3IgbG8gYmllbiBxdWUgc2UgcmVwcmVzZW50YW4gY2FkYSB2YWxvciBkZSBsYXMgdmFyaWFibGVzIGVuIHVuIHBsYW5vOgoKYGBge3J9CmZ2aXpfY29zMihmaXQsIGNob2ljZSA9ICJ2YXIiLCBheGVzID0gMToyKQpgYGAKCgoKCgoKCgo=