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")
Loading required package: pacman
pacman::p_load("MASS","tidyverse","haven","stringr", "FactoMineR","factoextra","corrplot","gplots","ggrepel")
df <- read_sav("WV6_Data_Spain_2011_Spss_v20180912.sav INDICES TIC TOTAL MODERNO TRAD.sav") %>%
# select (V3,V39, V46, V218_ESMA, V217_ESMA, V219_ESMA, V220_ESMA, V221_ESMA, V222_ESMA, V223_ESMA) %>%
# rename(ID=V3) %>%
as_factor() %>%
filter(complete.cases(.)) %>%
droplevels()
df %>% head()
df2 = df %>% select(-IndiceInfoComTotal,-IDEOLOGIApolitica)
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.25261165 8.7442494 8.744249
Dim.2 0.17494930 6.0559373 14.800187
Dim.3 0.15478199 5.3578380 20.158025
Dim.4 0.14654489 5.0727077 25.230732
Dim.5 0.13555421 4.6922613 29.922994
Dim.6 0.13062458 4.5216202 34.444614
Dim.7 0.12465866 4.3151076 38.759721
Dim.8 0.12181792 4.2167741 42.976496
Dim.9 0.11929719 4.1295182 47.106014
Dim.10 0.11682430 4.0439182 51.149932
Dim.11 0.11309532 3.9148379 55.064770
Dim.12 0.11078387 3.8348263 58.899596
Dim.13 0.10960156 3.7939002 62.693496
Dim.14 0.10488019 3.6304681 66.323964
Dim.15 0.10427867 3.6096464 69.933611
Dim.16 0.10124033 3.5044731 73.438084
Dim.17 0.09993515 3.4592937 76.897377
Dim.18 0.09725138 3.3663940 80.263771
Dim.19 0.09225711 3.1935153 83.457287
Dim.20 0.08518102 2.9485738 86.405861
Dim.21 0.08503213 2.9434198 89.349280
Dim.22 0.07687013 2.6608892 92.010170
Dim.23 0.07526831 2.6054415 94.615611
Dim.24 0.06963562 2.4104638 97.026075
Dim.25 0.06273054 2.1714419 99.197517
Dim.26 0.02318285 0.8024832 100.000000
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)