Alex Zambrano
El Análisis de Componentes Principales tiene como objetivo la estructuración de un conjunto de datos multivariado mediante la reducción del número de variables. Es decir, el ACP permite construir un conjunto de nuevas varibles las cuales son combinaciones lineales de las primeras y que contienen la mayor parte de la variablidad presente en el conjunto inicial.
Algunos otros objetivos son:
El ACP tiene como proposito central determinar unos pocos factores (componentes principales) que retengan la mayor variablidad contenida en los datos. Las nuevas variables poseen alguas características estadística “deseables”, tales como independencia (bajo el supuesto de normalidad) y no correlación.
Consideremos los siguientes datos:
| \(Y_1\) | \(Y_2\) |
|---|---|
| 16 | 8 |
| 12 | 10 |
| 13 | 6 |
| 11 | 2 |
| 10 | 8 |
| 9 | -1 |
| 8 | 4 |
| 7 | 6 |
| 5 | -3 |
| 3 | -1 |
| 2 | -3 |
| 0 | 0 |
Y1 <- c(16,12,13,11,10,9,8,7,5,3,2,0)
Y2 <- c(8,10,6,2,8,-1,4,6,-3,-1,-3,0)
Y <- data.frame(Y1,Y2)
n <- nrow(Y)
S <- var(Y)*(n-1)/n # Matriz de varianzas
S## Y1 Y2
## Y1 21.16667 15.08333
## Y2 15.08333 19.33333
vt <-sum(diag(S))
vt #Varianza total## [1] 40.5
diag(S)/vt # Varianza retenida por X1 y X2## Y1 Y2
## 0.5226337 0.4773663
cor(Y) # Matriz de correlaciones## Y1 Y2
## Y1 1.0000000 0.7456203
## Y2 0.7456203 1.0000000
mu <- colMeans(Y)
library(ggplot2)
ggplot(Y,aes(Y1,Y2)) + geom_point()Al centrar los datos, ¿Cual es el porcentaje de varianza explicada por cada variable? ¿La correlación de los datos centrados cambia con respecto a la original?
Yc <- Y - rep(1,12)%*%t(mu)
Yc # Matrices centradas## Y1 Y2
## 1 8 5
## 2 4 7
## 3 5 3
## 4 3 -1
## 5 2 5
## 6 1 -4
## 7 0 1
## 8 -1 3
## 9 -3 -6
## 10 -5 -4
## 11 -6 -6
## 12 -8 -3
cov(Yc)*(n-1)/n # Matriz de covarianza## Y1 Y2
## Y1 21.16667 15.08333
## Y2 15.08333 19.33333
cor(Yc) # Matriz de correlaciones## Y1 Y2
## Y1 1.0000000 0.7456203
## Y2 0.7456203 1.0000000
ggplot(Yc,aes(Y1,Y2)) + geom_point()Al centrar los datos el origen se traslada al centro de gravedad de los datos. La representación centrada tiene la misma forma que la original, pero las coordenadas de los valores han cambiado. Las coordenadas en cada eje representan la diferencia de un individuo con respecto al centro de gravedad.
El parecido entre individuos en la tabla de datos se traslada a la representación geométrica como una distancia. La distancia euclidiana al cuadrado entre dos individuos es: \[ d^2(i,l)=\sum_{j=1}^p(y_{ij}-y_{lj})^2 \] Su resultado es igual si se calcula a partir de la matriz de datos centrados. Una distancia de cero indicaría que dos observaciones tienen los mismos valores para las variables.
# distancia entre individuos
distancias <- dist(Yc,method = "euclidean")
distancias## 1 2 3 4 5 6 7
## 2 4.472136
## 3 3.605551 4.123106
## 4 7.810250 8.062258 4.472136
## 5 6.000000 2.828427 3.605551 6.082763
## 6 11.401754 11.401754 8.062258 3.605551 9.055385
## 7 8.944272 7.211103 5.385165 3.605551 4.472136 5.099020
## 8 9.219544 6.403124 6.000000 5.656854 3.605551 7.280110 2.236068
## 9 15.556349 14.764823 12.041595 7.810250 12.083046 4.472136 7.615773
## 10 15.811388 14.212670 12.206556 8.544004 11.401754 6.000000 7.071068
## 11 17.804494 16.401219 14.212670 10.295630 13.601471 7.280110 9.219544
## 12 17.888544 15.620499 14.317821 11.180340 12.806248 9.055385 8.944272
## 8 9 10 11
## 2
## 3
## 4
## 5
## 6
## 7
## 8
## 9 9.219544
## 10 8.062258 2.828427
## 11 10.295630 3.000000 2.236068
## 12 9.219544 5.830952 3.162278 3.605551
distancias.res <- data.frame(as.table(as.matrix(distancias)))
names(distancias.res) <- c("ind1","ind2","dist")
distancias.res## ind1 ind2 dist
## 1 1 1 0.000000
## 2 2 1 4.472136
## 3 3 1 3.605551
## 4 4 1 7.810250
## 5 5 1 6.000000
## 6 6 1 11.401754
## 7 7 1 8.944272
## 8 8 1 9.219544
## 9 9 1 15.556349
## 10 10 1 15.811388
## 11 11 1 17.804494
## 12 12 1 17.888544
## 13 1 2 4.472136
## 14 2 2 0.000000
## 15 3 2 4.123106
## 16 4 2 8.062258
## 17 5 2 2.828427
## 18 6 2 11.401754
## 19 7 2 7.211103
## 20 8 2 6.403124
## 21 9 2 14.764823
## 22 10 2 14.212670
## 23 11 2 16.401219
## 24 12 2 15.620499
## 25 1 3 3.605551
## 26 2 3 4.123106
## 27 3 3 0.000000
## 28 4 3 4.472136
## 29 5 3 3.605551
## 30 6 3 8.062258
## 31 7 3 5.385165
## 32 8 3 6.000000
## 33 9 3 12.041595
## 34 10 3 12.206556
## 35 11 3 14.212670
## 36 12 3 14.317821
## 37 1 4 7.810250
## 38 2 4 8.062258
## 39 3 4 4.472136
## 40 4 4 0.000000
## 41 5 4 6.082763
## 42 6 4 3.605551
## 43 7 4 3.605551
## 44 8 4 5.656854
## 45 9 4 7.810250
## 46 10 4 8.544004
## 47 11 4 10.295630
## 48 12 4 11.180340
## 49 1 5 6.000000
## 50 2 5 2.828427
## 51 3 5 3.605551
## 52 4 5 6.082763
## 53 5 5 0.000000
## 54 6 5 9.055385
## 55 7 5 4.472136
## 56 8 5 3.605551
## 57 9 5 12.083046
## 58 10 5 11.401754
## 59 11 5 13.601471
## 60 12 5 12.806248
## 61 1 6 11.401754
## 62 2 6 11.401754
## 63 3 6 8.062258
## 64 4 6 3.605551
## 65 5 6 9.055385
## 66 6 6 0.000000
## 67 7 6 5.099020
## 68 8 6 7.280110
## 69 9 6 4.472136
## 70 10 6 6.000000
## 71 11 6 7.280110
## 72 12 6 9.055385
## 73 1 7 8.944272
## 74 2 7 7.211103
## 75 3 7 5.385165
## 76 4 7 3.605551
## 77 5 7 4.472136
## 78 6 7 5.099020
## 79 7 7 0.000000
## 80 8 7 2.236068
## 81 9 7 7.615773
## 82 10 7 7.071068
## 83 11 7 9.219544
## 84 12 7 8.944272
## 85 1 8 9.219544
## 86 2 8 6.403124
## 87 3 8 6.000000
## 88 4 8 5.656854
## 89 5 8 3.605551
## 90 6 8 7.280110
## 91 7 8 2.236068
## 92 8 8 0.000000
## 93 9 8 9.219544
## 94 10 8 8.062258
## 95 11 8 10.295630
## 96 12 8 9.219544
## 97 1 9 15.556349
## 98 2 9 14.764823
## 99 3 9 12.041595
## 100 4 9 7.810250
## 101 5 9 12.083046
## 102 6 9 4.472136
## 103 7 9 7.615773
## 104 8 9 9.219544
## 105 9 9 0.000000
## 106 10 9 2.828427
## 107 11 9 3.000000
## 108 12 9 5.830952
## 109 1 10 15.811388
## 110 2 10 14.212670
## 111 3 10 12.206556
## 112 4 10 8.544004
## 113 5 10 11.401754
## 114 6 10 6.000000
## 115 7 10 7.071068
## 116 8 10 8.062258
## 117 9 10 2.828427
## 118 10 10 0.000000
## 119 11 10 2.236068
## 120 12 10 3.162278
## 121 1 11 17.804494
## 122 2 11 16.401219
## 123 3 11 14.212670
## 124 4 11 10.295630
## 125 5 11 13.601471
## 126 6 11 7.280110
## 127 7 11 9.219544
## 128 8 11 10.295630
## 129 9 11 3.000000
## 130 10 11 2.236068
## 131 11 11 0.000000
## 132 12 11 3.605551
## 133 1 12 17.888544
## 134 2 12 15.620499
## 135 3 12 14.317821
## 136 4 12 11.180340
## 137 5 12 12.806248
## 138 6 12 9.055385
## 139 7 12 8.944272
## 140 8 12 9.219544
## 141 9 12 5.830952
## 142 10 12 3.162278
## 143 11 12 3.605551
## 144 12 12 0.000000
La noción física de momento de inercia alrededor de un punto se utiliza como medida de dispersión de la nube de puntos alrededor de su centro de gravedad y se denomina inercia. Si cada individuo \(i\) se dota del peso \(p_i\), la inercia de la nube es: \[ \text{Inercia}=\sum_{i=1}^np_id^2(i,\mu) \] En el caso de pesos iguales para todos los individuos \(p_i = 1/n\) y dado que su centro de gravedad se ha trasladado al origen, entonces: \[ \text{Inercia}=\sum_{i=1}^n\frac{1}{n}\sum_{j=1}^p(x_{ij}-\mu_{j})^2=\sum_{j=1}^p\frac{1}{n}\sum_{i=1}^n(x_{ij}-\mu_{j})^2=\sum_{j=1}^p\sigma_j^2 \] La información que queda en la nube de puntos es su forma, que está dada por las relaciones de distancias entre los puntos. La inercia no es más que la suma de las varianzas de las variables (es decir, la traza de la matriz de covarianzas), las cuales influyen en el análisis en proporción a su varianza. Las varianzas dependen de las unidades de medida de las variables, por lo tanto al cambiar la escala cambia su varianza. La influencia de esas unidades de medida se elimina con la operación de reducido que es dividir cada columna de la matriz de datos centrados por la desviación estándar de la variable correspondiente.
La matriz de varianzas y covarianzas \(V\) asociada a la tabla \(X\) es: \(V =\frac{1}{n}Y_c'Y_c\). En la diagonal de \(V\) se tienen las varianzas, de modo que la suma de varianzas es igual a \(\text{traza}(V)\).
La matriz normalizada \(Z\) (matriz de datos \(X\) centrada y reducida) tiene término general: \[ x_{ij}=\frac{y_{ij}-\mu_j}{\sigma_j} \] donde \(\mu_j\) y \(\sigma_j\), son la media y la desviación estándar de la variable \(j\). En términos matriciales \(X\) se obtiene mediante: \[ X=Y_cD^{-1}_{\sigma} \] donde \(D_{\sigma}=\text{diag}(\sigma_j)\).
Yc <-as.matrix(Yc)
V <- t(Yc)%*%Yc/n
V # = var(Y)*(n-1)/n## Y1 Y2
## Y1 21.16667 15.08333
## Y2 15.08333 19.33333
Dsigma <- diag(sqrt(diag(V)))
X <- Yc%*%solve(Dsigma)
X## [,1] [,2]
## [1,] 1.7388565 1.1371471
## [2,] 0.8694283 1.5920059
## [3,] 1.0867853 0.6822882
## [4,] 0.6520712 -0.2274294
## [5,] 0.4347141 1.1371471
## [6,] 0.2173571 -0.9097177
## [7,] 0.0000000 0.2274294
## [8,] -0.2173571 0.6822882
## [9,] -0.6520712 -1.3645765
## [10,] -1.0867853 -0.9097177
## [11,] -1.3041424 -1.3645765
## [12,] -1.7388565 -0.6822882
La inercia de la nube de puntos, cuando los datos se han estandarizado, es igual al número de variables, ya que cada una de ellas contribuye con 1 a la inercia total. En el ejemplo la inercia es 2. Esto implica que la inercia, en el ACP normado, deja de tener significado estadístico, porque no depende de los valores de la tabla que se está analizando, sino del número de variables que contenga.
colMeans(X)## [1] -9.251859e-18 9.251859e-18
var(X)*(n-1)/n## [,1] [,2]
## [1,] 1.0000000 0.7456203
## [2,] 0.7456203 1.0000000
El objetivo geométrico de los métodos en ejes principales es buscar un nuevo sistema de ejes de tal manera que la mayoría de la inercia se concentre en los primeros ejes. Es decir se trata de descomponer la inercia de la nube de puntos en ejes ortogonales ordenados, de tal manera que en el primer eje esté la mayor inercia posible, en el segundo la mayor inercia residual posible, etc.
Se busca primero el eje de máxima inercia proyectada. Si se denota \(u\) al vector unitario que da dirección del eje, la coordenada de un vector individuo \(x_i\) sobre el eje es el producto punto: \[ <x_i,u>= x_i'u \] y la contribución a la inercia del individuo \(i\) sobre el eje \(u\) es \(\frac{1}{n}(x_i'u)^2\). La inercia total de la nube de individuos, proyectada sobre el eje u es entonces: \[ \sum_{i=1}^n\frac{1}{n}(x_i'u)^2 = \frac{1}{n}\left(Xu\right)'\left(Xu\right)=u'\frac{1}{n}X'Xu \] Encontrar el eje de mayor inercia proyectada equivale a encontrar la dirección \(u\) que maximice la ecuación anterior sujeto a la restricción \(u'u = 1\). Una manera de resolver este problema es introduciendo un multiplicadores de Lagrange \(\lambda\), entonces se debe maximizar: \[ f(u) = u'\frac{1}{n}X'Xu - \lambda(u'u - 1) \] los puntos críticos, en este caso, los puntos máximos de la función, son la solución de: \[ f'(u) = 2\frac{1}{n}X'Xu - 2\lambda u = 0 \] es decir \[ \frac{1}{n}X'Xu = \lambda u \] Las soluciones de son los vectores propios asociados de los valores propios de \(\frac{1}{n}X'X\). ¿Cuál de los p valores propios escoger?. Premultiplicando por \(u'\) se obtiene de nuevo la cantidad que se quiere maximizar: \[ u'\frac{1}{n}X'Xu = \lambda u'u = \lambda \] y entonces las soluciones son los valores y vectores propios asociados a la matriz \(\frac{1}{n}X'X\).
V <- t(X) %*%X/n;
V # calculo de matriz correlaciones## [,1] [,2]
## [1,] 1.0000000 0.7456203
## [2,] 0.7456203 1.0000000
des <- eigen(V);
des # calculo de valores y vectores propios## eigen() decomposition
## $values
## [1] 1.7456203 0.2543797
##
## $vectors
## [,1] [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068 0.7071068
lambda <-des$values
lambda## [1] 1.7456203 0.2543797
U <- des$vectors #matriz con vectores propios en columnas
U## [,1] [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068 0.7071068
Las coordenadas de los individuos sobre el eje generado por \(u_1\), denominado primer eje principal, se denotan por \(F_1\) y son: \[ F_1 = Xu_1 \]
F <- X %*%U
F## [,1] [,2]
## [1,] 2.0336416 -0.42547285
## [2,] 1.7404968 0.51093954
## [3,] 1.2509239 -0.28602264
## [4,] 0.3002671 -0.62190085
## [5,] 1.1114737 0.49669509
## [6,] -0.4895729 -0.79696218
## [7,] 0.1608169 0.16081688
## [8,] 0.3287560 0.63614530
## [9,] -1.4259852 -0.50381731
## [10,] -1.4117408 0.12520576
## [11,] -1.8870692 -0.04273335
## [12,] -1.7120079 0.74710661
ggplot(data.frame(F),aes(X1,X2))+geom_point()Un plano factorial es una aproximación de la nube de puntos y como tal tendrá puntos bien representados, pero podrá contener puntos con mala calidad de proyección. La calidad de la proyección o representación sobre un eje se mide con el coseno cuadrado que se define, para un punto, como el cuadrado de la relación entre la norma de la proyección sobre la norma en el espacio completo. El coseno cuadrado de la proyección de un punto sobre un plano es la suma de los cosenos cuadrados del punto sobre los ejes que conforman el plano.
La suma de los cosenos cuadrados de las proyecciones de un punto sobre todos los ejes factoriales es 1. \[ \cos^2(i)=\frac{F_s^2(i)}{d^2(i,\mu)};\qquad \sum_s \cos^2(i)=1 \]
Para conocer los individuos que más influyen sobre la dirección de un eje factorial se utiliza el cociente de la contribución a la inercia del individuo sobre la inercia total del eje (valor propio) y se denomina contribución absoluta \(Ca_s(i)\). La suma de las contribuciones de todos los individuos es 1. \[ Ca_s=\frac{p_iF_s^2(i)}{\lambda_s};\qquad \sum_i Ca_s(i)=1 \]
La nube de variables está constituida por \(p\) puntos en \(\mathbb{R}^n\), las coordenadas de cada punto son las columnas de la matriz \(Y\). Las estadísticas de resumen: medias, varianzas, covarianzas, correlaciones tienen significado geométrico en el espacio de las variables. Las transformaciones de la matriz \(Y\) presentadas en el espacio de los individuos: operaciones de centrado y reducido, tienen otro significado en este espacio.
En esté espacio los vectores que representan las varaibles centradas y reducidas tienen las siguientes propiedades:
\[ ||\text{variable}_ k||^2=\sum_{i=1}^n \frac{x_{ik}^2}{n} \]
\[ \text{cor}(X_j,X_k)=\frac{\text{cov}(X_j,X_k)}{\sigma_j\sigma_k} \]
Para mayor información http://experienceinstatistics.blogspot.com.co/2010/06/relacion-entre-la-ley-de-cosenos-y_20.html[ver aquí]
Un plano factorial de las variables estandarizadas se denomina círculo de correlaciones, ya que es la proyección de la hiperesfera de correlaciones, flechas que parten del origen y tienen longitud 1.
library(FactoMineR)
res.pca <- PCA(Y)res.pca$eig## eigenvalue percentage of variance cumulative percentage of variance
## comp 1 1.7456203 87.28102 87.28102
## comp 2 0.2543797 12.71898 100.00000
barplot(res.pca$eig[,1],main="Eigenvalues",names.arg=1:nrow(res.pca$eig))summary(res.pca)##
## Call:
## PCA(X = Y)
##
##
## Eigenvalues
## Dim.1 Dim.2
## Variance 1.746 0.254
## % of var. 87.281 12.719
## Cumulative % of var. 87.281 100.000
##
## Individuals (the 10 first)
## Dist Dim.1 ctr cos2 Dim.2 ctr cos2
## 1 | 2.078 | 2.034 19.743 0.958 | 0.425 5.930 0.042 |
## 2 | 1.814 | 1.740 14.462 0.921 | -0.511 8.552 0.079 |
## 3 | 1.283 | 1.251 7.470 0.950 | 0.286 2.680 0.050 |
## 4 | 0.691 | 0.300 0.430 0.189 | 0.622 12.670 0.811 |
## 5 | 1.217 | 1.111 5.897 0.834 | -0.497 8.082 0.166 |
## 6 | 0.935 | -0.490 1.144 0.274 | 0.797 20.807 0.726 |
## 7 | 0.227 | 0.161 0.123 0.500 | -0.161 0.847 0.500 |
## 8 | 0.716 | 0.329 0.516 0.211 | -0.636 13.257 0.789 |
## 9 | 1.512 | -1.426 9.707 0.889 | 0.504 8.315 0.111 |
## 10 | 1.417 | -1.412 9.514 0.992 | -0.125 0.514 0.008 |
##
## Variables
## Dim.1 ctr cos2 Dim.2 ctr cos2
## Y1 | 0.934 50.000 0.873 | 0.357 50.000 0.127 |
## Y2 | 0.934 50.000 0.873 | -0.357 50.000 0.127 |
Esquema general del ACP
Los datos en bruto. Filas (individuos) y columnas (variables) no juegan papeles simétricos: medias y varianzas no tienen sentido en general más que para las columnas.
Los datos centrados y reducidos. Ya se dirija el interés hacia los individuos o hacia las varaibles, la tabla se transforma de la misma manera. Se centra por motivos fundamentales técnicos. La reducción permite evitar la arbitrariedad de las unidades de medida.
Cuando se estudian los individuos, se considera la tabla como yustaposición1 de filas. En el estudio de variables la tabla se considera como una yuxtaposición de columnas. Es la misma tabla, que consideramos de dos maneras.
Ibdem.
Un individuo es un punto en \(\mathbb{R}^p\). Nos interesa las distancias entre unos y otros individuos que se interpretan como semejanza. El centrado ha hecho coincidir el origen de los ejes y el centro de gravedad. En la mayoría de las ocaciones se asigna a cada individuo el mismo peso: \(1/N\).
Una variable es un punto en \(\mathbb{R}^N\). Nos interesa principalmente en los ángulos que forma las variables entre sí. El coseno del ángulo que forman dos variables se interpreta como coeficiente de correlación entre ambas. La reducción hace que todas las variables equidisten2 del origen y consigientemente aparezcan situadas sobre una hiperesfera de radio 1.
El análisis Factorial (AF) de una nube consiste en poner en evidencia una sucesión de direcciones tales que la inercia, con respecto al origen, de la proyección de la nube sobre esas direcciónes sea máxima. En \(\mathbb{R}^p\), donde el origen coincide con el el centro de gravedad, los ejes factoriales son las direcciónes de máximo alargamiento. En \(\mathbb{R}^N\), donde la proyección de una variable sobre otra se interpreta como su mutuo coeficiente de correlación, los ejes factoriales son las varaibles sinténticas más relacionadas con el conjunto de variables iniciales.
Ibdem.
El plano factorial que cruza dos factores de individuos. La distancia entre dos puntos se interpreta como el concepto de similaridad.
El plano factorial que cruza dos factores de variables. Las coordenadas de una viariable se interpretan como su coeficiente de correlación con los factores de individuos.
Las relaciones de transición expresan los resultados de un AF (por ejemplo en \(\mathbb{R}^N\)) en relación con los resultados del dual (por ejemplo en \(\mathbb{R}^p\)).
Como consecuencia de las relaciones de transición, las iterpretaciones de los ejes factoriales han de efectuarse conjuntamente. Resulta habitualmente cómoda la superposición de ambas representaciones.
Las propiedades que se presentan a continuación son fáciles de demostrar. Las demostraciones se pueden ver en el texto de Lebart et al. (2006).
La matriz \(\frac{1}{n}XX'\) tiene \(p\) valores propios que son iguales a los valores propios de \(\frac{1}{n}X'X\) y los restantes \(n-p\) valores propios son cero.
\(F_s\), vector de coordenadas de los \(n\) individuos sobre el eje \(s\), es un vector propio de \(\frac{1}{n}XX'\).
La varianza de \(F_s\) es \(\lambda_s\), y por lo tanto, el vector propio \(V_s\) se puede calcular mediante: \(V_s=\frac{1}{\sqrt{\lambda_s}}F_s\).
\(G_s\), vector de coordenadas de las \(p\) variables sobre el eje \(s\), es un vector propio de \(\frac{1}{n}X'X\).
La varianza de \(G_s\) es \(\lambda_s\), y por lo tanto, se puede obtener mediante: \(G_s= \sqrt{\lambda_s}U_s\).
En el ACP normado, las coordenadas de \(G_s\) son las correlaciones entre las variables y el eje \(s\): \(\text{cor}(Y_j,F_s)\).