ANALISIS DE CORRESPONDENCIAS MULTIPLES (MCA)

El análisis de correspondencia múltiple (MCA) es una extensión del análisis de correspondencia simple para resumir y visualizar una tabla de datos que contiene más de dos variables categóricas. También puede verse como una generalización del análisis de componentes principales cuando las variables a analizar son categóricas en lugar de cuantitativas.

MCA se usa generalmente para analizar un conjunto de datos de una encuesta. El objetivo es identificar:

A continuacion, se va a calcular y visualizar análisis de correspondencias múltiples en el software \(\mathrm{R}\) usando FactoMineR (para el análisis) y factoextra (para la visualización de datos).

library(FactoMineR)
library(ggplot2)
library(FactoClass)
## Loading required package: ade4
## 
## Attaching package: 'ade4'
## The following object is masked from 'package:FactoMineR':
## 
##     reconst
## Loading required package: ggrepel
## Loading required package: xtable
## Loading required package: scatterplot3d
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(Rcpp)
library(broom)
library(pander)
library(corrplot)
## corrplot 0.92 loaded
library(gridExtra)
library(DT)

Los datos “admi” del paquete FactoClass, que son los estudiantes admitidos a las 7 carreras de la Facultad de ciencias de la Universidad Nacional de Colombia (Bogotá) en el primer trimestre del 2013. Estos datos poseen información de los puntajes obtenidos por estos estudiantes (445 admitidos) en el examen de ingreso, así como también algunas variables de información sociodemográfica.

data(admi)
DatosInicial <- subset(admi, select = c("carr", "gene", "estr", "orig","age") )
DT::datatable(admi)
DT::datatable(DatosInicial)
write.csv2(admi, "admisiones.csv")
Carrera <- DatosInicial$carr
Sexo <- DatosInicial$gene
Estrato <- DatosInicial$estr
Origen <- DatosInicial$orig
Edad <- as.factor(DatosInicial$age)

Datos <- cbind(DatosInicial,Carrera,Sexo,Estrato,Origen)
Datos[,1:5] <- NULL

Se utilizaron las variables correspondientes a la carrera a la cual ingresaron, el género, el estrato y el origen (si son de Bogotá o no).

DT::datatable(Datos)
F1<-ggplot(Datos, aes(x=Carrera)) + geom_bar(fill= "#DDB4EB")
F2<-ggplot(Datos, aes(x=Sexo)) + geom_bar(fill= "#FFD4A5")
F3<-ggplot(Datos, aes(x=Estrato)) + geom_bar(fill= "#41894A")
F4<-ggplot(Datos, aes(x=Origen)) + geom_bar(fill= "#FFEC28")
F5 <- grid.arrange(F1,F2,F3,F4, nrow = 2)

La función MCA() crea un objeto que contiene mucha información encontrada en diferentes listas y matrices. Al usar la función print() se mostrará una lista con todos los valores que contiene.

uni.mca <- MCA(Datos, graph = FALSE)
print(uni.mca)
## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 445 individuals, described by 4 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  "$ind"            "results for the individuals"     
## 8  "$ind$coord"      "coord. for the individuals"      
## 9  "$ind$cos2"       "cos2 for the individuals"        
## 10 "$ind$contrib"    "contributions of the individuals"
## 11 "$call"           "intermediate results"            
## 12 "$call$marge.col" "weights of columns"              
## 13 "$call$marge.li"  "weights of rows"

Eingevalores

eigenval <- get_eigenvalue(uni.mca)
pander(head(eigenval))
  eigenvalue variance.percent cumulative.variance.percent
Dim.1 0.3423 12.45 12.45
Dim.2 0.3338 12.14 24.59
Dim.3 0.2968 10.79 35.38
Dim.4 0.2634 9.579 44.96
Dim.5 0.2546 9.258 54.22
Dim.6 0.25 9.091 63.31

Para determinar el numero de componentes principales smiramos un un Scree Plot, que es un plot de los eigenvalues ordenados de mayor a menor.

fviz_screeplot(uni.mca, addlabels = TRUE, ylim = c(0, 15)) + geom_hline(yintercept = 7.14, linetype = 2, color = "red")

Biplot

fviz_mca_biplot(uni.mca, repel = TRUE, 
                ggtheme = theme_grey())+labs(
                  title ="           Representación simultanea de los individuos y las categorías")
## Warning: ggrepel: 387 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

  • Los individuos están representados por los puntos azules
  • Las categorías de las variables por los triángulos rojos.
  • Individuos con un perfil similar están cerca en el mapa de factores y lo mismo se puede decir para los puntos de las variables.
  • Parte de los individuos se relaciona con el estrato bajo y haber ingresado a la carrera de química.
  • Hay una relación entre estudiantes que ingresaron a matemáticas y el género masculino, y estudiantes de estrato alto y la carrera física.

Resultados de Variables.

var <- get_mca_var(uni.mca)
var
## Multiple Correspondence Analysis Results for variables
##  ===================================================
##   Name       Description                  
## 1 "$coord"   "Coordinates for categories" 
## 2 "$cos2"    "Cos2 for categories"        
## 3 "$contrib" "contributions of categories"

Para visualizar la correlación entre variables y las dimensiones principales de ACM:

fviz_mca_var(uni.mca, choice = "mca.cor",
             repel = TRUE, axes=c(1,2),
             ggtheme = theme_grey())

Esta gráfica ayuda a identificar las variables que están más correlacionadas con cada dimensión. Las correlaciones cuadradas entre variables y las dimensiones son usadas como coordenadas.

En este caso se tiene que la variable Estrato es la que presenta mayor correlación con la dimensión 2, por una diferencia pequeña con Origen y Carrera, y una mayor con Género. Así mismo, la variable más correlacionada con la dimensión 1 es Carrera.

Si queremos ver las coordenadas puntuales de cada categoría en cada dimensión:

pander(head(round(var$coord, 2), 15))
  Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
Biol -0.05 0.33 0.7 -0.31 1.99
Esta -0.14 -0.15 -0.68 1.08 -0.55
Farm -1.3 0.69 0.31 -0.09 -0.8
Fisi 0.28 -0.69 -0.23 -1.23 -0.04
Geol 0.99 -0.76 1.61 0.72 -1
Mate 0.39 -0.48 -1.27 -0.06 0.21
Quim 0.3 0.86 -0.14 0.43 0.1
F -0.9 0.68 0.59 0 0
M 0.36 -0.27 -0.24 0 0
bajo 0.58 0.72 -0.14 0.03 -0.32
medio -0.69 -0.27 -0.45 0.02 0.29
alto 0.29 -0.97 1.35 -0.09 0.05
Bogo -0.33 -0.39 -0.02 0.08 -0.07
Cund 0.94 0.65 0.08 1.85 1.15
Otro 0.71 1.01 0.04 -0.98 -0.22

Para solo ver las modalidades o categorías de las variables (sin individuos):

fviz_mca_var(uni.mca, col.var = "purple", shape.var = 10, repel = TRUE,
             ggtheme = theme_grey())+labs(title = " Nube de puntos de las Modalidades/Categorías")

Se observa la relación y asociación entre las categorías de las variables y se puede interpretar como:

  • Las categorías de variables con un perfil similar están agrupadas juntas.

  • Categorías de variables correlacionadas negativamente están posicionadas en lados opuestos del origen de la gráfica (cuadrantes opuestos).

  • La distancia entre los puntos de cada categoría y el origen mide la calidad de la categoría de la variable en el mapa de factores. Los puntos de cada categoría que estén lejos del origen están bien representados en el mapa.

Según esto, bajo lo que se puede observar en el gráfico, las categorías “Cund”, “Otro”, “Bajo” y “Química” comparten un perfil similar, existe cierta asociación. Se puede suponer entonces que las personas que entraron a la Universidad Nacional a la Facultad de Ciencias que son provenietes de lugares por fuera de Bogotá, tienen más relación o asociación con estratos socioeconomicos bajos, y una escogencia en la carrera de quimica.

Los inidividuos de estrato alto estan más asociados a carreras universitarias como la fisica y la matematica y esta última al sexo masculino. Para culminar, vemos que el sexo femenino esta más relacionado con la carrera universitaria farmacia.

Calidad de la representación de las categoría de las variables.

La calidad de la representación se llama el coseno cuadrado (Cos2), el cual mide el grado de asociación entre las categorías de las variables y un eje en particular. Si la categoría de una variable está bien representada por dos dimensiones, la suma del cos2 es cercana a uno. Para algunos ítems de las filas, más de dos dimensiones son requeridas para represetar perfectamente los datos. Hay distintas maneras de ver dicha calidad de representación:

pander(head(var$cos2, 15))
  Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
Biol 0.0003501 0.01831 0.08068 0.01557 0.6521
Esta 0.003632 0.003828 0.08105 0.2029 0.05301
Farm 0.3341 0.09399 0.01918 0.001698 0.1245
Fisi 0.01825 0.1089 0.01145 0.3445 0.0003198
Geol 0.1114 0.06446 0.2922 0.05777 0.1117
Mate 0.02033 0.03053 0.2187 0.0005584 0.005957
Quim 0.01509 0.1232 0.003015 0.03103 0.001542
F 0.3291 0.1863 0.1414 3.7e-08 6.771e-06
M 0.3291 0.1863 0.1414 3.7e-08 6.771e-06
bajo 0.2285 0.3472 0.01319 0.0004408 0.06814
medio 0.3403 0.05253 0.1465 0.000183 0.05893
alto 0.01895 0.208 0.403 0.001932 0.0004683
Bogo 0.2571 0.3556 0.001142 0.01378 0.012
Cund 0.08297 0.03919 0.000562 0.3193 0.1229
Otro 0.1367 0.2815 0.0004658 0.265 0.01346

En este caso ninguna de las categorías estaría bien representada únicamente por 2 dimensiones, la categoría Bogotá cuenta con un cos2 de 0.612 pero aún así no es lo suficientemente cercano a uno. Todas las categorías de las variables requerirían más de una dimensión para estar mejor representadas.

Diagrama de puntos:

fviz_mca_var(uni.mca, col.var = "cos2", 
             repel = TRUE, gradient.cols = c("#00AFBB", "#E7B800","#FC4E07"), axes = c(1,2),
                ggtheme = theme_grey())+labs(title = " Nube de puntos de las Modalidades/Categorías")

Gráficamente es más sencillo observar las categorías que se encuentran mejor representadas por las dimensiones 1 y 2. Como ya se dijo, la categoría Bogotá es de las que mejor representadas se encuentra, seguido de las categorías Bajo, F (Femenino) y M (Masculino).

Diagrama de barras:

fviz_cos2(uni.mca, choice = "var", axes = 1:2)+labs(title = " Cos2 de Categorías para las Dimensiones 1-2")

Las categorías peor representadas por las dimensiones 1 y 2 parecen ser “Esta”, “Biol”, “Mate”, “Cund”, “Fisi”. Esto significa que la posición de sus correspondientes puntos en el diagrama de dispersión deben ser interpretados con precausión. También indica que una solución con dimensión más alta sería recomendable.

Y, finalmente, para ver un análisis del cos2 con más de dos dimensiones:

corrplot(var$cos2, is.corr = FALSE)

##Contribución de las categorías de las variables a las dimensiones.

La contribución de las categorías de las variables (en %) a la definición de las dimensiones puede ser extraída como

pander(head(round(var$contrib,2), 15))
  Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
Biol 0.02 1.18 5.83 1.27 54.97
Esta 0.23 0.24 5.81 16.4 4.43
Farm 20.4 5.88 1.35 0.13 10.22
Fisi 1.09 6.65 0.79 26.67 0.03
Geol 7.31 4.34 22.12 4.93 9.86
Mate 1.31 2.01 16.22 0.05 0.52
Quim 0.95 7.92 0.22 2.53 0.13
F 17.12 9.94 8.49 0 0
M 6.91 4.01 3.43 0 0
bajo 9.98 15.54 0.66 0.03 4
medio 14.52 2.3 7.21 0.01 3.38
alto 1.13 12.74 27.77 0.15 0.04
Bogo 5.65 8.02 0.03 0.39 0.35
Cund 5.54 2.68 0.04 27.71 11.04
Otro 7.83 16.53 0.03 19.73 1.04

Las categorías de las variables con el mayor valor contribuyen más a la definición de las dimensiones, y, así mismo, las que contribuyen mas a la dimensión 1 y 2 son las más importantes en explicar la variabilidad de los datos.

Gráficamente:

fviz_contrib(uni.mca, choice = "var", axes = 1, top = 15)+labs(title = "Contribución de las Categorías para las Dimensión 1")

fviz_contrib(uni.mca, choice = "var", axes = 2, top = 15)+labs(title = "Contribución de las Categorías para las Dimensión 2")

La linea roja indica el valor promedio esperado si las contribuciones fueran uniformes. En este caso, las categorías “Farm”, “F”, “Medio”, y “Bajo” son las más importantes en la definición de la primera dimensión, por otro lado, “Otro”, “Bajo”, “Alto” y “F” son las que más contribuyen a la dimensión 2.

Las que más contribuyen en total se pueden ver mediante dos gráficos distintos, un gráfico de barras:

fviz_contrib(uni.mca, choice = "var", axes = 1:2, top = 15)+labs(title = "                Contribuciones de las Categorías para las Dimensiónes 1-2")

fviz_mca_var(uni.mca, col.var = "contrib", 
             gradient.cols = c("#00AFBB", "#E7B800","#FC4E07"),
                ggtheme = theme_grey()
             , repel = TRUE)

Aquí, las categorías que más contribuyen son Farm, F, Bajo, y Otro, y se puede distinguir a qué polo de las dimensiones están contribuyendo: Bajo y Otro contribuyen al polo positivo de la dimensión 1 y 2, mientras que Farm y F contribuyen al polo positivo de la dimensión 2 y el polo negativo de la dimensión 1.

Resultados Individuos

Ahora se procede a realizar el mismo procedimiento pero para los individuos.

est <- get_mca_ind(uni.mca)
est
## 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"

Estos resultados para los individuos dan la misma información como la descrita para las categorías de variables.

Coordinadas de los puntos de columnas

pander(head(est$coord))
Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
-0.423 -0.1496 1.2 -0.1577 0.9744
-0.3017 -0.2614 -0.007109 -0.1043 1.091
-0.2986 0.5795 0.5181 -0.09983 0.794
-0.2986 0.5795 0.5181 -0.09983 0.794
-0.3017 -0.2614 -0.007109 -0.1043 1.091
-0.8432 0.1512 0.3741 -0.1045 1.094
sort(est$coord[,1])
##         131         132         133         136         137         139 
## -1.38109885 -1.38109885 -1.38109885 -1.38109885 -1.38109885 -1.38109885 
##         141         142         143         144         145         146 
## -1.38109885 -1.38109885 -1.38109885 -1.38109885 -1.38109885 -1.38109885 
##         149         151         152         153         185         190 
## -1.38109885 -1.38109885 -1.38109885 -1.38109885 -1.38109885 -1.38109885 
##         192         186         188         193         169         176 
## -1.38109885 -0.96086379 -0.96086379 -0.96086379 -0.93759436 -0.93759436 
##          77          78          79          87         112         118 
## -0.88523392 -0.88523392 -0.88523392 -0.88523392 -0.88523392 -0.88523392 
##           6           7          18          45          53           9 
## -0.84320825 -0.84320825 -0.84320825 -0.84320825 -0.84320825 -0.84320825 
##         130         134         135         147         156         159 
## -0.83957307 -0.83957307 -0.83957307 -0.83957307 -0.83957307 -0.83957307 
##         161         162         164         181         182         184 
## -0.83957307 -0.83957307 -0.83957307 -0.83957307 -0.83957307 -0.83957307 
##         189         140         148         150         157         165 
## -0.83957307 -0.83654002 -0.83654002 -0.83654002 -0.83654002 -0.83654002 
##         167         174         180         205         246         269 
## -0.83654002 -0.83654002 -0.83654002 -0.70205928 -0.70205928 -0.70205928 
##         270         383         385         391         424         427 
## -0.70205928 -0.69426646 -0.69426646 -0.69426646 -0.69426646 -0.69426646 
##         430         431         439         330         338         374 
## -0.69426646 -0.69426646 -0.69426646 -0.65782299 -0.65782299 -0.65782299 
##         376         198          67          81         125           1 
## -0.65782299 -0.51735930 -0.46499886 -0.46499886 -0.44172942 -0.42297319 
##          27          57          14         175         194         196 
## -0.42297319 -0.42297319 -0.42297319 -0.41933801 -0.41933801 -0.41933801 
##          25          38          42          59         307         313 
## -0.39970376 -0.39970376 -0.39970376 -0.39970376 -0.39837023 -0.39837023 
##         155         163         177         179         183         199 
## -0.39606858 -0.39303552 -0.39303552 -0.39303552 -0.39303552 -0.39303552 
##         200         202          64          68          69          72 
## -0.39303552 -0.39303552 -0.34370814 -0.34370814 -0.34370814 -0.34370814 
##          73          76          83          88          95         100 
## -0.34370814 -0.34370814 -0.34370814 -0.34370814 -0.34370814 -0.34370814 
##         101         109         111         113         115         117 
## -0.34370814 -0.34370814 -0.34370814 -0.34370814 -0.34370814 -0.34370814 
##         119          74          85          89         110          97 
## -0.34370814 -0.34067509 -0.34067509 -0.34067509 -0.34067509 -0.34019373 
##           2          10          12          15          16          17 
## -0.30168247 -0.30168247 -0.30168247 -0.30168247 -0.30168247 -0.30168247 
##          20          48          49          56           5           8 
## -0.30168247 -0.30168247 -0.30168247 -0.30168247 -0.30168247 -0.30168247 
##          13           3           4          22          28         138 
## -0.30168247 -0.29864942 -0.29864942 -0.29864942 -0.29816807 -0.29501424 
##         154         158         160         166         168         170 
## -0.29501424 -0.29501424 -0.29501424 -0.29501424 -0.29501424 -0.29501424 
##         187         191         195         178         234         251 
## -0.29501424 -0.29501424 -0.29501424 -0.29453289 -0.28182422 -0.28182422 
##         256         257         410         206         207         208 
## -0.28182422 -0.28182422 -0.25076196 -0.16053350 -0.16053350 -0.16053350 
##         209         210         212         216         220         229 
## -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 
##         236         245         247         248         249         252 
## -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 
##         254         255         258         260         265         267 
## -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 
##         268         271         272         273         274         284 
## -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 -0.16053350 
##         223         387         388         392         395         397 
## -0.15750045 -0.15274068 -0.15274068 -0.15274068 -0.15274068 -0.15274068 
##         401         403         437         438         384         393 
## -0.15274068 -0.15274068 -0.15274068 -0.15274068 -0.14970763 -0.14970763 
##         400         429         433         440         332         333 
## -0.14970763 -0.14970763 -0.14970763 -0.14970763 -0.11629721 -0.11629721 
##         334         335         336         337         339         340 
## -0.11629721 -0.11629721 -0.11629721 -0.11629721 -0.11629721 -0.11629721 
##         341         346         349         350         358         362 
## -0.11629721 -0.11629721 -0.11629721 -0.11629721 -0.11629721 -0.11629721 
##         369         373         375         377         107         286 
## -0.11629721 -0.11629721 -0.11629721 -0.11629721 -0.02149436  0.02186483 
##         311         314         316          65         120         122 
##  0.02186483  0.02186483  0.02186483  0.07652692  0.07652692  0.07652692 
##         129         105         106         126         128          44 
##  0.07652692  0.09979636  0.09979636  0.09979636  0.09979636  0.11855259 
##          46          47          51          52          55          31 
##  0.11855259  0.11855259  0.11855259  0.11855259  0.11855259  0.12206700 
##          60         287         289         290         293         320 
##  0.14182202  0.14315555  0.14315555  0.14315555  0.14315555  0.14315555 
##          33          36          40          62         319         197 
##  0.14485508  0.14485508  0.14485508  0.14485508  0.14618860  0.14849026 
##         201         420         423          66          70          71 
##  0.14849026  0.16947310  0.16947310  0.20085070  0.20085070  0.20085070 
##          75          80          82          84          86          90 
##  0.20085070  0.20085070  0.20085070  0.20085070  0.20085070  0.20085070 
##          92          93          94          96          98         108 
##  0.20085070  0.20085070  0.20085070  0.20085070  0.20085070  0.20085070 
##         114         116         121          91         102         380 
##  0.20085070  0.20085070  0.20085070  0.20436510  0.20436510  0.20591656 
##          11          21          24          29          32          50 
##  0.24287636  0.24287636  0.24287636  0.24287636  0.24287636  0.24287636 
##          54          34         171         172         173         203 
##  0.24287636  0.24335772  0.25002595  0.25002595  0.25002595  0.25970156 
##         204         214         218         219         221         222 
##  0.25970156  0.25970156  0.25970156  0.25970156  0.25970156  0.25970156 
##         227         250         259         261         262         263 
##  0.25970156  0.25970156  0.25970156  0.25970156  0.25970156  0.25970156 
##         386         394         411         425         428         432 
##  0.26749438  0.26749438  0.26749438  0.26749438  0.26749438  0.26749438 
##         244         278         279         280         232         233 
##  0.28297099  0.28297099  0.28297099  0.28297099  0.28600404  0.28600404 
##         421         426         409         417         445         356 
##  0.29076382  0.29076382  0.29379687  0.29379687  0.29379687  0.30393785 
##         359         366         368         371         348         361 
##  0.30393785  0.30393785  0.30393785  0.30393785  0.32720728  0.32720728 
##         211         213         215         217         224         226 
##  0.38402533  0.38402533  0.38402533  0.38402533  0.38402533  0.38402533 
##         231         266         275         242         235         241 
##  0.38402533  0.38402533  0.38402533  0.38450668  0.38753973  0.38753973 
##         389         390         396         399         402         407 
##  0.39181816  0.39181816  0.39181816  0.39181816  0.39181816  0.39181816 
##         434         435         436         412         413         414 
##  0.39181816  0.39181816  0.39181816  0.39229951  0.39229951  0.39229951 
##         415         398         331         342         347         351 
##  0.39229951  0.39533256  0.42826162  0.42826162  0.42826162  0.42826162 
##         352         353         354         357         360         367 
##  0.42826162  0.42826162  0.42826162  0.42826162  0.42826162  0.42826162 
##         370         343         355          19          23         288 
##  0.42826162  0.42874297  0.43177603  0.56205709  0.56205709  0.56339061 
##         294         308         310         312         315         318 
##  0.56339061  0.56339061  0.56339061  0.56339061  0.56339061  0.56339061 
##         321         323         324         325         305         303 
##  0.56339061  0.56339061  0.56339061  0.56339061  0.58666004  0.58969309 
##         104          99         123         124         127          39 
##  0.62156711  0.64435519  0.64435519  0.64435519  0.64435519  0.66359278 
##          30          41          43          58          61          63 
##  0.68638086  0.68638086  0.68638086  0.68638086  0.68638086  0.68638086 
##         285         291         292         301         302         322 
##  0.68771438  0.68771438  0.68771438  0.68771438  0.68771438  0.68771438 
##         326         327         298         225         228         103 
##  0.68771438  0.68771438  0.68819573  0.70320605  0.70320605  0.74589088 
##         363          26          35          37         238         239 
##  0.74744234  0.78791655  0.78791655  0.78791655  0.82752982  0.82752982 
##         240         243         253         264         276         277 
##  0.82752982  0.82752982  0.82752982  0.82752982  0.82752982  0.82752982 
##         281         282         283         404         405         408 
##  0.82752982  0.82752982  0.82752982  0.83532265  0.83532265  0.83532265 
##         418         422         441         442         443         444 
##  0.83532265  0.83532265  0.83532265  0.83532265  0.83532265  0.83532265 
##         344         365         372         378         379         381 
##  0.87176612  0.87176612  0.87176612  0.87176612  0.87176612  0.87176612 
##         382         230         237         406         416         419 
##  0.87176612  0.92906551  0.92906551  0.93685834  0.93685834  0.93685834 
##         345         364         306         295         296         299 
##  0.97330181  0.97330181  1.00689510  1.10843079  1.10843079  1.13121887 
##         300         309         317         328         329         297 
##  1.13121887  1.13121887  1.13121887  1.13121887  1.13121887  1.23275457 
##         304 
##  1.23275457

Calidad de representación

pander(head(est$cos2))
Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
0.05315 0.006649 0.4277 0.007387 0.282
0.04384 0.03292 2.435e-05 0.005238 0.5738
0.03412 0.1285 0.1027 0.003812 0.2411
0.03412 0.1285 0.1027 0.003812 0.2411
0.04384 0.03292 2.435e-05 0.005238 0.5738
0.2741 0.008809 0.05396 0.004208 0.4616

Contribuciones.

pander(head(est$contrib))
Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
0.1175 0.01507 1.09 0.02121 0.838
0.05975 0.04601 3.826e-05 0.009277 1.051
0.05856 0.2261 0.2032 0.008502 0.5564
0.05856 0.2261 0.2032 0.008502 0.5564
0.05975 0.04601 3.826e-05 0.009277 1.051
0.4668 0.01538 0.106 0.009314 1.057

Ahora vamos a visualizar únicamente los individuos coloréandolos en base de sus valores de Cos2 (calidad de representación).

?fviz_mca_ind
fviz_mca_ind(uni.mca, col.ind = "cos2",
             gradient.cols= c("blue", "white", "red"),
             repel = TRUE, 
             ggtheme = theme_grey())
## Warning: ggrepel: 394 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps

Se ven individuos mas alejados al centro de gravedad son los mejor representados por ambas dimensiones dado que segun sus caracteristicas contribuyen un alto porcentaje a la definicion de ambas dimensiones (lejanos y aproximadamente con 45 grados al centro de gravedad), ademas de los que estan alejados y muy cercanos a una dimension, como por ejemplo los individuos 409, 417 y 445 se encuentra muy cercanos al eje de la dimension 2 por lo que esta los representa bien.

tail(est$contrib)
##          Dim 1     Dim 2      Dim 3      Dim 4      Dim 5
## 440 0.01471501 0.4409500 0.01381912 0.05817901 0.01813721
## 441 0.45812217 0.6782594 0.03567506 0.05517507 0.04278631
## 442 0.45812217 0.6782594 0.03567506 0.05517507 0.04278631
## 443 0.45812217 0.6782594 0.03567506 0.05517507 0.04278631
## 444 0.45812217 0.6782594 0.03567506 0.05517507 0.04278631
## 445 0.05667182 1.3504293 0.02040334 0.05526492 0.04168646
fviz_cos2 (uni.mca, choice = "ind", axes = 1:2, top = 50)+labs(title = "Cos2 de los individuos para las Dimensiónes 1-2")

Aquí se observa una complicación si quisieramos observar los cos2 de cada individuo mediante un diagrama de barras debido a la gran cantidad de datos que hay. El diagrama de barras en este caso no es recomendable por esto mismo, y ocurre también para observar las contribuciones de los individuos a las dimensiones. El codigo para observar las contribuciones sería

fviz_contrib(uni.mca, choice = "ind", axes = 1:2)

Agrupando a los individuos.

El siguiente código agrupa los individuos por colores utilizando los niveles de la variable de elección, en este caso escogimos la variable “Sexo” que indica el género de los estudiantes admitidos. El argumento habillage se usa para especificar el el factor de la variable para agrupar los individuos por color. Se agrega también un elipse de concentración alrededor de cada grupo usando el argumento addEllipses = TRUE.

fviz_mca_ind(uni.mca,
            label = "none",
            habillage = Sexo,
            pallette = c("#CCCCFF", "#F08080"),
            addEllipses = TRUE,
            ggtheme = theme_grey())

Se puede observar cómo las elipses de concentración de los puntos correspondientes a las categorías de la variable sexo están diferenciadas entre sí horizontalmente, indicando que la dimensión representada en ese eje (dimensión 1) discrimina entre ambas categorías de la variable. Esto no es así para la dimensión en el eje vertical (dimensión 2).

Si se quiere hacer con varias variables categóricas:

fviz_ellipses(uni.mca, 1:4, 
              geom = "point")
## Warning: `gather_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `gather()` instead.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <]8;;https://github.com/kassambara/factoextra/issueshttps://github.com/kassambara/factoextra/issues]8;;>.

  • Descripción de la dimensión:
uni.desc <- dimdesc(uni.mca, axes = c(1,2))
uni.desc[[1]]
## $quali
##                R2      p.value
## Carrera 0.4285332 2.729269e-50
## Estrato 0.3509500 3.261910e-42
## Sexo    0.3290597 2.681458e-40
## Origen  0.2605319 1.074463e-29
## 
## $category
##                 Estimate      p.value
## Sexo=M         0.3706947 2.681458e-40
## Estrato=bajo   0.3052501 8.673120e-27
## Origen=Otro    0.1560603 7.249209e-16
## Carrera=Geol   0.5424408 4.904088e-13
## Origen=Cund    0.2950703 5.987708e-10
## Carrera=Mate   0.1872306 2.572682e-03
## Estrato=alto   0.1350416 3.620153e-03
## Carrera=Fisi   0.1266678 4.305176e-03
## Carrera=Quim   0.1373367 9.492803e-03
## Origen=Bogo   -0.4511305 1.925781e-30
## Sexo=F        -0.3706947 2.681458e-40
## Carrera=Farm  -0.8029882 5.005960e-41
## Estrato=medio -0.4402917 6.161214e-42
## 
## attr(,"class")
## [1] "condes" "list"

Prueba de hipotesis:

  • H0: La variable o clasificacion no es caracteristica en la dimension
  • H1: La variable o clasificacion es caracteristica en la dimensión

El primer eje (dimension 1) se caracteriza por todas las cualitativas de la base de datos, siendo la variable carrera la que mas influencia tiene en esta dimension dado que tiene el R-cuadrado mas alto. Por el lado de las categorias, todas menos la carrera de biologia ni estadistica, son caracteristicas en esta dimension.

Se puede ver que la categoria sexo masculino tiene coordenadas significativamente más elevadas que la media (0) en el primer eje, mientras que la categoria estrato medio es la que tiene coordenadas mas por debajo de la media del eje 1.

uni.desc[[2]]
## $quali
##                R2      p.value
## Estrato 0.4084061 4.142269e-51
## Origen  0.3636578 4.127146e-44
## Carrera 0.3769897 3.462704e-42
## Sexo    0.1863262 1.270418e-21
## 
## $category
##                  Estimate      p.value
## Estrato=bajo   0.51524141 5.965710e-43
## Origen=Otro    0.34025553 1.132851e-33
## Sexo=F         0.27548929 1.270418e-21
## Carrera=Quim   0.51470708 2.380816e-14
## Carrera=Farm   0.41514749 3.873902e-11
## Origen=Cund    0.13011519 2.600059e-05
## Carrera=Biol   0.20779436 4.242543e-03
## Carrera=Mate  -0.25928525 2.121723e-04
## Estrato=medio -0.05679302 1.027153e-06
## Carrera=Geol  -0.42207042 5.642303e-08
## Carrera=Fisi  -0.38590151 9.136110e-13
## Sexo=M        -0.27548929 1.270418e-21
## Estrato=alto  -0.45844838 3.025078e-24
## Origen=Bogo   -0.47037072 3.422630e-44
## 
## attr(,"class")
## [1] "condes" "list"

El primer eje (dimension 2) se caracteriza por todas las cualitativas de la base de datos, siendo la variable estrato la que mas influencia tiene en esta dimension dado que tiene el R-cuadrado mas alto. Por el lado de las categorias, todas menos la carrera de Estadistica, son caracteristicas en esta dimension.

Se puede ver que la categoria estrato bajo tiene coordenadas significativamente más elevadas que la media (0) en el segundo eje, mientras que la categoria origen Bogota es la que tiene coordenadas mas por debajo de la media del eje 2.

Variable Suplementaria.

Se agrega la variable suplementaria “Edad” a la base de datos

NuevosDatos<-cbind(Datos,Edad)
sup.mca<- MCA(NuevosDatos,quali.sup = 5,ncp=2,graph = FALSE)
coor_cat<- sup.mca$quali.sup$coord
pander(coor_cat)
  Dim 1 Dim 2
15 0.567 0.4691
16 -0.03525 0.1695
17 0.04223 -0.1247
18 -0.326 0.001609
19 0.1602 0.1941
20 0.02123 0.2132
21 0.06035 -0.2191
22 -0.2961 0.427
23 -0.1237 0.001791
24 0.732 -0.3164
25 1.233 0.2662
26 0.4551 0.5639
27 0.6635 0.1215
28 -0.1988 -1.058
29 0.5195 -1.578
30 -0.2136 -1.066
31 -0.3905 -0.2077
32 0.4439 -1.742
35 -0.5157 -0.4525
39 -0.4309 -1.017
40 -0.2744 -1.222
44 0.732 -0.3164
coor_edad<-sup.mca$quali.sup$eta2
pander(coor_edad)
  Dim 1 Dim 2
Edad 0.04859 0.06076
fviz_mca_var(sup.mca,repel=T)+labs(title =" Nube de puntos de Categorias y Edad Suplementaria")

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
NuevosDatos %>% group_by(Edad) %>% count()
## # A tibble: 22 × 2
## # Groups:   Edad [22]
##    Edad      n
##    <fct> <int>
##  1 15        7
##  2 16      111
##  3 17      171
##  4 18       56
##  5 19       30
##  6 20       22
##  7 21       11
##  8 22        4
##  9 23        9
## 10 24        1
## # … with 12 more rows

Del gráfico anterior, inferimos que de las relaciones más fuertes que se pueden notar, son cuando los estudiantes tienen 15 y 26 años su estrato es bajo, y provienen de otros sectores fuera de Bogotá. Otra puede ser los que tengan 25 años y provengan de municipios de Cundinamarca.

Las variables e individuos suplementarios no se utilizan para determinar las dimensiones principales. Sus coordenadas se predicen utilizando únicamente la información proporcionada por el análisis de correspondencia múltiple realizado sobre las variables/individuos activos.