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:
- Un grupo de personas con perfil similar en sus respuestas a las preguntas
- Las asociaciones entre categorías de variables
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] <- NULLSe 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.
- El número de componentes es determinado en el punto mas allá del cual los egeinvalues restantes son todos relativamente pequeños y de tamaño comparable.
- También se puede calcular el eigenvalue promedio sobre el cual el axis se debería mantener en la solución. En este caso debería ser (1/(número de columnas-1)).
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_indfviz_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.