Hay muchas maneras diferentes de producir un biplot PCA y por lo tanto no hay una respuesta única a su pregunta. He aquí un breve resumen.
Suponemos que la matriz de datos $\mathbf X$ tiene $n$ puntos de datos en filas y está centrado (es decir, las medias de las columnas son todas cero). Por ahora, hacemos no suponemos que fue estandarizada, es decir, consideramos el ACP sobre la matriz de covarianza (no sobre la matriz de correlación). El PCA equivale a una descomposición del valor singular $$\mathbf X=\mathbf{USV}^\top,$$ puedes ver mi respuesta aquí para más detalles: Relación entre SVD y PCA. Cómo utilizar la SVD para realizar el PCA?
En un biplot del PCA, los dos primeros componentes principales se trazan como un gráfico de dispersión, es decir, la primera columna de $\mathbf U$ se traza contra su segunda columna. Pero la normalización puede ser diferente; por ejemplo, se puede utilizar
- Columnas de $\mathbf U$ son componentes principales escalados a la suma unitaria de los cuadrados;
- Columnas de $\sqrt{n-1}\mathbf U$ son componentes principales estandarizados (varianza unitaria);
- Columnas de $\mathbf{US}$ : se trata de componentes principales "en bruto" (proyecciones en direcciones principales).
Además, las variables originales se trazan como flechas; es decir $(x,y)$ coordenadas de un $i$ -a punta de flecha están dadas por el $i$ -ésima en la primera y segunda columna de $\mathbf V$ . Pero, de nuevo, se pueden elegir diferentes normalizaciones, por ejemplo:
- Columnas de $\mathbf {VS}$ : No sé cuál podría ser la interpretación aquí;
- Columnas de $\mathbf {VS}/\sqrt{n-1}$ : se trata de cargas;
- Columnas de $\mathbf V$ son los ejes principales (también conocidos como direcciones principales o vectores propios).
Este es el aspecto de todo esto para el conjunto de datos Fisher Iris:
La combinación de cualquier subtrama de arriba con cualquier subtrama de abajo conformaría $9$ posibles normalizaciones. Pero según la definición original de un biplot introducida en Gabriel, 1971, La representación gráfica biplot de las matrices con aplicación al análisis de componentes principales (este artículo tiene 2k citas, por cierto), las matrices utilizadas para el biplot deberían, cuando se multiplican juntas, aproximarse a $\mathbf X$ (de eso se trata). Así que un "biplot adecuado" puede utilizar, por ejemplo $\mathbf{US}^\alpha \beta$ y $\mathbf{VS}^{(1-\alpha)} / \beta$ . Por lo tanto, sólo tres de los $9$ son "biplots propiamente dichos": es decir, una combinación de cualquier subplot de arriba con el de abajo.
[Cualquiera que sea la combinación que se utilice, 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].
Utilizando las cargas, es decir $\mathbf{VS}/\sqrt{n-1}$ para las flechas tiene una gran ventaja, ya que tienen interpretaciones útiles (véase también aquí sobre las cargas). La longitud de las flechas de carga se aproxima a la desviación estándar de las variables originales (la longitud al cuadrado se aproxima a la varianza), los productos escalares entre dos flechas cualesquiera se aproximan a la covarianza entre ellas, y los cosenos de los ángulos entre las flechas se aproximan a las correlaciones entre las variables originales. Para hacer un "biplot adecuado", hay que elegir $\mathbf U\sqrt{n-1}$ es decir, PCs estandarizados, para los puntos de datos. Gabriel (1971) llama a esto "PCA biplot" y escribe que
Esta [elección particular] es probable que proporcione una ayuda gráfica muy útil en la interpretación de las matrices multivariadas de observaciones, siempre que, por supuesto, éstas puedan aproximarse adecuadamente al rango dos.
Utilizando $\mathbf{US}$ y $\mathbf{V}$ permite una buena interpretación: las flechas son proyecciones de los vectores base originales sobre el plano PC, véase esta ilustración de @hxd1011 .
Incluso se puede optar por trazar PCs en bruto $\mathbf {US}$ junto con las cargas. Esto es un "biplot impropio", pero fue hecho, por ejemplo, por @vqv en el biplot más elegante que he visto: Visualizar un millón, edición PCA -- muestra el PCA del conjunto de datos del vino.
La cifra que has publicado (resultado por defecto de R biplot
) es un "biplot adecuado" con $\mathbf U$ y $\mathbf{VS}$ . La función escala dos subparcelas de manera que abarquen la misma área. Por desgracia, la función biplot
hace una extraña elección de escalar todas las flechas hacia abajo por un factor de $0.8$ y mostrando el etiquetas de texto donde deberían estar los extremos de las flechas. (También, biplot
no obtiene el escalado correctamente y, de hecho, acaba trazando las puntuaciones con $n/(n-1)$ suma de cuadrados, en lugar de $1$ . Ver esta detallada investigación de @AntoniParellada: Flechas de las variables subyacentes en el biplot del PCA en R .)
PCA en la matriz de correlación
Si además suponemos que la matriz de datos $\mathbf X$ se ha estandarizado para que las desviaciones estándar de las columnas sean todas iguales a $1$ entonces estamos realizando PCA en la matriz de correlación. Así es como se ve la misma figura:
En este caso, las cargas son aún más atractivas, porque (además de las propiedades mencionadas), dan exactamente (y no aproximadamente) los coeficientes de correlación entre las variables originales y las PC. Las correlaciones son todas menores que $1$ y las flechas de carga tienen que estar dentro de un "círculo de correlación" de radio $R=1$ que a veces se dibuja también en un biplot (lo he trazado en el correspondiente subplot de arriba). Tenga en cuenta que el biplot por @vqv (vinculado anteriormente) se hizo para un PCA en la matriz de correlación, y también los deportes un círculo de correlación.
Más información:
3 votos
Biplot es un gráfico de dispersión superpuesto que muestra tanto los valores U como los V. O UD y V. O U y VD'. O UD y VD'. En términos de PCA, los UD se denominan puntuaciones brutas de componentes principales y los VD' se denominan cargas de componentes variables.
2 votos
Tenga en cuenta también que la escala de las coordenadas depende de cómo se normalicen inicialmente los datos. En el PCA, por ejemplo, normalmente se dividen los datos por sqrt(r) o sqrt(r-1) [r es el número de filas]. Pero en un verdadero "biplot" en el sentido estricto de la palabra, normalmente se dividen los datos por sqrt(rc) [c es el número de columnas] y luego se desnormalizan las U y V obtenidas.
0 votos
¿Por qué los datos tienen que ser escalados por $\frac{1}{\sqrt{n-1}}$ ?
1 votos
@ttnphns: A raíz de tus comentarios anteriores, escribí una respuesta a esta pregunta, con el objetivo de proporcionar algo así como una visión general de las normalizaciones de biplot PCA. Sin embargo, mis conocimientos sobre este tema son puramente teóricos y creo que tú tienes mucha más experiencia práctica con los biplots que yo. Así que le agradecería cualquier comentario.
0 votos
Tengo curiosidad por saber por qué quieres implementar esto mismo. A menos que tenga objetivos educativos o requisitos específicos, trataría de reutilizar la mayor cantidad posible de funciones existentes y no reinventar la rueda. Por ejemplo, podría utilizar las correspondientes
R
código para PCA y luego usar Shiny, Plotly o alguna variante ded3.js
yR
integración ( blog.ae.be/combinación del poder de r y d3-js ).1 votos
Una de las razones para implementar las cosas, @Aleksandr, es saber exactamente lo que se está haciendo. Como puedes ver, no es tan fácil averiguar qué ocurre exactamente cuando uno ejecuta
biplot()
. Además, por qué molestarse con la integración de R-JS para algo que requiere sólo un par de líneas de código.0 votos
@amoeba: Lo entiendo. Sin embargo, creo que es más productivo averiguar lo que hace el código existente que escribirlo desde cero (eso suponiendo que el código sea lo suficientemente decente, por supuesto). En cuanto a la integración R-JS, pensé que este esfuerzo es una parte de un sistema más grande, que requeriría dicha integración de todos modos. Excelente respuesta, BTW (+1).