Posicionar las flechas en un biplot PCA

18

Estoy buscando implementar un biplot para el análisis de componentes principales (PCA) en JavaScript. Mi pregunta es, ¿cómo determino las coordenadas de las flechas a partir de la salida U,V,D de la descomposición vectorial singular (SVD) de la matriz de datos?

Aquí hay un ejemplo de biplot producido por R:

biplot(prcomp(iris[,1:4]))

Biplot del conjunto de datos de Iris

Intenté buscarlo en el artículo de Wikipedia sobre biplot, pero no es muy útil. O correcto No estoy seguro de cuál.

ktdrv
fuente
3
Biplot es un diagrama de dispersión superpuesto que muestra los valores U y los valores V. O UD y V. O U y VD '. O UD y VD '. En términos de PCA, UD se denominan puntajes de componentes principales sin procesar y VD 'se denominan cargas de componentes variables.
ttnphns
2
Tenga en cuenta también que la escala de las coordenadas depende de cómo normalice inicialmente los datos. En PCA, por ejemplo, normalmente se dividen los datos por sqrt (r) o sqrt (r-1) [r es el número de filas]. Pero en el verdadero "biplot" en sentido estricto de la palabra, uno normalmente divide los datos por sqrt (rc) [c es el número de columnas] y luego
desnormaliza las
¿Por qué los datos tienen que ser escalados por ? 1n1
ktdrv
1
@ttnphns: Siguiendo sus comentarios anteriores, escribí una respuesta a esta pregunta, con el objetivo de proporcionar algo así como una descripción general de las normalizaciones de biplot PCA. Sin embargo, mi conocimiento de este tema es puramente teórico y creo que tienes mucha más experiencia práctica con biplots que yo. Así que agradecería cualquier comentario.
ameba dice Reinstate Monica
1
Una razón para implementar cosas, @Aleksandr, es saber exactamente lo que se está haciendo. Como puede ver, no es tan fácil descubrir qué sucede exactamente cuando se ejecuta biplot(). Además, ¿por qué molestarse con la integración de R-JS para algo que requiere solo un par de líneas de código?
ameba dice Reinstate Monica

Respuestas:

40

Hay muchas formas diferentes de producir un biplot PCA y, por lo tanto, no hay una respuesta única a su pregunta. Aquí hay una breve descripción general.

Suponemos que la matriz de datos tiene n puntos de datos en filas y está centrada (es decir, las medias de columna son todas cero). Por ahora, no suponemos que esté estandarizado, es decir, consideramos PCA en la matriz de covarianza (no en la matriz de correlación). PCA equivale a una descomposición de valor singular X = U S V , puede ver mi respuesta aquí para más detalles: Relación entre SVD y PCA. ¿Cómo usar SVD para realizar PCA?Xn

X=USV,

En un biplot PCA, dos primeros componentes principales se trazan como un diagrama de dispersión, es decir, la primera columna de se traza contra su segunda columna. Pero la normalización puede ser diferente; Por ejemplo, uno puede usar:U

  1. Columnas de : estos son componentes principales escalados a la unidad de suma de cuadrados;U
  2. Columnas de : estos son componentes principales estandarizados (varianza unitaria);n1U
  3. Columnas de : estos son componentes principales "en bruto" (proyecciones en direcciones principales).US

Además, las variables originales se trazan como flechas; es decir, coordenadas de una i -ésima flecha punto final están dados por la i valor-ésimo en la primera y segunda columna de V . Pero de nuevo, uno puede elegir diferentes normalizaciones, por ejemplo:(x,y)iiV

  1. Columnas de : No sé qué interpretación podría ser aquí;VS
  2. Columnas de : estas son cargas;VS/n1
  3. Columnas de : estos son ejes principales (también conocidos como direcciones principales, también conocidos como vectores propios).V

Así es como se ve todo eso para el conjunto de datos de Fisher Iris:

Fisher Iris biplots, PCA en covarianza

9XUSαβVS(1α)/β9 son "biplots apropiados": es decir, una combinación de cualquier subtrama de arriba con la que está directamente debajo.

[Cualquiera sea la combinación que se use, podría ser necesario escalar las flechas por algún factor constante arbitrario para que tanto las flechas como los puntos de datos aparezcan aproximadamente en la misma escala.]

VS/n1Un1

Es probable que esta [opción particular] proporcione la ayuda gráfica más útil para interpretar matrices de observaciones multivariadas, siempre que, por supuesto, se puedan aproximar adecuadamente en el rango dos.

USV

US

biplotUVSbiplot0.8biplotn/(n1)1Flechas de variables subyacentes en PCA biplot en R. )

PCA en matriz de correlación

X1

Fisher Iris biplots, PCA sobre correlaciones

1R=1


Otras lecturas:

ameba dice Reinstate Monica
fuente
1
+6, esto merece más de 3 votos a favor.
gung - Restablece a Monica
3
Acabo de notar que? Ca :: plot.ca tiene una buena descripción de las diferentes normativas posibles: distinguen fila principal (forma biplot = filas en coordenadas principales, cols en coordenadas estándar), col principal (biplot de covarianza = cols en coordenadas principales, filas en coords estándar), biplot simétrico (filas y columnas escaladas para tener varianzas iguales a los valores singulares (raíces cuadradas de valores propios)), rowgab y colgab (filas en coords principales y cols en coords estándar multiplicados por la masa del punto correspondiente o viceversa) y rowgreen y colgreen (como rowgab y colgab pero con sqrt (masas))
Tom Wenseleers
2
Estos últimos también se denominan "biplots de contribución"; el libro de M. Greenacre "Biplots en la práctica" también ofrece una buena descripción de todo esto; estas formas de escalado se aplican a todos los métodos basados ​​en la SVD (es decir, biplots CA, biplots PCA, biplots LDA, etc.); para ver un ejemplo de cómo funciona, vea el código fuente ca ::: plot.ca y el argumento "mapa"
Tom Wenseleers
1
n1
1
@AntoniParellada lo edité e inserté un par de enlaces.
ameba dice Reinstate Monica