pacman::p_load(sjstats, ca, tidyverse, haven, factoextra, FactoMineR, gplots, ggpubr, corrplot, expss)12 Análisis de Correspondencias Simples
13 Análisis de correspondencias
El análisis de correspondencias se debe poder hacer desde una tabla legacy (tabla antigua barbwin) o desde una tabla nueva (editada) o desde una tabla importada (copy and paste???) o txt. Quiero huir de tener que generar un fichero Barbwin para ello.
Sea cual sea la forma esa tabla debe crearse como table. Este primer chunk lo que hace es eso, y habría que obviarlo. La primera columna de esa tabla (puntos fila) deben ser rownames.
tabla <- suppressMessages(read_csv("http://download.tesigandia.com/tmim/tabla.hatco.anacor.csv")) Error in open.connection(structure(4L, class = c("curl", "connection"), conn_id = <pointer: 0x0000029b731eac60>), : no se puede abrir la conexión
tabla <- subset(tabla, select = -1) Error: objeto 'tabla' no encontrado
# en este ejemplo, quito la columna 1 porque ahi viene los textos que quiero pase a
# los nombres de las columnas vienen definidos en los nombres de las variables
rownames(tabla) <- c("x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8") # asignamos los nombres de fila con la propiedad rownames, pues así lo necesita el paquete `ca`. Error: objeto 'tabla' no encontrado
tabla <- as.table(as.matrix(tabla)) Error: objeto 'tabla' no encontrado
13.1 Tabla de datos
Generamos una salida de tabla en modo gráfico, donde visualmente el diámetro de la circunferencia es mayor cuanto mayor sea el valor de la celda
balloonplot(
t(tabla),
main = "Empresa * Atributo", # título libre
xlab = "Empresa", # qué son las columnas
ylab = "Atributo", # qué son las filas
label = T, # pone el valor en la bola
show.margins = TRUE # muestra los totales marginales
) Error: objeto 'tabla' no encontrado
13.2 Prueba Chi2 de homogeneidad
crosstable_statistics(tabla) Error: objeto 'tabla' no encontrado
13.3 Resultados
res.ca <- CA(tabla,
ncp = 7, # se puede definir un número pero lo normal es no poner nada. El máximo de componentes es el menor de filas o columnas - 1 . En este caso 10 columnas, 8 filas, será 7.
row.sup = NULL, # como vector, el índice de filas complementarias, por ejmplo si fueran de la 8 a la 10, sería 8:10
col.sup = NULL, # como vector, el índice de columnas complementarias, por ejmplo si fuera la 11 y la 12, sería 11:12
graph = FALSE
) Error: objeto 'tabla' no encontrado
res.ca Error: objeto 'res.ca' no encontrado
13.3.1 Mapa básico
plot.CA(
res.ca,
axes = c(1, 2),
col.row = "steelblue",
col.col = "orange",
col.row.sup = "darkblue",
col.col.sup = "darkred",
autoLab = c("auto", "yes", "no"),
title = "Correspondence Analysis",
) Error: objeto 'res.ca' no encontrado
# plot(res.ca, axes(1,3)) combinaciones de números entre 1 y máximo dimensiones
# plot(res.ca, axes(2,3))13.3.2 Valores propios
res.ca$eig Error: objeto 'res.ca' no encontrado
13.3.3 Análisis de las columnas
13.3.3.1 Masa de las columnas
res.ca$call$marge.col Error: objeto 'res.ca' no encontrado
13.3.3.2 Inercia de las columnas
res.ca$col$inertia Error: objeto 'res.ca' no encontrado
13.3.3.3 Contribuciones de las columnas
res.ca$col$contrib Error: objeto 'res.ca' no encontrado
13.3.3.4 Calidad (cos2)
res.ca$col$cos2 Error: objeto 'res.ca' no encontrado
fviz_cos2(res.ca, choice = "col", axes = 1:2) Error: objeto 'res.ca' no encontrado
13.3.3.5 Coordenadas de las columnas
res.ca$col$coord Error: objeto 'res.ca' no encontrado
fviz_ca_col(
res.ca,
col.col = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE
) Error: objeto 'res.ca' no encontrado
13.3.4 Análisis de las filas
13.3.4.1 Masa de las filas
res.ca$call$marge.row Error: objeto 'res.ca' no encontrado
13.3.4.2 Inercia de las filas
res.ca$row$inertia Error: objeto 'res.ca' no encontrado
13.3.4.3 Contribuciones de las filas
res.ca$row$contrib Error: objeto 'res.ca' no encontrado
13.3.4.4 Calidad (cos2)
res.ca$row$cos2 Error: objeto 'res.ca' no encontrado
fviz_cos2(res.ca, choice = "row", axes = 1:2) Error: objeto 'res.ca' no encontrado
13.3.4.5 Coordenadas de las filas
res.ca$row$coord Error: objeto 'res.ca' no encontrado
fviz_ca_row(
res.ca,
col.row = "cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE
) Error: objeto 'res.ca' no encontrado
13.3.5 Calidad de las dimensiones
Calculamos el gráfico de las calidad de la varianza explicada por las dimensiones, descendente por representación.
fviz_eig(
res.ca,
choice = c("variance", "eigenvalue"),
geom = c("bar", "line"),
barfill = "grey",
barcolor = "grey",
linecolor = "firebrick",
addlabels = TRUE,
hjust = 0,
main = "Análisis de correspondencias",
xlab = "Dimensiones",
ylab = "% varianza",
ylim = c(0, 100),
repel = TRUE
) Error: objeto 'res.ca' no encontrado
13.3.6 Mapas de puntos
The default plot of CA is a “symmetric” plot in which both rows and columns are in principal coordinates. In this situation, it’s not possible to interpret the distance between row points and column points. To overcome this problem, the simplest way is to make an asymmetric plot. This means that, the column profiles must be presented in row space or vice-versa. The allowed options for the argument map are:
“rowprincipal” or “colprincipal”: asymmetric plots with either rows in principal coordinates and columns in standard coordinates, or vice versa. These plots preserve row metric or column metric respectively.
“symbiplot”: Both rows and columns are scaled to have variances equal to the singular values (square roots of eigenvalues), which gives a symmetric biplot but does not preserve row or column metrics.
“rowgab” or “colgab”: Asymmetric maps, proposed by Gabriel & Odoroff (1990), with rows (respectively, columns) in principal coordinates and columns (respectively, rows) in standard coordinates multiplied by the mass of the corresponding point.
“rowgreen” or “colgreen”: The so-called contribution biplots showing visually the most contributing points (Greenacre 2006b). These are similar to “rowgab” and “colgab” except that the points in standard coordinates are multiplied by the square root of the corresponding masses, giving reconstructions of the standardized residuals.
fviz_ca_biplot(
res.ca,
map = "symmetric",
title = "análisis de correspondencias: simétrico",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "colprincipal",
title = "análisis de correspondencias: principal columna",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "rowprincipal",
title = "análisis de correspondencias: principal fila",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "symbiplot",
title = "análisis de correspondencias: simétrico sin preservar métrica de filas y/o columnas",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "colgreen",
title = "análisis de correspondencias: puntos columna más representativos",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "rowgreen",
title = "análisis de correspondencias: puntos fila más representativos",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "colgab",
title = "análisis de correspondencias: asimétrico columnas",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
fviz_ca_biplot(
res.ca,
map = "rowgab",
title = "análisis de correspondencias: asimétrico filas",
arrow = c(TRUE, TRUE), # se pueden poner ambas a FALSE y no salen las flechas
repel = TRUE,
col.col = "orange",
col.row = "steelblue"
) Error: objeto 'res.ca' no encontrado
13.3.7 Otros gráficos
Calculamos otros gráficos de soporte a la comprensión del análisis
13.3.7.1 Mapa de columnas
fviz_ca_col(res.ca, repel = TRUE, col.col = "orange", title = " sólo columnas") Error: objeto 'res.ca' no encontrado
13.3.7.2 Mapa de filas
fviz_ca_row(res.ca, repel = TRUE, col.row = "steelblue", title = " sólo filas") Error: objeto 'res.ca' no encontrado
13.4 Correlaciones
13.4.1 Columnas
13.4.1.1 Correlación entre calidad columnas/dimensiones
corrplot(res.ca$col$cos2, is.corr = T) Error: objeto 'res.ca' no encontrado
13.4.1.2 Correlación entre contribuciones columnas/dimensiones
corrplot(res.ca$col$contrib, is.corr = F) Error: objeto 'res.ca' no encontrado
13.4.2 Filas
13.4.2.1 Correlación entre calidad filas/dimensiones
corrplot(res.ca$row$cos2, is.corr = T) Error: objeto 'res.ca' no encontrado
13.4.2.2 Correlación entre contribución filas/dimensiones
corrplot(res.ca$row$contrib, is.corr = F) Error: objeto 'res.ca' no encontrado