53 votos

¿Tiene algún significado el signo de las puntuaciones o de las cargas en PCA o FA? ¿Puedo invertir el signo?

Realicé el análisis de componentes principales (PCA) con R utilizando dos funciones diferentes ( prcomp y princomp ) y observamos que las puntuaciones del PCA difieren en el signo. ¿Cómo puede ser?

Considera esto:

set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x

            PC1        PC2
 [1,] -4.508620 -0.2567655
 [2,] -3.373772 -1.1369417
 [3,] -2.679669  1.0903445
 [4,] -1.615837  0.7108631
 [5,] -0.548879  0.3093389
 [6,]  0.481756  0.1639112
 [7,]  1.656178 -0.9952875
 [8,]  2.560345 -0.2490548
 [9,]  3.508442  0.1874520
[10,]  4.520055  0.1761397

set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
         Comp.1     Comp.2
 [1,]  4.508620  0.2567655
 [2,]  3.373772  1.1369417
 [3,]  2.679669 -1.0903445
 [4,]  1.615837 -0.7108631
 [5,]  0.548879 -0.3093389
 [6,] -0.481756 -0.1639112
 [7,] -1.656178  0.9952875
 [8,] -2.560345  0.2490548
 [9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397

¿Por qué los signos ( +/- ) difieren para los dos análisis? Si entonces utilizara componentes principales PC1 y PC2 como predictores en una regresión, es decir lm(y ~ PC1 + PC2) Esto cambiaría completamente mi comprensión del efecto de las dos variables en y dependiendo del método que haya utilizado. ¿Cómo podría entonces decir que PC1 tiene, por ejemplo, un efecto positivo en y y PC2 tiene, por ejemplo, un efecto negativo sobre y ?


Además: Si el signo de los componentes del ACP no tiene sentido, ¿es también cierto para el análisis factorial (AF)? ¿Es aceptable invertir el signo de las puntuaciones individuales de los componentes del ACP y del AF (o de las cargas, como columna de la matriz de carga)?

13 votos

+1. Esta pregunta se hace un montón en este foro, en diferentes variaciones (a veces sobre PCA, a veces sobre el análisis factorial). Este es el hilo más popular que cubre el tema (gracias a la excelente respuesta de @January), por lo que sería conveniente marcar otras preguntas existentes y futuras como duplicados de esta. Me he tomado la libertad de hacer tu pregunta ligeramente más general cambiando el título y mencionando el análisis factorial al final. Espero que no le moleste. También he proporcionado una respuesta adicional.

1 votos

El signo es arbitrario; el significado sustantivo depende lógicamente del signo. Siempre se puede cambiar el signo de cualquier factor etiquetado como "X" por el signo opuesto, y etiquetarlo entonces como "opuesto a X". Esto es cierto para las cargas, para las puntuaciones. Algunas implementaciones, por conveniencia, cambian el signo de un factor para que los valores positivos (en puntuaciones o cargas) en él dominen, en la suma. Otras implementaciones no hacen nada y dejan la decisión de invertir el signo en usted - si le interesa. El significado estadístico (como la fuerza del efecto) no cambia aparte de que se invierta su "dirección".

51voto

Gmaster Puntos 21

El ACP es una simple transformación matemática. Si se cambian los signos de los componentes, no se cambia la varianza contenida en el primer componente. Además, al cambiar los signos, los pesos ( prcomp( ... )$rotation ) también cambian el signo, por lo que la interpretación sigue siendo exactamente la misma:

set.seed( 999 )
a <- data.frame(1:10,rnorm(10))
pca1 <- prcomp( a )
pca2 <- princomp( a )
pca1$rotation

muestra

                 PC1       PC2
X1.10      0.9900908 0.1404287
rnorm.10. -0.1404287 0.9900908

y pca2$loadings mostrar

Loadings:
          Comp.1 Comp.2
X1.10     -0.99  -0.14 
rnorm.10.  0.14  -0.99 

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0

Entonces, ¿por qué la interpretación sigue siendo la misma?

Se hace la regresión PCA de y en el componente 1. En la primera versión ( prcomp ), digamos que el coeficiente es positivo: cuanto mayor sea el componente 1, mayor será la y. ¿Qué significa cuando se trata de las variables originales? Dado que el peso de la variable 1 ( 1:10 en a) es positivo, lo que demuestra que cuanto mayor sea la variable 1, mayor será la y.

Ahora utilice la segunda versión ( princomp ). Como el componente tiene el signo cambiado, cuanto mayor sea y, menor será el componente 1 -- el coeficiente de y< sobre PC1 es ahora negativo. Pero también lo es la carga de la variable 1; es decir, cuanto mayor sea la variable 1, menor será el componente 1, mayor será y -- la interpretación es la misma.

Posiblemente, la forma más fácil de verlo es utilizar un biplot.

library( pca3d )
pca2d( pca1, biplot= TRUE, shape= 19, col= "black"  )

muestra

enter image description here

El mismo biplot para la segunda variante muestra

pca2d( pca2$scores, biplot= pca2$loadings[,], shape= 19, col= "black" )

Como ves, las imágenes están giradas 180º. Sin embargo, la relación entre los pesos/cargas (las flechas rojas) y los puntos de datos (los puntos negros) es exactamente la misma; por lo tanto, la interpretación de los componentes no cambia.

enter image description here

0 votos

Incluso he añadido fotos ahora :-)

2 votos

Esto es cierto, pero ¿qué pasa con las proyecciones en PCA? Yo mismo estoy codificando el PCA, y algunos de mis vectores propios están invertidos en comparación con los incorporados en MATLAB princomp . Por lo tanto, durante la proyección, mis datos proyectados también tienen el signo invertido en algunas de las dimensiones. Mi objetivo es hacer una clasificación de los coeficientes. ¿El signo sigue sin importar aquí?

0 votos

Entonces, si simplemente para facilitar la comprensión de mis PC, quisiera intercambiar los signos de las puntuaciones, ¿es válido?

22voto

zowens Puntos 1417

Esta pregunta se hace un montón en este foro, así que me gustaría complementar la excelente respuesta de @January con unas consideraciones un poco más generales.

Tanto en el análisis de componentes principales (ACP) como en el análisis factorial (AF), utilizamos las variables originales $x_1, x_2, ... x_d$ para estimar varios componentes latentes (o variables latentes) $z_1, z_2, ... z_k$ . Estos componentes latentes vienen dados por las puntuaciones de los componentes PCA o FA. Cada variable original es una combinación lineal de estos componentes con algunos pesos: por ejemplo, la primera variable original $x_1$ puede ser bien aproximado por el doble de $z_1$ más tres veces $z_2$ para que $x_1 \approx 2z_1 + 3z_2$ . Si las puntuaciones están estandarizadas, estas ponderaciones ( $2$ y $3$ ) se conocen como cargas. Así, de manera informal, se puede decir que $$\mathrm{Original\: variables} \approx \mathrm{Scores} \cdot \mathrm{Loadings}.$$

De aquí podemos ver que si tomamos un componente latente, por ejemplo $z_1$ y voltear el signo de sus puntuaciones y de sus cargas, entonces esto no tendrá ninguna influencia en el resultado (o la interpretación), porque $$-1\cdot -1 = 1.$$

La conclusión es que, para cada componente del ACP o del AF, el signo de sus puntuaciones y de sus cargas es arbitrario y no tiene sentido. Puede invertirse, pero sólo si el signo de las puntuaciones y de las cargas se invierte al mismo tiempo.

0 votos

Esto es cierto, pero ¿qué pasa con las proyecciones en PCA? Yo mismo estoy codificando el PCA, y algunos de mis vectores propios están invertidos en comparación con los incorporados en MATLAB princomp . Por lo tanto, durante la proyección, mis datos proyectados también tienen el signo invertido en algunas de las dimensiones. Mi objetivo es hacer una clasificación de los coeficientes. ¿El signo sigue sin importar aquí?

2 votos

Sigue sin importar. ¿Por qué habría de hacerlo? Los datos volteados son exactamente equivalentes a los datos no volteados a todos los efectos, incluida la clasificación.

0 votos

Bueno, no para todos los fines. Por coherencia entre el algoritmo, a mí también me gustaría que los signos coincidieran. Sin embargo, no está todo volteado al ver los componentes. ¿Cómo elige R el signo para que yo pueda hacer lo mismo?

10voto

Wayne M Puntos 6025

Esto fue bien respondido anteriormente. Sólo para dar un poco más de relevancia matemática, las direcciones en las que actúan las componentes principales corresponden a los vectores propios del sistema. Si obtienes una PC positiva o negativa sólo significa que estás proyectando sobre un vector propio que apunta en una dirección o $180^\circ$ en la otra dirección. En cualquier caso, ¡la interpretación sigue siendo la misma! También hay que añadir que las longitudes de sus componentes principales son simplemente los valores propios.

-4voto

Emmanuel Ameyaw Puntos 101

Es fácil ver que el signo de las puntuaciones no importa cuando se utiliza el PCA para la clasificación o la agrupación. Pero parece que sí importa para la regresión. Considere un caso en el que sólo tiene un componente principal o un factor común subyacente a varias variables. Entonces lm(y ~ PC1) le dará diferentes predicciones de y en comparación con lm(y ~ -PC1). Si y y PC1 tienen una relación lineal positiva, y y -PC1 tienen una relación lineal negativa. Tal vez para la regresión, debería considerar otras alternativas discutidas aquí por ejemplo, la regresión del lazo.

2 votos

Los signos de las puntuaciones importan exactamente igual en el PCA para la agrupación, la clasificación o la regresión. Supongamos, por ejemplo, que un componente representa el tamaño global de un organismo. Puede ser "grande" o (si el signo se invierte) "pequeño". Esto es importante para la clasificación (los grandes por aquí... los pequeños por allá), la agrupación (este grupo es de grandes comedores de rocas rojas y aquel grupo es de pequeños comedores de rocas verdes) o la regresión.

2 votos

Emmanuel, ¿quizás quisiste decir "darte diferentes estimaciones de los parámetros " en lugar de diferentes predicciones ? Lo segundo es incorrecto, pero lo primero es cierto (aunque sólo en el sentido muy limitado de negar el coeficiente).

0 votos

Ah, sí, ya veo, las predicciones serían las mismas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X