Conjunto de Datos

La base de datos utilizada para el desarrollo del ejercicio corresponde a “DogBreeds”, la cual corresponde a una tabla de 27 filas (razas de perros) y 7 columnas (variables cualitativas respecto al físico: tamaño, peso, velocidad; variables relacionadas con la actividad psiquíca: inteligencia, afectividad, agresividad; y la última es una variable suplementaria: función). Fine, J (1996).

Variables Categorías
Tamaño (SIZE) Small (sma) Medium (med) Large (lar)
Peso (WEIG) Lightwight (lig) Medium (med) Heavy (hea)
Velocidad (SPEE) Low (low) Medium (med) High (hig)
Inteligencia (INTE) Low (low) Medium (med) High (hig)
Afectividad (AFEE) Low (low) High (hig)
Agresividad (AGGR) Low (low) High (hig)
Función (FUNC) Company (com) Hunt (hun) Utility (util)
library(ade4)
library(FactoClass)
library(factoextra)
library(FactoMineR)
library(ggplot2)
library(knitr)

data("DogBreeds")
DogBreeds
##      SIZE WEIG SPEE INTE AFFE AGGR FUNC
## bass  sma  lig  low  low  low  hig  hun
## beau  lar  med  hig  med  hig  hig  uti
## boxe  med  med  med  med  hig  hig  com
## buld  sma  lig  low  med  hig  low  com
## bulm  lar  hea  low  hig  low  hig  uti
## cani  sma  lig  med  hig  hig  low  com
## chih  sma  lig  low  low  hig  low  com
## cock  med  lig  low  med  hig  hig  com
## coll  lar  med  hig  med  hig  low  com
## dalm  med  med  med  med  hig  low  com
## dobe  lar  med  hig  hig  low  hig  uti
## dogo  lar  hea  hig  low  low  hig  uti
## foxh  lar  med  hig  low  low  hig  hun
## foxt  sma  lig  med  med  hig  hig  com
## galg  lar  med  hig  low  low  low  hun
## gasc  lar  med  med  low  low  hig  hun
## labr  med  med  med  med  hig  low  hun
## masa  lar  med  hig  hig  hig  hig  uti
## mast  lar  hea  low  low  low  hig  uti
## peki  sma  lig  low  low  hig  low  com
## podb  med  med  med  hig  hig  low  hun
## podf  lar  med  med  med  low  low  hun
## poin  lar  med  hig  hig  low  low  hun
## sett  lar  med  hig  med  low  low  hun
## stbe  lar  hea  low  med  low  hig  uti
## teck  sma  lig  low  med  hig  low  com
## tern  lar  hea  low  med  low  low  uti

Análisis Descriptivo

Inicialmente se propone realizar una análisis descriptivo de la información obtenida de las 27 razas de perros, donde se evidencia que según las características físicas la mayoría de los perros son de tamaño grande con un total de 15, de peso mediano (14), y velocidad baja (10). Respecto a las varibles psiquícas, la inteligencia media contiene la mayor cantidad de individuos (13), mientras que para la afectividad y agresividad la distribución de los resultados es similar.

summary(DogBreeds)
##   SIZE     WEIG     SPEE     INTE     AFFE     AGGR     FUNC   
##  lar:15   hea: 5   hig: 9   hig: 6   hig:14   hig:13   com:10  
##  med: 5   lig: 8   low:10   low: 8   low:13   low:14   hun: 9  
##  sma: 7   med:14   med: 8   med:13                     uti: 8

Análisis de Correspondencias Múltiples

Representación Simultanea:

Con base a la Figura 1, se observa que el porcentaje de varianza explicado en el primer plano factorial es del 52%, adicionalmente, permite identificar algunas tipologías que están describiendo las asociaciones entre las modalidades, como por ejemplo:

  • Tamaño Mediano se asocia con velocidad media y algunos perros con estás características son: podb, boxes, dalm, labr.
  • Afectividad Alta se asocia con Inteligencia Media y agresividad baja, algunos perros que tienen dichas características son: cani, foxt y cock.
  • Peso ligero y tamaño pequeño son características que se resaltan más en perro como: teck, chin, buld y peki.
  • La raza de perro con una velocidad baja sobresaliente corresponde a bass.
  • Peso medio se asocia con una inteligencia alta, donde las razas coll, podf, masa y sett son los mejores representados.
  • Poin y dobe son razas de perros cuya velocidad es alta (SPEE.hig).
  • Gasc, galg y foxh presentan valores significativos en la variable tamaño grande (Size.lar)
  • Finalmente, las razas restantes obtienen valores similares en las variables agresividad alta, afectividad baja, inteligencia baja y peso alto.
datos=DogBreeds
ACM_Perro= MCA(datos, ncp = 6, graph = FALSE, quali.sup = 7)
ACM_Perro1= MCA(datos[1:6], ncp = 6, graph = FALSE)
fviz_mca_biplot(ACM_Perro1, repel = TRUE,
                ggtheme = theme_minimal(), title = "")

Figura 1. Representación Simultanea ACM

# Contributions of rows to dimension 1
fviz_contrib(ACM_Perro, choice = "var", axes = 1, top = 15)

# Contributions of rows to dimension 2
fviz_contrib(ACM_Perro, choice = "var", axes = 2, top = 15)

# Contribucion total para la componente 1 y 2
fviz_contrib(ACM_Perro, choice = "var", axes = 1:2, top = 15)

1. ¿Cuántos ejes se generan en el ACM?

Se generan p-s ejes, donde p = 16 categorías y s = 6 preguntas, entonces la cantidad de ejes que se generan correponde a 16-6 = 10. Esto también se puede ver en términos del número de valores propios.

ACM_Perro1$eig[,1]
##       dim 1       dim 2       dim 3       dim 4       dim 5       dim 6 
## 0.481606165 0.384737288 0.210954049 0.157554025 0.150132670 0.123295308 
##       dim 7       dim 8       dim 9      dim 10 
## 0.081462460 0.045669757 0.023541911 0.007713034

2. ¿Qué relación existe entre la Inercia Total, el número de modalidades y el número de variables cualitativas?

La relación es que la Inercia Total es el cociente entre el número de modalidades y el número de variables cualitativas menos 1.

\(I = \frac{p}{s} - 1 = \frac{16}{6}-1 = 1.666667\)

sum(ACM_Perro1$eig[,1])
## [1] 1.666667

3. ¿Qué similitudes existen entre las razas de perros?

Para identificar las similitudes existentes entre las razas de perro resulta útil apoyarse de los planos factoriales. La Figura 2 muestra que los similares son:

  • Peki y chin
  • Coll y podf
  • Podb y boxe
  • Labr y dalm
  • Teck y buld
  • Sett y masa
fviz_mca_ind(ACM_Perro, repel = TRUE, title=" ")

Figura 2. Nube de individuos (raza de perros)

4. Con base a la nube de individuos cuales son los valores excéntricos? Analizar las contribuciones y cosenos por individuos

El \(Cos^2\) da información respecto a la calidad de representación para cada eje, es por esto, que con ayuda de la Tabla 1 se observa que las razas buld y teck son las que mayor represente para la primera componente, mientras que para la segunda componente bass, dalm y labr obtienen un \(Cos^2\) más alto.

kable(round(ACM_Perro$ind$cos2[,1:2],4), caption = "Tabla 1. Cos2 para la componente 1 y 2")
Tabla 1. Cos2 para la componente 1 y 2
Dim 1 Dim 2
bass 0.0338 0.6349
beau 0.0886 0.1537
boxe 0.1113 0.4325
buld 0.6245 0.1839
bulm 0.2707 0.1430
cani 0.3852 0.0001
chih 0.3799 0.3827
cock 0.2792 0.0032
coll 0.0124 0.2493
dalm 0.2363 0.5530
dobe 0.4876 0.0636
dogo 0.5608 0.1315
foxh 0.5583 0.0005
foxt 0.4363 0.0108
galg 0.3388 0.0051
gasc 0.1860 0.0089
labr 0.2363 0.5530
masa 0.1537 0.1402
mast 0.3000 0.4136
peki 0.3799 0.3827
podb 0.1050 0.4940
podf 0.0175 0.2221
poin 0.2946 0.1168
sett 0.2239 0.1253
stbe 0.2016 0.2087
teck 0.6245 0.1839
tern 0.0884 0.1415

Referente a la calidad de representación en el primer plano factorial según la Figura 3, se puede decir que las razas buld, teck, peki, chih, dalm, labr son los individuos que presentan un \(Cos^2\) más alto, es decir, la inercia se ve mejor explicada por ellos.

fviz_mca_ind(ACM_Perro, col.ind =  "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal(), title="", labelsize=4)

Figura 3. Nube de individuos y Cos2

Las contribuciones por Individuos permiten identificar cuales son los que más contribuyen en la construcción de los ejes, por está razón se generó la Tabla 2, allí se puede visualizar que para el primer eje la variable que más aporta corresponde a dogo, buld y teck, y para el eje 2 la mayor contribución está dada por las razas bass y podb.

kable(round(ACM_Perro$ind$contrib[,1:2],4), caption = "Tabla 2. Contribución para la componente 1 y 2")
Tabla 2. Contribución para la componente 1 y 2
Dim 1 Dim 2
bass 0.4966 11.6742
beau 0.7738 1.6796
boxe 1.5391 7.4850
buld 7.8971 2.9108
bulm 4.3556 2.8794
cani 6.4006 0.0025
chih 5.4366 6.8550
cock 4.1353 0.0602
coll 0.1059 2.6645
dalm 3.2216 9.4385
dobe 5.8638 0.9581
dogo 8.4305 2.4741
foxh 5.9090 0.0061
foxt 5.9774 0.1859
galg 3.5215 0.0666
gasc 2.0582 0.1238
labr 3.2216 9.4385
masa 1.8194 2.0766
mast 4.3945 7.5847
peki 5.4366 6.8550
podb 1.7574 10.3508
podf 0.1615 2.5610
poin 3.4866 1.7297
sett 1.9545 1.3692
stbe 2.6173 3.3927
teck 7.8971 2.9108
tern 1.1311 2.2668

Adicionalmente se genera la Figura 4, donde se observa la contribución para la construcción del primer plano factorial, donde los individuos con colores cercanos a rojo son quienes dan un mayor aporte, caso contrario a los cercanos al tono azul. De aquí se resalta entonces los indivuduos como peki y chih como los de mayor valor de contribución, y gasc, beau, podf y coll como los de menos valor.

fviz_mca_ind(ACM_Perro, col.ind = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal(), title="", labelsize=4)

Figura 4. Nube de individuos y Contribuciones

5. Con base a la nube de variables cuales son las modalidades más asociadas?

Se observa en la Figura 5, que la modalidad de peso ligero (WEIG.lig) y tamaño pequeño (SIZE.sma) se encuentran con una alta asociación y tiene un relación significativa con la baja velocidad (SPEE.low). Además, hay una relación estrecha entré la afectividad baja, el tamaño grande y una agresividad alta, así como una inteligencia mediana con agresividad baja y afectividad alta. Por último, el tamaño mediano (SIZE.med), se encuentra altamente asociaciada con velocidad media (SPEE.med).

fviz_mca_var(ACM_Perro1, 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal(), title="", labelsize=4)

Figura 5. Nube de variables

6. Realice una interpretación de las contribuciones absolutas y cosenos cuadrados para las modalidades y variables. Los valores excéntricos tienen contribuciones altas?

Las modalidades de mayor coseno cuadrado para el primer plano factorial corresponden a peso ligero y tamaño largo, mientras que la de menor valor inteligencia alta.

# Representacion de las variables por cos2
fviz_mca_var(ACM_Perro1, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal(), title="", labelsize=4)

Las modalidades de dan una mayor contribución para la construcción del primer plano factorial corresponden a peso ligero y tamaño pequeño, por el contrario, se encuentran las modalidades relacionadas con la inteligencia y la agresividad.

# Representacion de las variables por contribucion
fviz_mca_var(ACM_Perro1, col.var = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE, # Avoid text overlapping
             ggtheme = theme_minimal(), title="", labelsize=4)

7. De la base de datos activa generé un 5% de datos faltantes o no disponibles (NA) y utilice la función impute.MCA para completar la base de datos. Luego realice el ACM y compare el caso de datos completos vs imputación.

Como se observa en la figura, al tener datos datos faltantes se obtiene nuevas modalidades y categorías, es decir, dependiendo de donde de la categoría en la que este encuentre el valor faltante, esta categoría automáticamente aparece como nueva.

ACMNa <- function(Xo,a) # Genera a% NAs , md: miss data
{
  X. <- as.matrix(Xo)
  n <- nrow(X.) ; p <- ncol(X.) ; N <- n*p
  m <- sample(N,round(a*N,0)) ; d <- length(m)
  
  for(j in 1:d){
    X.[m[j]] <- NA
  } 
  
  return(X.)
}
 Datos_Faltantes=ACMNa(DogBreeds[-7] , 0.05)
 ACM_Perro_Na= MCA(Datos_Faltantes, ncp = 6, graph = FALSE)
 
 kable(round(ACM_Perro_Na$eig[,1],4))
x
dim 1 0.4926
dim 2 0.4031
dim 3 0.3137
dim 4 0.2366
dim 5 0.2123
dim 6 0.1980
dim 7 0.1579
dim 8 0.1154
dim 9 0.1036
dim 10 0.0856
dim 11 0.0649
dim 12 0.0447
dim 13 0.0392
dim 14 0.0255
dim 15 0.0069
 fviz_mca_biplot(ACM_Perro_Na, 
                 repel = TRUE, # Avoid text overlapping (slow if many point)
                 ggtheme = theme_minimal(), title = "")

8. Se tiene la variable Edad (años) como variable suplementaria:

Se tiene la variable suplementaria Edad, la cual es cuantitativa, con la que se calcula el ACM obteniendo las siguientes coordenadas

Edad_perros<-c(2 ,2  ,2, 2,  2,  4,  1,  1,  1,  4,
                  4,  2,  2,  2,  2,  4,  4,  5,  5,  5,
                  5,  6,  6,  7,  7,  7,  5)        

DatosEdad<-cbind(DogBreeds[-7],Edad_perros)

ACM_Edad<-MCA(DatosEdad,ncp=7,graph = FALSE, quanti.sup = 7)
ACM_Edad$quanti.sup$coord
##                  Dim 1       Dim 2      Dim 3      Dim 4     Dim 5
## Edad_perros -0.1217155 -0.09395855 0.04058668 -0.1535185 0.3931948
##                 Dim 6      Dim 7
## Edad_perros 0.3177735 -0.1894008
kable(round(ACM_Edad$quanti.sup$coord,4), caption = "Coordenada de ACM con la variable suplementaria edad")
Coordenada de ACM con la variable suplementaria edad
Dim 1 Dim 2 Dim 3 Dim 4 Dim 5 Dim 6 Dim 7
Edad_perros -0.1217 -0.094 0.0406 -0.1535 0.3932 0.3178 -0.1894

9. Cómo se encuentran las coordenadas de la variable suplementaria

Como se observa en la figura, se obtiene las categorías de la variable cualitativa Función, las cuales son com, uti, hun.

ACM_Perro1= MCA(DogBreeds, ncp = 6, graph = FALSE, quali.sup = 7)
ACM_Perro1$quali.sup$coord
##          Dim 1       Dim 2       Dim 3       Dim 4       Dim 5      Dim 6
## com  1.0393408  0.09532043 -0.06789625 -0.08896431 -0.01114286 -0.2682897
## hun -0.3223906 -0.43243220 -0.34874881 -0.18394526 -0.44294027  0.6648777
## uti -0.9364865  0.36733569  0.47721272  0.31814381  0.51223638 -0.4126253
kable(round(ACM_Perro1$quali.sup$coord,4), caption = "Coordenada de ACM con la variable suplementaria Función")
Coordenada de ACM con la variable suplementaria Función
Dim 1 Dim 2 Dim 3 Dim 4 Dim 5 Dim 6
com 1.0393 0.0953 -0.0679 -0.0890 -0.0111 -0.2683
hun -0.3224 -0.4324 -0.3487 -0.1839 -0.4429 0.6649
uti -0.9365 0.3673 0.4772 0.3181 0.5122 -0.4126
fviz_mca_biplot(ACM_Perro1, 
                 repel = TRUE, # Avoid text overlapping (slow if many point)
                 ggtheme = theme_minimal(), title = "")