La diferencia entre PCA y regresión puede interpretarse como matemáticamente sólo una multiplicación adicional con una matriz inversa...
He aquí una matriz de correlaciones con tres grupos de variables:
group g1: $x_{1,1},x_{1,2}$ correlated
group g2: $x_{2,1},x_{2,2},x_{2,3}$ correlated
group g3: $y$ composed by the variables of group g1 and g2
La matriz de correlaciones tiene el siguiente aspecto
cor x1_1 x1_2 x2_1 x2_2 x2_3 ___y
-----------------------------------------------------------
x1_1 1.000 0.976 0.472 0.444 0.430 0.642
x1_2 0.976 1.000 0.594 0.567 0.538 0.767
x2_1 0.472 0.594 1.000 0.998 0.979 0.919
x2_2 0.444 0.567 0.998 1.000 0.986 0.917
x2_3 0.430 0.538 0.979 0.986 1.000 0.904
___y 0.642 0.767 0.919 0.917 0.904 1.000
-----------------------------------------------------------
Se trata de la matriz de cargas en su forma triangular cholesky inicial cuando aún no se ha girado a la posición PC:
tri f1 f2 f3 f4 f5 f6
-----------------------------------------------------------
x1_1 1.000 0.000 0.000 0.000 0.000 0.000
x1_2 0.976 0.218 0.000 0.000 0.000 0.000
x2_1 0.472 0.612 0.634 0.000 0.000 0.000
x2_2 0.444 0.615 0.649 0.054 0.000 0.000
x2_3 0.430 0.543 0.700 0.119 0.128 0.000
___y 0.642 0.644 0.350 0.156 0.112 0.117
-----------------------------------------------------------
En el ACP no distinguimos entre variables independientes y dependientes, por lo que podríamos hacer una rotación a posición ACP, donde entonces el primer eje/columna denota el primer componente principal y así sucesivamente.
[22] pca = rot(dr,"pca")
pca f1 f2 f3 f4 f5 f6
-----------------------------------------------------------
x1_1 0.714 -0.692 0.100 0.041 -0.020 0.005
x1_2 0.810 -0.584 -0.031 -0.047 0.025 -0.007
x2_1 0.948 0.300 0.063 -0.081 0.003 0.018
x2_2 0.940 0.333 0.050 -0.049 -0.015 -0.019
x2_3 0.926 0.351 0.072 0.114 0.016 -0.001
___y 0.973 0.045 -0.226 0.027 -0.010 0.004
-----------------------------------------------------------
Vemos que todas las variables tienen un factor común, pero también podemos ver que sólo dos o tres factores son "relevantes". Una rotación quartimax podría localizar los tres factores principales mejor relacionados con los grupos de variables
[26] qua = rot(pca,"quartimax",1..6,1..3)
qua.max f1 f2 f3 f4 f5 f6
-----------------------------------+------------------------
x1_1 0.373 0.925 -0.060 0.041 -0.020 0.005
x1_2 0.505 0.859 0.068 -0.047 0.025 -0.007
--------
x2_1 0.988 0.112 -0.059 -0.081 0.003 0.018
x2_2 0.994 0.078 -0.048 -0.049 -0.015 -0.019
x2_3 0.989 0.056 -0.071 0.114 0.016 -0.001
--------
___y 0.908 0.342 0.240 0.027 -0.010 0.004
-----------------------------------+------------------------
Vemos que tenemos dos grupos principales con altas correlaciones dentro del grupo, es decir, que miden casi lo mismo, en las variables x y un "grupo" separado menos nítidamente con sólo la variable y que está correlacionada con ambos grupos pero sigue teniendo una varianza individual (en el factor f3).
Se trata de un PCA clásico con rotación Quartimax/Varimax, el procedimiento "little jiffy".
Ahora pasamos a la regresión. En la regresión definimos una variable como dependiente, en nuestro caso la variable y. Estamos interesados en la forma en que y está compuesta por las variables independientes; un punto de vista aún pca-inherente sería que encontramos el pca de las variables independientes solamente y leve el factor f6, que muestra una parte de y-varianza que no está correlacionada , solo como se toma del factor cholesky triangular inicial.
[29] pca = rot(dr,"pca",1..5)
pca.reg f1 f2 f3 f4 f5 f6
---------------------------------------------------+--------
x1_1 0.729 -0.680 0.067 -0.048 -0.002 0.000
x1_2 0.816 -0.571 -0.067 0.055 0.001 0.000
-------------------
x2_1 0.946 0.315 -0.066 -0.033 0.019 0.000
x2_2 0.936 0.348 -0.041 -0.013 -0.023 0.000
x2_3 0.923 0.366 0.117 0.036 0.004 0.000
---------------------------------------------------+--------
___y 0.957 0.057 -0.076 0.245 -0.039 0.117
---------------------------------------------------+--------
Aún así, los ejes muestran los "factores" y cómo cada variable está compuesta por esos factores comunes (f1 a f5) o individuales (f6).
La regresión pide ahora la composición de y no por los factores/coordenadas en los ejes sino por las coordenadas en las variables x si se toman como ejes.
Afortunadamente, sólo tenemos que multiplicar la matriz de cargas actual por la inversa de la submatriz x para obtener los ejes definidos por la x y tener las "cargas" de y en x:
[32] B = (pca[*,1..5]*inv(pca[1..5,1..5]) ) || pca[*,6]
reg.B x1_1 x1_2 x2_1 x2_2 x2_3 ___y
---------------------------------------------------+--------
x1_1 1.000 0.000 0.000 0.000 0.000 0.000
x1_2 0.000 1.000 0.000 0.000 0.000 0.000
-------------------
x2_1 0.000 0.000 1.000 0.000 0.000 0.000
x2_2 0.000 0.000 0.000 1.000 0.000 0.000
x2_3 0.000 0.000 0.000 0.000 1.000 0.000
---------------------------------------------------+--------
___y -1.442 1.989 -1.394 0.955 0.876 0.117
Vemos, que cada uno de los ejes se identifica con una de las variables y también las "cargas" de y en ese eje. Pero como los ejes muestran ahora las direcciones de las x, las cargas de y en la última fila son ahora también los coeficientes/pesos de "regresión", y los pesos de regresión son ahora
B = [-1.442 1.989 -1.394 0.955 0.876 ]
(Debido a las fuertes correlaciones en los grupos, las ponderaciones de la regresión son superiores a 1 y también se alternan los signos. Pero esto no tiene mucha importancia en esta explicación metódica)
[Actualización]
Relacionando PCA y regresión de este modo, se produce con gran fluidez otro ejemplo instructivo que podría mejorar la intuición. Se trata del problema de la multicolinealidad, que si se da en regresión es un problema para el investigador, pero si se produce en PCA sólo mejora la validez de estimación de componentes separados y las cargas de los ítems en dichos constructos (latentes).
La media, que quiero introducir aquí, es la "dirección principal" de los ítems multicolineales (que por supuesto es el primer componente principal) respectivamente los dos conjuntos de ítems independientes $x1$ y $x2$ . Podemos introducir variables latentes que marquen los pc de los dos conjuntos de elementos x. Esto se puede hacer prácticamente aplicando pc-rotación con criterio maximizador tomado sólo de los conjuntos:
[32] pc1 = rot(tri,"pca",1..2,1..5) //rotating for pc of items 1..2 only
[33] pc1 = {pc1,marksp(pc1,{1,2})} //add markers for that pc's
PC1 pc1_1 pc1_2 c3 c4 c5 c6
--------------------------------------------------------------
x1_1 0.994 -0.109 0 0 0 0
x1_2 0.994 0.109 0 0 0 0
--------------------------------------------------------------
x2_1 0.562 0.571 0.599 0 0 0
x2_2 0.536 0.578 0.613 0.054 0 0
x2_3 0.521 0.516 0.657 0.123 0.125 0
--------------------------------------------------------------
y 0.722 0.575 0.316 0.151 0.11 0.116
===============================================================
pc1_1 1 0 0 0 0 0
pc1_2 0 1 0 0 0 0
===============================================================
Si estuviéramos mirando el sistema de $x1_1,x1_2$ y $y$ sólo que ya habíamos los valores beta para los pc's de ese $x1$ -elemento fijado como $b_{pc1_1}=0.722$ y $b_{pc1_2}=0.575$ - sin problemas debido a la (multi)colinealidad.
Lo mismo puede hacerse con el segundo conjunto de elementos independientes $x2_1,x2_2,x2_3$ :
[37] pc2 = rot(pc1,"pca",3..5,1..5)
[38] pc2 = {pc2,marksp(pc2,{1,2,3})}
PC2 pc2_1 pc2_2 pc2_3 c4 c5 c6
--------------------------------------------------------------
x1_1 0.477 -0.124 -0.464 0.729 0.101 0
x1_2 0.599 -0.189 -0.389 0.636 0.221 0
--------------------------------------------------------------
x2_1 0.997 -0.078 -0.022 0 0 0
x2_2 0.999 -0.041 0.027 0 0 0
x2_3 0.993 0.119 -0.005 0 0 0
--------------------------------------------------------------
y 0.923 -0.029 -0.058 0.212 0.294 0.116
===============================================================
pc1_1 0.542 -0.157 -0.429 0.687 0.162 0
pc1_2 0.557 -0.300 0.343 -0.424 0.55 0
--------------------------------------------------------------
pc2_1 1 0 0 0 0 0
pc2_2 0 1 0 0 0 0
pc2_3 0 0 1 0 0 0
===============================================================
El valor beta para el primer PC del segundo conjunto de elementos (en un modelo sin el primer conjunto) fue el siguiente $b_{pc2_1}=0.923$ que es más que eso $b_{pc1_1}=0.722$ para el primer pc del primer conjunto de elementos independientes.
Ahora para ver las betas utilizando el modelo conjunto requiere de nuevo sólo la inversión de la submatriz de las cargas de todo el conjunto de 5 pc-marcadores y postmultiplicando las 5 primeras columnas con eso. Esto nos da las "cargas", si los 5 pcs se toman como ejes de un sistema de coordenadas. Obtenemos
[42] beta = pca1[*,1..5]* inv(pca1[7..11,1..5]) || pca1[*,6]
beta pc1_1 pc1_2 pc2_1 pc2_2 pc2_3 c6
--------------------------------------------------------------
x1_1 0.994 -0.109 0 0 0 0
x1_2 0.994 0.109 0 0 0 0
--------------------------------------------------------------
x2_1 0 0 0.997 -0.078 -0.022 0
x2_2 0 0 0.999 -0.041 0.027 0
x2_3 0 0 0.993 0.119 -0.005 0
--------------------------------------------------------------
y 0.540 0.375 0.421 0.169 0.045 0.116
===============================================================
pc1_1 1 0 0 0 0 0
pc1_2 0 1 0 0 0 0
--------------------------------------------------------------
pc2_1 0 0 1 0 0 0
pc2_2 0 0 0 1 0 0
pc2_3 0 0 0 0 1 0
===============================================================
Resumiendo:
beta pc1_1 pc1_2 | pc2_1 pc2_2 pc2_3 | c6
---------------------------+-------------------------------+--------
y 0.540 0.375 | 0.421 0.169 0.045 | 0.116
===========================+===============================|========
En ese conjunta la "dirección principal" del primer conjunto de independientes tiene una ponderación beta de 0,540 y la "dirección principal" del segundo conjunto de 0,421 . El valor en $c6$ está aquí sólo para completar: su cuadrado $0.116^2$ es la varianza no explicada del elemento dependiente $y$ .