# 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)