La "estrella de coordenadas" están destinados a ser modificados de forma interactiva, a partir de un valor predeterminado. Esta respuesta muestra cómo crear el defecto; el interactivo modificaciones son la programación de detalle.
Los datos son considerados como una colección de vectores $x_j = (x_{j1}, x_{j2}, \ldots, x_{jd})$$\mathbb{R}^d$. Estos son los primeros normalizado por separado dentro de cada coordenada, la transformación lineal de los datos de $\{x_{ji}, j=1, 2, \ldots\}$ en el intervalo de $[0,1]$. Esto se hace, por supuesto, en primer lugar, restando el valor mínimo de cada elemento y dividiendo por el rango. Llame a los datos normalizados $z_j$.
La forma habitual de $\mathbb{R}^d$ es el conjunto de vectores $e_i = (0, 0, \ldots, 0, 1, 0, 0, \ldots, 0)$ tener una sola $1$ $i^\text{th}$ lugar. En términos de esta base, $z_j = z_{j1}e_1 + z_{j2}e_2 + \cdots + z_{jd}e_d$. Una "estrella coordenadas de la proyección de" elige un conjunto de distintos vectores unitarios $\{u_i, i=1, 2, \ldots, d\}$ $\mathbb{R}^2$ y mapas de $e_i$$u_i$. Esto define una transformación lineal de$\mathbb{R}^d$$\mathbb{R}^2$. Este mapa se aplica a la $z_j$--es sólo una multiplicación de la matriz--para crear un punto bidimensional en la nube, representado como un diagrama de dispersión. La unidad de vectores $u_i$ son rotulados de referencia.
(Una versión interactiva que permite al usuario rotar cada una de las $u_i$ individualmente).
Para ilustrar esto, aquí hay un R
implementación aplicada a un conjunto de datos de automóvil de características de rendimiento. Primero vamos a obtener los datos:
library(MASS)
x <- subset(Cars93,
select=c(Price, MPG.city, Horsepower, Fuel.tank.capacity, Turn.circle))
El primer paso es normalizar los datos:
x.range <- apply(x, 2, range)
z <- t((t(x) - x.range[1,]) / (x.range[2,] - x.range[1,]))
Como valor predeterminado, vamos a crear $d$ equidistantes de la unidad de vectores de la $u_i$. Estos determinan la proyección prj
que se aplica a $z$:
d <- dim(z)[2] # Dimensions
prj <- t(sapply((1:d)/d, function(i) c(cos(2*pi*i), sin(2*pi*i))))
star <- z %*% prj
Eso es--todos estamos listos para la trama. Es inicializado para proporcionar espacio para los puntos de datos, los ejes de coordenadas, y sus etiquetas:
plot(rbind(apply(star, 2, range), apply(prj*1.25, 2, range)),
type="n", bty="n", xaxt="n", yaxt="n",
main="Cars 93", xlab="", ylab="")
Aquí es la trama en sí, con una línea para cada elemento: ejes, etiquetas y puntos:
tmp <- apply(prj, 1, function(v) lines(rbind(c(0,0), v)))
text(prj * 1.1, labels=colnames(z), cex=0.8, col="Gray")
points(star, pch=19, col="Red"); points(star, col="0x200000")
Para entender este argumento, que podría ayudar a compararlo con el método tradicional, el diagrama de dispersión de la matriz:
pairs(x)
Una correlación basada en el análisis de componentes principales (PCA) crea casi el mismo resultado.
(pca <- princomp(x, cor=TRUE))
pca$loadings[,1]
biplot(pca, choices=2:3)
La salida para el primer comando es
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
1.8999932 0.8304711 0.5750447 0.4399687 0.4196363
La mayoría de la varianza es explicada por el primer componente (1,9 versus 0,83 y menos). Las cargas en este componente son casi iguales en tamaño, como se muestra por la salida a la segunda comando:
Price MPG.city Horsepower Fuel.tank.capacity Turn.circle
0.4202798 -0.4668682 0.4640081 0.4758205 0.4045867
Esto sugiere--en este caso--que el valor predeterminado de la estrella coordenadas de la parcela está proyectando a lo largo de la primera componente principal y por lo tanto está mostrando, esencialmente, algunos de dos dimensiones de la combinación de la segunda hasta la quinta Pc. Su valor en comparación con el PCA de resultados (o factor analysis) es, por tanto, cuestionable; el principal mérito puede ser en la propuesta de interactividad.
Aunque R
's por defecto diagrama de dispersión biespacial parece terrible, aquí es para la comparación. Para hacerlo coincidir con el de la estrella de las coordenadas de la parcela mejor, sería necesario permutar las $u_i$ a de acuerdo con la secuencia de los ejes que se muestran en este diagrama de dispersión biespacial.