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(factoextra)
library(gplots)
library(corrplot)
library(dplyr)library(readxl)
base<- read_excel("C:/Users/wsand/Downloads/base_diciembre_audiometrias (5).xlsx")## New names:
## • `` -> `...1`
dim(base)## [1] 10311 20
poison=base[3:20]
poison## # A tibble: 10,311 × 18
## HIPOACUSIA TIPOZONA…¹ TRATA…² HABIT…³ HABIT…⁴ HABIT…⁵ HABIT…⁶ FUMAO…⁷ TIENE…⁸
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0 0 0 1 1 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 1 0 0 0 0 0 0 1 0
## 4 0 1 0 1 0 0 0 0 0
## 5 0 1 0 1 0 0 0 0 0
## 6 0 1 0 0 0 0 0 0 0
## 7 0 1 0 1 0 1 0 0 0
## 8 0 1 0 1 0 1 0 0 0
## 9 1 1 0 1 0 0 0 0 0
## 10 0 1 0 1 0 0 0 1 0
## # … with 10,301 more rows, 9 more variables:
## # EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOD <dbl>,
## # EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOI <dbl>,
## # EXAMENFÍSICOMEMBRANATIMPANICAOD <dbl>,
## # EXAMENFÍSICOMEMBRANATIMPANICAOI <dbl>, HAPRESENTADOALGÚNSÍNTOMA <dbl>,
## # PERCIBERUIDOENLAVIVIENDA <dbl>, ENALGUNAACTIVIDADLEMOLESTAELRUIDO <dbl>,
## # MOLESTIARUIDOENACTIVIDADESEXTRAMURALES <dbl>, …
## # ℹ Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names
dim(poison)## [1] 10311 18
poison%>%DT::datatable()## Warning in instance$preRenderHook(instance): It seems your data is too big
## for client-side DataTables. You may consider server-side processing: https://
## rstudio.github.io/DT/server.html
#balloonplot(as.table(t(as.matrix(poison))), label=F, main="Tareas del hogar")observemos la frecuencias de la comida consumida
summary(poison)## HIPOACUSIA TIPOZONAEXPOSICIÓNARUIDO
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :1.0000
## Mean :0.3544 Mean :0.5161
## 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :1.0000 Max. :1.0000
## TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES
## Min. :0.00000
## 1st Qu.:0.00000
## Median :0.00000
## Mean :0.03569
## 3rd Qu.:0.00000
## Max. :1.00000
## HABITOAUDIFONOSRECREACIONAL HABITOMOTOCICLETA HABITODISCOTECA
## Min. :0.0000 Min. :0.00000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.00000 1st Qu.:0.0000
## Median :0.0000 Median :0.00000 Median :0.0000
## Mean :0.2677 Mean :0.08224 Mean :0.1328
## 3rd Qu.:1.0000 3rd Qu.:0.00000 3rd Qu.:0.0000
## Max. :1.0000 Max. :1.00000 Max. :1.0000
## HABITOTEJO FUMAOFUMÓ TIENEALGÚNFAMILIARCONPERDIDASAUDITIVAS
## Min. :0.0000 Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000 Median :0.0000
## Mean :0.0545 Mean :0.1499 Mean :0.1208
## 3rd Qu.:0.0000 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :1.0000 Max. :1.0000 Max. :1.0000
## EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOD EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOI
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :0.0000 Median :0.0000
## Mean :0.1143 Mean :0.1119
## 3rd Qu.:0.0000 3rd Qu.:0.0000
## Max. :1.0000 Max. :1.0000
## EXAMENFÍSICOMEMBRANATIMPANICAOD EXAMENFÍSICOMEMBRANATIMPANICAOI
## Min. :0.0000 Min. :0.000
## 1st Qu.:0.0000 1st Qu.:0.000
## Median :0.0000 Median :0.000
## Mean :0.1395 Mean :0.133
## 3rd Qu.:0.0000 3rd Qu.:0.000
## Max. :1.0000 Max. :1.000
## HAPRESENTADOALGÚNSÍNTOMA PERCIBERUIDOENLAVIVIENDA
## Min. :0.000 Min. :0.0000
## 1st Qu.:0.000 1st Qu.:0.0000
## Median :1.000 Median :1.0000
## Mean :0.533 Mean :0.6762
## 3rd Qu.:1.000 3rd Qu.:1.0000
## Max. :1.000 Max. :1.0000
## ENALGUNAACTIVIDADLEMOLESTAELRUIDO MOLESTIARUIDOENACTIVIDADESEXTRAMURALES
## Min. :0.0000 Min. :0.0000
## 1st Qu.:0.0000 1st Qu.:0.0000
## Median :1.0000 Median :1.0000
## Mean :0.5754 Mean :0.6898
## 3rd Qu.:1.0000 3rd Qu.:1.0000
## Max. :1.0000 Max. :1.0000
## SÍNDROMEALTERACIÓNENSALUD
## Min. :0.0000
## 1st Qu.:0.0000
## Median :0.0000
## Mean :0.2878
## 3rd Qu.:1.0000
## Max. :1.0000
colnames(poison)## [1] "HIPOACUSIA"
## [2] "TIPOZONAEXPOSICIÓNARUIDO"
## [3] "TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES"
## [4] "HABITOAUDIFONOSRECREACIONAL"
## [5] "HABITOMOTOCICLETA"
## [6] "HABITODISCOTECA"
## [7] "HABITOTEJO"
## [8] "FUMAOFUMÓ"
## [9] "TIENEALGÚNFAMILIARCONPERDIDASAUDITIVAS"
## [10] "EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOD"
## [11] "EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOI"
## [12] "EXAMENFÍSICOMEMBRANATIMPANICAOD"
## [13] "EXAMENFÍSICOMEMBRANATIMPANICAOI"
## [14] "HAPRESENTADOALGÚNSÍNTOMA"
## [15] "PERCIBERUIDOENLAVIVIENDA"
## [16] "ENALGUNAACTIVIDADLEMOLESTAELRUIDO"
## [17] "MOLESTIARUIDOENACTIVIDADESEXTRAMURALES"
## [18] "SÍNDROMEALTERACIÓNENSALUD"
poison$HIPOACUSIA<- factor(poison$HIPOACUSIA)
#poison$TIPOZONAEXPOSICIÓNARUIDO <-factor(poison$TIPOZONAEXPOSICIÓNARUIDO)
#poison$TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES<-factor(poison$TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES)
#poison$HABITOAUDIFONOSRECREACIONAL <-factor(poison$HABITOAUDIFONOSRECREACIONAL)poison$HABITOAUDIFONOSRECREACIONAL<-factor(poison$HABITOAUDIFONOSRECREACIONAL)
#poison$HAPRESENTADONINGUNSÍNTOMA<-factor(poison$HAPRESENTADONINGUNSÍNTOMA)
poison$EXAMENFÍSICOMEMBRANATIMPANICAOD<-factor(poison$EXAMENFÍSICOMEMBRANATIMPANICAOD)
poison$MOLESTIARUIDOENACTIVIDADESEXTRAMURALES<-factor(poison$MOLESTIARUIDOENACTIVIDADESEXTRAMURALES)
poison$TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES<-factor(poison$TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES)
poison$TIPOZONAEXPOSICIÓNARUIDO<-factor(poison$TIPOZONAEXPOSICIÓNARUIDO)
poison$HABITODISCOTECA<-factor(poison$HABITODISCOTECA)
poison$HABITOTEJO<-factor(poison$HABITOTEJO)
poison$EXAMENFÍSICOMEMBRANATIMPANICAOI<-factor(poison$EXAMENFÍSICOMEMBRANATIMPANICAOI)
poison$SÍNDROMEALTERACIÓNENSALUD<-factor(poison$SÍNDROMEALTERACIÓNENSALUD)
poison$FUMAOFUMÓ <- factor(poison$FUMAOFUMÓ)
poison$HABITOMOTOCICLETA<-factor(poison$HABITOMOTOCICLETA)for (i in 1:4) {
plot(poison[, i], main=colnames(poison) [i],
ylab ="Count", col="steelblue", las =2)
}Tabla de contingencia nauseas vs los que consumieron mayoneasa
poison## # A tibble: 10,311 × 18
## HIPOACUSIA TIPOZONA…¹ TRATA…² HABIT…³ HABIT…⁴ HABIT…⁵ HABIT…⁶ FUMAO…⁷ TIENE…⁸
## <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <dbl>
## 1 0 0 0 1 1 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 1 0 0 0 0 0 0 1 0
## 4 0 1 0 1 0 0 0 0 0
## 5 0 1 0 1 0 0 0 0 0
## 6 0 1 0 0 0 0 0 0 0
## 7 0 1 0 1 0 1 0 0 0
## 8 0 1 0 1 0 1 0 0 0
## 9 1 1 0 1 0 0 0 0 0
## 10 0 1 0 1 0 0 0 1 0
## # … with 10,301 more rows, 9 more variables:
## # EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOD <dbl>,
## # EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOI <dbl>,
## # EXAMENFÍSICOMEMBRANATIMPANICAOD <fct>,
## # EXAMENFÍSICOMEMBRANATIMPANICAOI <fct>, HAPRESENTADOALGÚNSÍNTOMA <dbl>,
## # PERCIBERUIDOENLAVIVIENDA <dbl>, ENALGUNAACTIVIDADLEMOLESTAELRUIDO <dbl>,
## # MOLESTIARUIDOENACTIVIDADESEXTRAMURALES <fct>, …
## # ℹ Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names
table(poison[,c(1,4)])## HABITOAUDIFONOSRECREACIONAL
## HIPOACUSIA 0 1
## 0 4518 2139
## 1 3033 621
Tabla de contingencia nauseas vs los que consumieron mayonesa y vomito
table(poison[,c(1,2,3)])## , , TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES = 0
##
## TIPOZONAEXPOSICIÓNARUIDO
## HIPOACUSIA 0 1
## 0 3366 3133
## 1 1450 1994
##
## , , TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES = 1
##
## TIPOZONAEXPOSICIÓNARUIDO
## HIPOACUSIA 0 1
## 0 84 74
## 1 90 120
Una forma más apropiada
Para observar todas las variables cualitativas en una sola tabla es usando la funcion Burt
library("GDAtools")#burt(poison[,c(1,2,3,4)])Análisis de correspondencia Múltiple
colnames(poison)## [1] "HIPOACUSIA"
## [2] "TIPOZONAEXPOSICIÓNARUIDO"
## [3] "TRATAMIENTOCONALGUNMEDICAMENTOOTOTÓXICOPORMÁSDEDOSMESES"
## [4] "HABITOAUDIFONOSRECREACIONAL"
## [5] "HABITOMOTOCICLETA"
## [6] "HABITODISCOTECA"
## [7] "HABITOTEJO"
## [8] "FUMAOFUMÓ"
## [9] "TIENEALGÚNFAMILIARCONPERDIDASAUDITIVAS"
## [10] "EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOD"
## [11] "EXAMENFÍSICOCONDUCTOAUDITIVOEXTERNOOI"
## [12] "EXAMENFÍSICOMEMBRANATIMPANICAOD"
## [13] "EXAMENFÍSICOMEMBRANATIMPANICAOI"
## [14] "HAPRESENTADOALGÚNSÍNTOMA"
## [15] "PERCIBERUIDOENLAVIVIENDA"
## [16] "ENALGUNAACTIVIDADLEMOLESTAELRUIDO"
## [17] "MOLESTIARUIDOENACTIVIDADESEXTRAMURALES"
## [18] "SÍNDROMEALTERACIÓNENSALUD"
poison_active_mca=MCA(poison[,c(1,2,3,4,5,6,7,8,12,13,17)], graph = F)
poison_active_mca## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 10311 individuals, described by 11 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"
get_eigenvalue(poison_active_mca)## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 0.15342114 15.342114 15.34211
## Dim.2 0.13485006 13.485006 28.82712
## Dim.3 0.11859058 11.859058 40.68618
## Dim.4 0.10417987 10.417987 51.10416
## Dim.5 0.08742382 8.742382 59.84655
## Dim.6 0.08428616 8.428616 68.27516
## Dim.7 0.07891360 7.891360 76.16652
## Dim.8 0.07182832 7.182832 83.34935
## Dim.9 0.06645991 6.645991 89.99535
## Dim.10 0.06418586 6.418586 96.41393
## Dim.11 0.03586068 3.586068 100.00000
fviz_screeplot(poison_active_mca,addlabel=T)corrplot(poison_active_mca$var$cos2, tl.cex=0.4)corrplot(poison_active_mca$var$contrib*0.01, tl.cex=0.4)fviz_mca_var(poison_active_mca, repel = F, col.var = "cos2", gradient.cols=c("red", "yellow", "green"), cex=0.3)## Warning: Duplicated aesthetics after name standardisation: size
fviz_mca_var(poison_active_mca, repel = F, choice = "mca.cor" )- La componente 1: asocia los
- componente 2:
fviz_mca_var(poison_active_mca, repel = F, axes = c(1,3),choice = "mca.cor" )fviz_mca_biplot(poison_active_mca, col.var = "cos2", gradient.cols=c("red", "yellow", "green"), arrows = c(T,F))## Scale for 'colour' is already present. Adding another scale for 'colour',
## which will replace the existing scale.