Análisis en componentes principales#

Nota

Los trozos de código de esta página son de R. Por favor, ejecútelos en Colab o Binder

Introducción#

El análisis en componentes principales (ACP) es muy conocido en la Ciencia de Datos como una técnica de reducción de dimensión, pero es mucho más que eso. Si se aborda desde un punto de vista geométrico, es una técnica poderosa para la visualización de datos. Su generalización ha permitido el desarrollo de otros métodos sobre todo para la descripción de variables cualitativas, en cuyo caso también sirve como método de cuantificación de lo cualitativo. Esa visión geométrica de origen francés es la que presentamos aquí. Hacemos uso del R en primera instancia para entender los métodos y luego para llevarlos a la práctica. En este cuaderno introducimos el ACP como se conoce en la mayoría de los ámbitos y que podemos llamar ACP canónico, y al final presentamos el ACP general o generalizado, como un marco común a los métodos derivados, que podemos llamar métodos factoriales o en ejes principales, de los que forman parte los análisis de correspondencias simples y múltiples.

Objetivos del ACP#

  1. Comparar los individuos entre si

  2. Describir las relaciones entre las variables

  3. Reducir la dimensión de la representación

Ejemplo Café y notación#

Para entender el ACP utilizamos un ejemplo muy pequeño, disponible en FactoClass, y que denominamos Café. Es el resultado de un experimento realizado en el Laboratorio de Investigaciones Químicas del Café.

El experimento considera 3 factores:

  • Agregado (sin maíz, cebada)

  • Porcentaje del agregado (20% y 40%)

  • Grado de tostación (clara y oscura)

Se producen «libras de café» tostado y molido para los 10 tratamientos del experimento y con ellas se preparan tazas de café que se someten a mediciones físicas químicas y de degustación. El ejemplo de esta sección utiliza solo las tres variables físicas, para visualizar la geometría del ACP. La tabla de datos de 10 filas y 3 columnas la definimos como Y.

install.packages('FactoClass')
library(FactoClass)
Installing package into 'C:/Users/User/AppData/Local/R/win-library/4.2'
(as 'lib' is unspecified)
package 'FactoClass' successfully unpacked and MD5 sums checked
Warning message:
"cannot remove prior installation of package 'FactoClass'"
Warning message in file.copy(savedcopy, lib, recursive = TRUE):
"problem copying C:\Users\User\AppData\Local\R\win-library\4.2\00LOCK\FactoClass\libs\x64\FactoClass.dll to C:\Users\User\AppData\Local\R\win-library\4.2\FactoClass\libs\x64\FactoClass.dll: Permission denied"
Warning message:
"restored 'FactoClass'"
The downloaded binary packages are in
	C:\Users\User\AppData\Local\Temp\RtmpSssnuw\downloaded_packages
Loading required package: ade4
Loading required package: ggplot2
Loading required package: ggrepel
Loading required package: xtable
Loading required package: scatterplot3d
# carga de FactoClass y definición de Y
library(FactoClass)
# definición de Y
data(cafe)
Y<-cafe[1:10,1:3]
Y
A data.frame: 10 × 3
ColorDAEA
<int><dbl><int>
ExCl298385.125
C40M361481.341
C40C321422.640
C20M335444.333
C20C314368.732
ExOs186346.628
O40M278422.643
O40C238403.042
O20M226368.736
O20C210368.735

La identificación de las filas (cafés, individuos) es nemotécnica y nos informa del respectivo tratamiento. Por ejemplo ExCl, significa café excelso (sin contaminación) y de tostación clara, C40M significa tostación clara contaminado con 40% de maíz.

Nube de individuos#

Sobre la matriz Y se tienen dos representación geométricas, la primera es el espacio de las filas, donde las filas de Y se representan en \(\mathbb{R}^p\): los ejes son las variables y los puntos los individuos. El conjunto de puntos de denomina nube de individuos y se nota \(N_n\). El centro de gravedad de la nube de puntos es: $\( \mathbf{g}= \sum_{i=1}^{n} p_i \mathbf{y}_i = \frac{1}{n} \sum_{i=1}^{n} \mathbf{y}_i \)\( Aquí la representación de la nube en \)3D$, junto con su centro de gravedad.

par(las=1); # grafica;
Y3D<-scatterplot3d(Y,main="Y",type="h",color="black",box=FALSE,
				   las=1); 
Y3D$points3d(Y,pch=1);
addgrids3d(Y, grid = c("xy","xz","yz"));
cord2d<-Y3D$xyz.convert(Y) # convertir cordenadas 3D a 2D;
# poner etiquetas;
text(cord2d,labels=rownames(Y), cex=0.8,col="black",pos=3); 
# poner el centro de gravedad en la gráfica
g <- colMeans(Y) 
Y3D$points3d(t(g),pch=19,col="darkgreen",type = "h");
text(Y3D$xyz.convert(t(g)),labels="g",pos=3,col="black",
     cex=1.3);
../../_images/ACP_14_0.png

Centrando la nube de puntos#

Los ejes se trasladan al centro de gravedad, restando a cada vector individuo el centro de gravedad: $\( \mathbf{y_C}_i = \mathbf{y}_i - \mathbf{g} \)$

# cálculo de la matriz de datos centrados y representación en 3D
Yc<-scale(Y,scale=FALSE)   #calculo
Yc
attr(Yc,"scaled:center")->g  #la función scale muestra el centro de gravedad
g
# grafica de datos centrados
par(las=1);
Yc3D<-scatterplot3d(Yc,main="Yc",type="h",color="black",
	               box=FALSE,las=1);
Yc3D$points3d(Yc,pch=1);
addgrids3d(Yc,grid=c("xy", "xz", "yz"));
text (Yc3D$xyz.convert(Yc),labels=rownames(Yc),cex=0.8,
	  col="black",pos=3);
Yc3D$points3d(t(c(0 ,0 ,0)),pch=19 , col ="darkgreen",type = "h");
text(Yc3D$xyz.convert (t(c(0 ,0 ,0))),labels ="0",pos =3, 
     col ="darkgreen",cex =1.3);
A matrix: 10 × 3 of type dbl
ColorDAEA
ExCl 21.3-16.06-10.5
C40M 84.3 80.14 5.5
C40C 44.3 21.44 4.5
C20M 58.3 43.14 -2.5
C20C 37.3-32.46 -3.5
ExOs-90.7-54.56 -7.5
O40M 1.3 21.44 7.5
O40C-38.7 1.84 6.5
O20M-50.7-32.46 0.5
O20C-66.7-32.46 -0.5
Color
276.7
DA
401.16
EA
35.5
../../_images/ACP_17_2.png

Inercia de la nube de puntos#

\[ Inercia(N_n) = \sum\limits_{i=1}^{n}{p_i d^2(i,\mathbf{g})} \]
\[ Inercia(N_n) = \sum\limits_{i=1}^{n} p_i\sum\limits_{j=1}^{p}y_{{_C}_{ij}}^2 = \sum\limits_{j=1}^{p}\sum\limits_{i=1}^{n} p_i y_{{_C}_{ij}}^2 = \sum\limits_{j=1}^{p}\sigma_j^2 \]

Matriz de varianzas y covarianzas#

Si los pesos de los individuos son iguales: \(p_i=\frac{1}{n}\) $\( \mathbf{V}=\dfrac{1}{n} \mathbf{Y'_C}\mathbf{Y_C} \)\( La inercia de la nube de puntos es también: \)Inercia(N_n) = traza(\mathbf{V})$

V<-covfacwt(Y) # función de ade4, divide por n
# la función var(Y) divide por n-1
round(V,0)
A matrix: 3 × 3 of type dbl
ColorDAEA
Color31061738 61
DA17381560129
EA 61 129 33

Cálculo y gráfica 3D de la matriz de datos estandarizados X#

# Cálculo de matriz X estandarizada
X<-scale(Y)
round(X,2)
# aquí la función scale calcula la media y la desviación estándar
# las varianzas que calcula R es la muestral: se divide por n-1
attr(X,"scaled:center")
round(attr(X,"scaled:scale"),1)
# gráfica de la matriz centrada y reducida (estandrizada)
par(las=1) # etiquetas de los dos ejes sean horizontales;
X3D<-scatterplot3d(X,main="X",type ="h",box=FALSE); 
X3D$points3d(Yc,pch=1);
addgrids3d(X,grid=c("xy","xz","yz"),col.grid="grey80");
text (X3D$xyz.convert(X),labels=rownames(X),cex=0.8,pos=3);
X3D$points3d (t(c(0,0,0)),pch=19,col="darkgreen",type="h");
text(X3D$xyz.convert(t(c(0,0,0))),labels="0",pos=3,col="darkgreen"
	 ,cex=0.8);
A matrix: 10 × 3 of type dbl
ColorDAEA
ExCl 0.36-0.39-1.72
C40M 1.44 1.92 0.90
C40C 0.75 0.51 0.74
C20M 0.99 1.04-0.41
C20C 0.63-0.78-0.57
ExOs-1.54-1.31-1.23
O40M 0.02 0.51 1.23
O40C-0.66 0.04 1.07
O20M-0.86-0.78 0.08
O20C-1.14-0.78-0.08
Color
276.7
DA
401.16
EA
35.5
Color
58.7
DA
41.6
EA
6.1
../../_images/ACP_24_3.png

Búsqueda del eje de mayor inercia proyectada (varianza)#

El valor de la proyección de un individuo i sobre el eje generado por un vector \(\mathbf{u}\) unitario es: \(<\mathbf{x}_i,\mathbf{u}>=\mathbf{x}_i'\mathbf{u}\).

El individuo \(i\) suma a la inercia proyectada (varianza) sobre el eje \(\mathbf{u}\) la cantidad \(\dfrac{1}{n} (\mathbf{x}_i'\mathbf{u})^2\).

La inercia total de la nube de individuos (varianza), proyectada sobre el eje \(\mathbf{u}\) es entonces: $\( \sum_{i=1}^{n} \frac{1}{n} (\mathbf{x}_i'\mathbf{u})^2 = \frac{1}{n}(\mathbf{Xu})'\mathbf{Xu} = \mathbf{u'}\frac{1}{n}\mathbf{X'Xu} \)$

Proyección sobre u

Geométricamente la búsqueda del eje equivale a rotarlo hasta que la suma de cuadrados de las proyecciones de los puntos sobre él sea máxima. Cuando los puntos tienen pesos iguales el eje coincide con la dirección donde la nube de puntos esté más alargada. Se puede observar que cualquier vector que esté sobre la recta es solución y por lo tanto se introduce la condición de que el vector sea unitario: \(\mathbf{u'u}=1\), con lo cual las soluciones son dos, ya que si \(\mathbf{u}\) es solución \(-\mathbf{u}\) también lo es. Cómo es una optimización se pueden tener diferentes procedimientos para hacerlo. En Álgebra lineal se obtiene una solución analítica utilizando la técnica de multiplicadores de Lagrange.

Linea proyeccion

La solución es uno de los dos vectores propios unitarios asociados al valor propio más grande de la matriz: $\( \dfrac{1}{n}\mathbf{X'X} \)\( que es la matriz de correlaciones. Una pareja (valor propio más grande, vector propio) se denota \)(\lambda_1 ,\mathbf{u}_1)$

La matriz de correlaciones, cuando \(n\geq p\), generalmente tiene \(p\) valores propios, los cuales se ordenan de mayor a menor: $\( \lambda_1 \geq \lambda_2 \geq \cdots \lambda_s \geq \cdots \lambda_S \geq \cdots \lambda_p \)$

Los \(p\) vectores propios \(\{\mathbf{u_1},\cdots,\mathbf{u_s},\cdots,\mathbf{u_S} \cdots,\mathbf{u_p} \}\) generan un sistema de nuevos ejes, denominados componentes principales, que son variables, calculadas como combinaciones lineales (sumas ponderadas de las \(p\) variables originales), se notan como \(F_s, s=1,2 \cdots p\), que se pueden entender como nuevas variables y como vectores de dimensión \(n \times 1\), cada uno con los valores de la nueva variable. Los \(p\) vectores \(\mathbf{u}_s\) conforman una nueva base para soportar la nube de puntos.

eigenvectores

Geométricamente lo que se ha hecho es una rotación rígida de los ejes. Veamos lo que sucede con el ejemplo café.

Con la función eigen{base}#

V<-cor(Y)
eigen(V)
eigen() decomposition
$values
[1] 2.0670307 0.8216466 0.1113227

$vectors
           [,1]        [,2]       [,3]
[1,] -0.5794934 -0.57140813  0.5811025
[2,] -0.6728898 -0.06680772 -0.7367197
[3,] -0.4597898  0.81794222  0.3457801

Todos los resultados con la función dudi.pca{ade4} en el objeto acpcafe#

acpcafe<-dudi.pca(X,scannf=FALSE,nf=3)
acpcafe #contenido del objeto café
Duality diagramm
class: pca dudi
$call: dudi.pca(df = X, scannf = FALSE, nf = 3)

$nf: 3 axis-components saved
$rank: 3
eigen values: 2.067 0.8216 0.1113
  vector length mode    content       
1 $cw    3      numeric column weights
2 $lw    10     numeric row weights   
3 $eig   3      numeric eigen values  

  data.frame nrow ncol content             
1 $tab       10   3    modified array      
2 $li        10   3    row coordinates     
3 $l1        10   3    row normed scores   
4 $co        3    3    column coordinates  
5 $c1        3    3    column normed scores
other elements: cent norm 

Valores propios#

round(acpcafe$eig,3)
  1. 2.067
  2. 0.822
  3. 0.111

Vectores propios

round(acpcafe$c1,3)
A data.frame: 3 × 3
CS1CS2CS3
<dbl><dbl><dbl>
Color0.579-0.571 0.581
DA0.673-0.067-0.737
EA0.460 0.818 0.346

Note que el primer vector propio (columna CS1) tiene todas las coordenadas positivas y el primer vector propio obtenido con la función eigen de R tiene las tres coordenadas negativas ¿A qué se debe esto?


Coordenadas de los individuos sobre los nuevos ejes

F<-acpcafe$li
round(F,2)
A data.frame: 10 × 3
Axis1Axis2Axis3
<dbl><dbl><dbl>
ExCl-0.89-1.68-0.11
C40M 2.68-0.22-0.29
C40C 1.18 0.15 0.33
C20M 1.14-1.02-0.35
C20C-0.44-0.82 0.79
ExOs-2.47-0.04-0.38
O40M 0.98 1.01 0.06
O40C 0.15 1.31-0.05
O20M-1.04 0.65 0.11
O20C-1.29 0.67-0.12

Grafica 3D de los cafés

# gráfica de la matriz centrada y reducida (estandrizada)
par(las=1) # etiquetas de los dos ejes sean horizontales;
X3D<-scatterplot3d(F,main="Cafés sobre los nuevos ejes",type ="h",box=FALSE); 
X3D$points3d(F,pch=1);
addgrids3d(F,grid=c("xy","xz","yz"));
text(X3D$xyz.convert(F),labels=rownames(F),cex=0.8,pos=3);
X3D$points3d (t(c(0,0,0)),pch=19,col="darkgreen",type="h");
text(X3D$xyz.convert(t(c(0,0,0))),labels="0",pos=3,col="darkgreen"
	 ,cex=0.8);
../../_images/ACP_45_0.png

Proyección de los cafés sobre el primer plano factorial#

plot(acpcafe,Tcol=FALSE,gg=TRUE)  # plot.dudi{FactoClass}
## con gg=TRUE, la función usa ggplot2 y ggrepel 
## para que las etiquetas no queden superpuestas
../../_images/ACP_47_0.png
# para que los ejes queden con la misma escala
plot(acpcafe,Tcol=FALSE,asp=1)
../../_images/ACP_48_0.png

Histograma de valores propios

barplot(acpcafe$eig)
../../_images/ACP_50_0.png

Nube de variables#

La matriz de datos \(\mathbf{Y}\) y sus transformaciones tienen una interpretación dual a la de los individuos: la nube de variables. Ahora los ejes son los individuos y las variables son los puntos. En el ejemplo café, se tienen entonces, tres puntos variable en \(\mathbf{R}^{10}\).

Y
A data.frame: 10 × 3
ColorDAEA
<int><dbl><int>
ExCl298385.125
C40M361481.341
C40C321422.640
C20M335444.333
C20C314368.732
ExOs186346.628
O40M278422.643
O40C238403.042
O20M226368.736
O20C210368.735

En el espacio de las variables los pesos están en la diagonal de \(\mathbf{I}_p\), es decir son uno para todas las variables, y la métrica (matriz que define el producto interno) es la matriz diagonal con los pesos de los individuos, es decir \(\frac{1}{n}\mathbf{I}_n\), para el caso de pesos iguales. Con esta métrica las estadísticas de resumen y las transformaciones de la matriz desde \(\mathbf{Y}\) hasta la \(\mathbf{X}\) tienen significado geométrico, lo que resumo a continuación (ver el capítulo 3 del libro Estadística descriptiva multivariada).

  • Media de una variable \(j\): $\( \bar{Y}_j = \frac{1}{n} \sum_{i=1}^{n} y_{ij} = \frac{1}{n}\mathbf{Y'}_j \mathbf{1_{_n}} = \left< \mathbf{Y}_j,\mathbf{1_{_n}} \right>_{\frac{1}{n}\mathbf{I}_n} \)$

  • Centrado de una variable $\( \mathbf{Y}_{C_j}=\mathbf{Y}_j - \overline{Y} \mathbf{1}_n \)\( donde \)\mathbf{1}_n\( es un vector de \)n\( unos (\)n \times 1$).

Significado de la media y el centrado de una variable
  • Varianza

\[ var(Y_j) = \frac{1}{n} \sum_{i=1}^n (y_{ij} - \bar{Y}_j)^2 = \left<\mathbf{Y_{C}}_j,\mathbf{Y_{C}}_j\right>_{\frac{1}{n}\mathbf{I}_n} \]
  • Covarianza

\[ cov(Y_j,Y_{k}) = \frac{1}{n} \sum_{i=1}^n (y_{ij} - \bar{Y}_j)(y_{ik} - \bar{Y}_{k}) = \left<\mathbf{Y_{C}}_j,\mathbf{Y_{C}}_{k}\right>_{\frac{1}{n}\mathbf{I}_n} \]
  • Significado del reducido

\[ \mathbf{X_j}= \dfrac{1}{\sigma_j}\mathbf{Y}_{C_j} \]

Varianza de una variable centrada y reducida:

\[ <\mathbf{X_j,X_j}>_{\frac{1}{n}\mathbf{I_n}}=\mathbf{X_j^{'}}\left(\frac{1}{n}\mathbf{I}_n\right)\mathbf{X}_j= \frac{1}{n}\mathbf{X_j^{'}X_j}=1 \]

Las variables estandarizadas se pueden ver como flechas que terminan en el cascarón hiperesféricon de radio 1 y centro origen.

  • Correlación

\[ cor(Y_j,Y_{k}) = \frac{cov(Y_j,Y_{k})}{\sigma_j \sigma_{k}}= \frac{ <\mathbf{Y_{C_j},Y_{C_k}}>_{\frac{1}{n}\mathbf{I_n}}}{\| \mathbf{Y_{C_j}} \|_{\frac{1}{n}\mathbf{I_n}} \|\mathbf{Y_{C_k}} \|_{\frac{1}{n}\mathbf{I_n}}}= <\mathbf{X_j,X_{k}}>_{\frac{1}{n}\mathbf{I_n}} \]

El espacio de las variables de un ACP normado es una representación de la matriz de correlaciones.

Si entre dos vectores variables hay un ángulo pequeño, su correlación es alta; mientras dos vectores variables ortogonales indican que las variables no están correlacionadas.

Búsqueda de los nuevos ejes

El procedimento para encontrar los nuevos ejes es el mismo que en el de los individuos.

Búsqueda de los nuevos ejes en el espacio de las variables

Solución con vectores propios \(\frac{1}{n}\mathbf{I}_n\) unitarios asociados a los \(\mu\) valores propios de la matriz: $\( \frac{1}{n}\mathbf{XX'} \)$

  • Esta matriz es \(n \times n\), pero solo tiene \(p\) valores propios mayores que 0 (se supone que \(n \geq p\))

  • Los dos espacios están relacionados.

Relaciones entre los espacios de individuos y de variables#

  • La matriz $\(\frac{1}{n}\mathbf{XX'}\)\( tiene \)p\( valores propios, que son iguales a los valores propios de \)\(\frac{1}{n}\mathbf{X'X}\)\( y los restantes \)n - p$ valores propios son 0.

  • El vector coordenadas de los \(n\) individuos sobre el eje \(s\) \(\mathbf{F}_s\), es un vector propio de $\(\frac{1}{n}\mathbf{XX'}\)$.

  • La varianza de \(\mathbf{F}_s\) es \(\lambda_s\), y por lo tanto, el vector propio \(\mathbf{v}_s\) se puede calcular mediante: $\(\mathbf{v}_s=\frac{1}{\sqrt{\lambda_s}}\mathbf{F}_s\)$.

  • \(\mathbf{G}_s\), vector de coordenadas de las \(p\) variables sobre el eje \(s\), es un vector propio de $\(\frac{1}{n}\mathbf{X'X}\)$.

  • La varianza de \(\mathbf{G}_s\) es \(\lambda_s\), y por lo tanto, se puede obtener mediante: $\(\mathbf{G}_s =\sqrt{\lambda_s}\mathbf{u}_s\)$.

  • En el ACP normado, las coordenadas de \(\mathbf{G}_s\) son las correlaciones entre las variables y el eje \(s\): \(cor(Y_j,F_s)\).

Círculo de correlaciones del ejemplo café#

s.corcircle(acpcafe$co)
# matriz de correlaciones
round(cor(Y),2)
A matrix: 3 × 3 of type dbl
ColorDAEA
Color1.000.790.19
DA0.791.000.57
EA0.190.571.00
../../_images/ACP_61_1.png

Ayudas para la interpretación#

Es importante evitar malas lecturas de los ejes y planos factoriales. En las ayudas para la interpretación se encuentran índices para evitarlo. Otras ayudas orientan la lectura de las gráficas y la toma de decisiones metodológicas. A continuación se presentan las del ejemplo café y se recomienda leer sobre ellas en el capítulo 3 del libro EDM

ayuacpcafe<-inertia(acpcafe,T,T) # inertia.dudi es una función de ade4

Valores Propios#

ayuacpcafe$tot.inertia
barplot(ayuacpcafe$tot.inertia$inertia[3:1],hor=TRUE)
abline(h=1,col="darkgreen")
A data.frame: 3 × 3
inertiacumcum(%)
<dbl><dbl><dbl>
Ax12.06703072.067031 68.90102
Ax20.82164662.888677 96.28924
Ax30.11132273.000000100.00000
../../_images/ACP_66_1.png

Coordenadas y ayudas para las variables#

names(ayuacpcafe)
  1. 'tot.inertia'
  2. 'row.contrib'
  3. 'row.abs'
  4. 'row.rel'
  5. 'row.cum'
  6. 'col.contrib'
  7. 'col.abs'
  8. 'col.rel'
  9. 'col.cum'
  10. 'nf'
  11. 'call'
attach(ayuacpcafe)
round(cbind(acpcafe$co,Ca=col.abs,Cos2=col.rel,conInercia=col.contrib),2)
detach(ayuacpcafe)
A data.frame: 3 × 10
Comp1Comp2Comp3Ca.Axis1Ca.Axis2Ca.Axis3Cos2.Axis1Cos2.Axis2Cos2.Axis3conInercia
<dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
Color0.83-0.52 0.1933.5832.6533.7769.41-26.83 3.7633.33
DA0.97-0.06-0.2545.28 0.4554.2893.59 -0.37-6.0433.33
EA0.66 0.74 0.1221.1466.9011.9643.70 54.97 1.3333.33

Coordenadas y ayudas para los cafés#

attach(ayuacpcafe)
round(cbind(acpcafe$li,Ca=row.abs,Cos2=row.rel,conInercia=row.contrib),2)
detach(ayuacpcafe)
A data.frame: 10 × 10
Axis1Axis2Axis3Ca.Axis1Ca.Axis2Ca.Axis3Cos2.Axis1Cos2.Axis2Cos2.Axis3conInercia
<dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
ExCl-0.89-1.68-0.11 3.8034.19 1.01-21.80-77.89-0.3112.02
C40M 2.68-0.22-0.2934.72 0.60 7.39 98.20 -0.67-1.1324.36
C40C 1.18 0.15 0.33 6.78 0.26 9.85 91.45 1.39 7.16 5.11
C20M 1.14-1.02-0.35 6.3112.7710.77 52.75-42.41-4.84 8.25
C20C-0.44-0.82 0.79 0.95 8.2355.37-13.20-45.4241.38 4.97
ExOs-2.47-0.04-0.3829.49 0.0212.73-97.70 -0.02-2.2720.79
O40M 0.98 1.01 0.06 4.6012.44 0.35 48.09 51.72 0.19 6.59
O40C 0.15 1.31-0.05 0.1020.98 0.22 1.21 98.65-0.14 5.82
O20M-1.04 0.65 0.11 5.24 5.07 1.02-71.67 27.58 0.75 5.03
O20C-1.29 0.67-0.12 8.00 5.43 1.29-78.22 21.10-0.68 7.05

Proyección de elementos suplementarios o ilustrativos#

Sobre los planos factoriales de las variables se pueden proyectar variables continuas que no participaron en el análisis, lo que enriquece los análisis.

En los planos factoriales de los individuos se pueden proyectar: individuos suplementarios, variables cualitativas, y los antiguos ejes unitarios para las variables activas que estén bien representadas.

Ver capítulos 3 y 4 del libro EDM.

ACP generalizado#

La generalización del ACP es que al permitir otras matrices de producto interno se puede establecer un marco común para los métodos en ejes principales, lo cual se puede consultar en el capítulo 4 del libro EDM.