Quería aclarar un comentario que dejé bajo la respuesta de @ Peter-Flom, pero probablemente valga la pena escribirlo en una respuesta. ¿En qué medida puede reducir las dimensiones ejecutando PCA en datos casi ortogonales? La respuesta es "depende" de si realiza el PCA en la matriz de correlación o covarianza .
Si está utilizando PCA en la matriz de correlación, como esto solo diferirá ligeramente de la matriz de identidad, existe una simetría esférica que hace que todas las direcciones sean "igualmente informativas". Reescalar las variaciones de sus variables a una antes de PCA es un enfoque matemáticamente equivalente que producirá el mismo resultado. Si bien la salida de PCA identificará algunos componentes con una varianza ligeramente menor que otros, esto puede atribuirse (si suponemos una correlación cero en la población) a nada más que una variación casual en la muestra, por lo que no sería una buena razón para deshacerse de estos componentes. De hecho, tal disparidad entre las desviaciones estándar de los componentes debería reducirse en magnitud a medida que aumentamos el tamaño de la muestra. Podemos confirmar esto en una simulación.
set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
x1 <- rnorm(n, mean=0, sd=sd1)
x2 <- rnorm(n, mean=0, sd=sd2)
x3 <- rnorm(n, mean=0, sd=sd3)
x4 <- rnorm(n, mean=0, sd=sd4)
prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}
Salida:
> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion 0.2882 0.5505 0.7887 1.0000
>
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion 0.2504 0.5006 0.7505 1.0000
Sin embargo, si hace PCA utilizando la matriz de covarianza en lugar de la matriz de correlación (equivalente: si no escalamos las desviaciones estándar a 1 antes de aplicar PCA), la respuesta depende de la distribución de sus variables. Si sus variables tienen la misma variación, entonces todavía tenemos simetría esférica, por lo que no existe una "dirección privilegiada" y no se puede lograr la reducción dimensional.
> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion 0.2507 0.5009 0.7508 1.0000
Sin embargo, con una mezcla de variables de varianza alta y baja, la simetría es más como un elipsoide con algunos ejes anchos y otros delgados. En esta situación, se cargarán componentes de alta varianza en las variables de alta varianza (donde el elipsoide es ancho) y componentes de baja varianza que se cargarán en las variables de baja varianza (en qué direcciones el elipsoide es estrecho).
> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion 0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.460 0.888 0.000 0.000
x2 -0.888 0.460 0.000 0.000
x3 0.000 0.000 -0.747 -0.664
x4 0.000 0.000 0.664 -0.747
Si las variables tienen variaciones muy diferentes (geométricamente un elipsoide de nuevo pero con todos los ejes diferentes), entonces la ortogonalidad permite que la primera PC se cargue mucho en la variable de mayor varianza y así sucesivamente.
> pc1234 <- princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion 0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.000 0.000 -0.001 1.000
x2 0.001 -0.001 1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000 0.003 -0.001 0.000
En los últimos dos casos hubo componentes de baja varianza que podría considerar tirar para lograr la reducción dimensional, pero hacerlo es exactamente equivalente a tirar las variables de menor varianza en primer lugar . Esencialmente, la ortogonalidad le permite identificar componentes de baja varianza con variables de baja varianza, por lo que si tiene la intención de reducir la dimensionalidad de esta manera, no está claro si se beneficiaría de usar PCA para hacerlo.
Nota bene: el tiempo dedicado a discutir el caso en el que las variables no se reescalan a la varianza unitaria, es decir, usar la matriz de covarianza en lugar de la correlación, no debe tomarse como una indicación de que este enfoque es de alguna manera más importante, y ciertamente no es que es mejor". La simetría de la situación es simplemente más sutil, por lo que requiere una discusión más larga.