# Configurar el repositorio de CRAN si no está definido
options(repos = c(CRAN = "https://cran.rstudio.com/"))
# Cargar librerías necesarias
library(FactoMineR) # Para realizar el Análisis de Correspondencias Múltiples (MCA)
library(factoextra) # Para visualizar los resultados del MCA
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(readxl) # Para leer archivos de Excel
library(corrplot) # Para visualizar correlaciones en gráficos
## corrplot 0.92 loaded
########### Jhon Murillo
########### Métodos Multivariados
# Leer los datos desde un archivo Excel
Datos <- read_excel("Datos.xlsx")
# Realizar el Análisis de Correspondencias Múltiples (MCA)
res.mca <- MCA(Datos, graph = FALSE)
# Mostrar resultados del MCA
print(res.mca)
## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 50 individuals, described by 45 variables
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$var" "results for the variables"
## 3 "$var$coord" "coord. of the categories"
## 4 "$var$cos2" "cos2 for the categories"
## 5 "$var$contrib" "contributions of the categories"
## 6 "$var$v.test" "v-test for the categories"
## 7 "$var$eta2" "coord. of variables"
## 8 "$ind" "results for the individuals"
## 9 "$ind$coord" "coord. for the individuals"
## 10 "$ind$cos2" "cos2 for the individuals"
## 11 "$ind$contrib" "contributions of the individuals"
## 12 "$call" "intermediate results"
## 13 "$call$marge.col" "weights of columns"
## 14 "$call$marge.li" "weights of rows"
# Obtener los valores propios (explican la varianza en cada dimensión)
eig.val <- get_eigenvalue(res.mca)
# Gráfico de sedimentación (Screeplot) para visualizar la varianza explicada
fviz_screeplot(res.mca, addlabels = TRUE, ylim = c(0, 45))

# Biplot del MCA: representa individuos y variables en el mismo gráfico
fviz_mca_biplot(res.mca,
repel = TRUE, # Evita la sobreposición de texto (puede ser lento si hay muchos puntos)
ggtheme = theme_minimal())

# Extraer información de las variables del MCA
var <- get_mca_var(res.mca)
var # Muestra la información de las variables
## Multiple Correspondence Analysis Results for variables
## ===================================================
## Name Description
## 1 "$coord" "Coordinates for categories"
## 2 "$cos2" "Cos2 for categories"
## 3 "$contrib" "contributions of categories"
# Mostrar coordenadas de las variables
head(var$coord)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alberto 2.3332103 0.1130773 -0.2196720 -0.8167082 1.04334390
## Alejandro -1.2524978 0.5207879 -1.3147074 -0.1303167 -0.13393762
## Ana -1.1878153 0.8996798 0.4726116 0.3662184 0.58991960
## Andrea 0.7209886 0.3421470 1.4452366 -1.7974196 0.11950698
## Andres -0.2529786 0.1723908 0.4591975 2.0770025 -0.20165960
## Beatriz -0.9948042 0.5799278 1.4681408 -0.5416364 0.05968138
# Calidad de representación (cos2) de las variables en el espacio factorial
head(var$cos2)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alberto 0.111099394 0.0002609486 0.000984812 0.0136124954 2.221564e-02
## Alejandro 0.032015320 0.0055351022 0.035274601 0.0003465804 3.661079e-04
## Ana 0.028793982 0.0165188524 0.004558402 0.0027370591 7.102146e-03
## Andrea 0.010608665 0.0023890728 0.042626708 0.0659330033 2.914677e-04
## Andres 0.001306085 0.0006065019 0.004303314 0.0880395785 8.299305e-04
## Beatriz 0.020196641 0.0068635961 0.043988518 0.0059871426 7.269115e-05
# Contribución de las variables a los componentes principales
head(var$contrib)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alberto 2.40881019 0.006043067 0.02361481 0.358260855 0.635128144
## Alejandro 0.69414267 0.128182330 0.84584976 0.009121486 0.010466743
## Ana 0.62429898 0.382544873 0.10930593 0.072035368 0.203044881
## Andrea 0.23001261 0.055326333 1.02214596 1.735259663 0.008332838
## Andres 0.02831799 0.014045418 0.10318918 2.317072204 0.023727074
## Beatriz 0.43789505 0.158947694 1.05480080 0.157572788 0.002078184
# Visualización de la correlación de las variables en el MCA
fviz_mca_var(res.mca, choice = "mca.cor",
repel = TRUE, # Evita superposición de etiquetas
ggtheme = theme_minimal())

# Visualización de las variables con diferentes estilos gráficos
fviz_mca_var(res.mca, col.var="black", shape.var = 15, repel = TRUE)

fviz_mca_var(res.mca, col.var = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE, ggtheme = theme_minimal())

# Cambia la transparencia de las variables según cos2
fviz_mca_var(res.mca, alpha.var="cos2",
repel = TRUE, ggtheme = theme_minimal())

# Mapa de correlación de la calidad de representación (cos2)
corrplot(var$cos2, is.corr=FALSE)

# Gráfico de calidad de representación de las variables
fviz_cos2(res.mca, choice = "var", axes = 1:2)

# Contribución de las variables en los primeros ejes principales
head(round(var$contrib,2), 4)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## Alberto 2.41 0.01 0.02 0.36 0.64
## Alejandro 0.69 0.13 0.85 0.01 0.01
## Ana 0.62 0.38 0.11 0.07 0.20
## Andrea 0.23 0.06 1.02 1.74 0.01
fviz_contrib(res.mca, choice = "var", axes = 1, top = 15) # Dimensión 1

fviz_contrib(res.mca, choice = "var", axes = 2, top = 15) # Dimensión 2

fviz_contrib(res.mca, choice = "var", axes = 1:2, top = 15) # Ambas dimensiones

# Representación de variables según su contribución al MCA
fviz_mca_var(res.mca, col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE, ggtheme = theme_minimal())

# Transparencia de variables según su contribución al MCA
fviz_mca_var(res.mca, alpha.var="contrib",
repel = TRUE, ggtheme = theme_minimal())

# Extraer información de los individuos en el MCA
ind <- get_mca_ind(res.mca)
ind # Muestra información sobre los individuos
## Multiple Correspondence Analysis Results for individuals
## ===================================================
## Name Description
## 1 "$coord" "Coordinates for the individuals"
## 2 "$cos2" "Cos2 for the individuals"
## 3 "$contrib" "contributions of the individuals"
# Coordenadas de los individuos
head(ind$coord)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## 1 -0.25725000 -0.01289738 0.56476925 -0.40990004 -0.08487035
## 2 -0.31618036 -0.29275445 0.04770632 0.41007495 0.04967423
## 3 -0.08002826 0.29087933 -0.66301557 -0.24284075 0.01059537
## 4 0.26367808 -0.30530294 0.16429927 -0.24374962 -0.16860267
## 5 -0.37645255 0.27589479 0.14242806 0.10534553 0.16281648
## 6 0.49290039 -0.50380705 0.04495556 -0.05543533 0.33842195
# Calidad de representación (cos2) de los individuos
head(ind$cos2)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## 1 0.031170594 7.834971e-05 0.1502368233 0.079138938 3.392706e-03
## 2 0.047954531 4.111184e-02 0.0010917212 0.080665223 1.183647e-03
## 3 0.003109422 4.107888e-02 0.2134225775 0.028630969 5.450363e-05
## 4 0.034057637 4.565921e-02 0.0132232353 0.029104110 1.392500e-02
## 5 0.068711335 3.690582e-02 0.0098355588 0.005380716 1.285300e-02
## 6 0.116132056 1.213283e-01 0.0009660521 0.001468950 5.474580e-02
# Contribución de los individuos a los ejes principales
head(ind$contrib)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## 1 1.3177047 0.003537709 7.02408313 4.06100911 0.189117128
## 2 1.9905684 1.822745172 0.05011866 4.06447558 0.064786015
## 3 0.1275246 1.799470182 9.68043808 1.42534891 0.002947484
## 4 1.3843803 1.982352648 0.59445479 1.43603799 0.746359083
## 5 2.8218103 1.618847534 0.44672339 0.26823179 0.696010260
## 6 4.8375521 5.398180828 0.04450557 0.07427649 3.007017565
# Representación de los individuos en el MCA
fviz_mca_ind(res.mca, col.ind = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE, ggtheme = theme_minimal())

# Calidad de representación de los individuos en los ejes principales
fviz_cos2(res.mca, choice = "ind", axes = 1:2, top = 20)

# Contribución de los individuos en los ejes principales
fviz_contrib(res.mca, choice = "ind", axes = 1:2, top = 20)
