¿Cuáles son los cuatro ejes en biplot PCA?

18

Cuando construye un biplot para un análisis de PCA, tiene puntajes de PC1 del componente principal en el eje xy puntajes de PC2 en el eje y. ¿Pero cuáles son los otros dos ejes a la derecha y la parte superior de la pantalla?

Nils
fuente
1
¿Cómo podemos saber de qué pantalla estás hablando?
FairMiles
@ttnphns tuvo una excelente respuesta aquí
Haitao Du

Respuestas:

12

¿Quiere decir, por ejemplo, en la trama que devuelve el siguiente comando?

biplot(prcomp(USArrests, scale = TRUE))

biplot arrestos en Estados Unidos

En caso afirmativo, los ejes superior y derecho deben usarse para interpretar las flechas rojas (puntos que representan las variables) en la gráfica.

Si sabe cómo funciona el análisis de componentes principales, y puede leer el código R, el siguiente código le muestra cómo prcomp()se tratan inicialmente los resultados biplot.prcomp()antes del trazado final biplot.default(). Estas dos funciones se llaman en segundo plano cuando traza biplot(), y el siguiente extracto de código modificado es de biplot.prcomp().

x<-prcomp(USArrests, scale=TRUE)
choices = 1L:2L
scale = 1
pc.biplot = FALSE
scores<-x$x
lam <- x$sdev[choices]
n <- NROW(scores)
lam <- lam * sqrt(n)
lam <- lam^scale
yy<-t(t(x$rotation[, choices]) * lam)
xx<-t(t(scores[, choices])/lam)
biplot(xx,yy)

En breve, en el ejemplo anterior, la matriz de cargas variables (x$rotation ) se escala por la desviación estándar de los componentes principales ( x$sdev) por la raíz cuadrada del número de observaciones. Esto establece la escala de los ejes superior y derecho a lo que se ve en el diagrama.

Existen otros métodos para escalar las cargas variables, también. Estos son ofrecidos, por ejemplo, por el paquete R vegano.

JTT
fuente
55
+1. Me tomé la libertad de insertar la figura en tu respuesta.
ameba dice Reinstate Monica
Además, creo que sería muy útil para referencias futuras, si se puede añadir a su respuesta que las puntuaciones de PC (ejes de la izquierda y en la parte inferior) se escalan a la unidad de suma de cuadrados: son no "en bruto" Puntajes de PC.
ameba dice Reinstate Monica
0.8biplot.default
1
Además, vea también este hilo posterior: Posicionar las flechas en un biplot PCA .
ameba dice Reinstate Monica
11

Tengo una mejor visualización para el biplot. Por favor, consulte la siguiente figura.

En el experimento, estoy tratando de mapear puntos 3d en 2d (conjunto de datos simulados).

El truco para entender biplot en 2d es encontrar el ángulo correcto para ver lo mismo en 3d. Todos los puntos de datos están numerados, puede ver el mapeo claramente.

ingrese la descripción de la imagen aquí

Aquí está el código para reproducir los resultados.

require(rgl)
set.seed(0)

feature1=round(rnorm(50)*10+20)
feature2=round(rnorm(50)*10+30)
feature3=round(runif(50)*feature1)

d=data.frame(feature1,feature2,feature3)

head(d)

plot(feature1,feature2)
plot(feature2,feature3)
plot(feature1,feature3)

plot3d(d$feature1, d$feature2, d$feature3, type = 'n')
points3d(d$feature1, d$feature2, d$feature3, color = 'red', size = 10)
shift <- matrix(c(-2, 2, 0), 12, 3, byrow = TRUE)
text3d(d+shift,texts=1:50)
grid3d(c("x", "y", "z"))

pr.out=prcomp(d,scale.=T)
biplot(pr.out)
grid()
Haitao Du
fuente
2
+1. Sin embargo, tenga en cuenta que en su figura 3D rotada, la nube de puntos conserva la varianza (la proyección horizontal, es decir, PC1, tiene una varianza mayor que la vertical, es decir, PC2), mientras que las flechas rojas tienen unidad de longitud (en 3D). Este no es el caso en el biplot producido por el biplotcomando en R y reproducido en su figura en el lado derecho: allí la nube de puntos está estandarizada pero las flechas tienen longitudes correspondientes a las variaciones.
ameba dice Reinstate Monica
@amoeba buen punto. Solo dibujo las flechas manualmente y olvidé que la longitud de la flecha también tiene significados específicos.
Haitao Du
Creo que su "biplot" manual 3D / 2D corresponde más a lo que la función biplotproduce con el scale=0argumento.
ameba dice Reinstate Monica