¿Qué significan las flechas en un biplot PCA?

14

Considere el siguiente biplot de PCA:

library(mvtnorm)
set.seed(1)
x  <- rmvnorm(2000, rep(0, 6), diag(c(5, rep(1,5))))
x  <- scale(x, center=T, scale=F)
pc <- princomp(x)
biplot(pc)

ingrese la descripción de la imagen aquí

Hay un montón de flechas rojas trazadas, ¿qué significan? Sabía que la primera flecha etiquetada con "Var1" debería apuntar a la dirección más variable del conjunto de datos (si los consideramos como 2000 puntos de datos, cada uno de los cuales es un vector de tamaño 6). También leí en alguna parte, la dirección más variable debería ser la dirección del primer vector propio.

Sin embargo, leyendo el código de biplot en R. La línea sobre las flechas es:

if(var.axes)
    arrows(0, 0, y[,1L] * 0.8, y[,2L] * 0.8, col = col[2L], 

¿Dónde yestá realmente la matriz de cargas, que es la matriz de vectores propios. Entonces parece que la primera flecha apunta en realidad desde(0, 0) a (y[1, 1], y[1, 2]). Entiendo que estamos tratando de trazar una flecha de alta dimensión en un plano 2D. Es por eso que estamos tomando el primer y segundo elemento del y[1, ]vector. Sin embargo, lo que no entiendo es:

¿No debería ser la primera dirección del vector propio el vector denotado por y[, 1], en lugar de y[1, ]? (De nuevo, aquíy está la matriz de vectores propios, obtenida por PCA o por descomposición propia de t(x) %*% x.) Es decir, los vectores propios deben ser vectores de columna, no esos vectores horizontales.

A pesar de que los estamos trazando en un plano 2D, ¿debemos dibujar la primera dirección desde la que (0, 0)apuntamos (y[1, 1], y[2, 1])?

Luna
fuente
2
También considere tratar de utilizar el formato disponible para las preguntas en el sitio, consulte la ayuda de rebajas avanzadas . No veo que ninguna de sus preguntas anteriores tenga respuestas, y si las edita para que sean un poco más legibles, pasarán a la parte superior de la lista y pueden atraer respuestas.
Andy W
@Andy W Excelentes referencias
conjugateprior
@Andy W: Después de leer sus excelentes referencias, sigo pensando que el código R biplot.princomp tiene un error: la matriz de carga (matriz de vectores propios) debe transponerse antes de enviarse a biplot.princomp ... ¿Alguna idea?
Luna
Parece que no hay error .
chl
@Andy W: ¿quieres poner tus comentarios en una "respuesta" para que pueda aceptar tu respuesta? ¡Esa es genial! ¡Muchas gracias!
Luna

Respuestas:

9

Bueno, parece que Kevin Wright debería recibir la mayor parte del crédito para tratar de ayudar a explicar la confusión (de la lista de correo de R-help );

Las flechas no apuntan en la dirección más variable de los datos. Los componentes principales apuntan en la dirección más variable de los datos. Pero no está trazando los datos en la escala original, está trazando los datos en la escala girada y, por lo tanto, el eje horizontal es la dirección más variable de los datos.

Las flechas apuntan en la dirección de las variables, como se proyecta en el plano 2-d del biplot.

No hay error

Kevin Wright

Michael Greenacre tiene un excelente libro en línea gratuito sobre biplots, Biplots in Practice , y simplemente leer el primer capítulo debería ayudar a motivar de dónde se toman las coordenadas de las flechas. También hay varias otras preguntas en el sitio que son similares y que pueden interesarle, consulte la Interpretación de biplots en el análisis de componentes principales en R y la Interpretación del gráfico de factores MDS para obtener dos ejemplos. También revise las preguntas con biplot en la búsqueda en el sitio , ya que hay algunas más de interés potencial (parece que incluso hacer una etiqueta de biplot sería útil en este punto dada la cantidad de preguntas que ha surgido).

Andy W
fuente